Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][XAJAX] z niewiadomych powodów nie działa
peter13135
post
Post #1





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


kawałek skryptu

  1. <?php
  2. elseif($mode=='contact')
  3. {
  4.  include 'includes/contact.class.php';    
  5.  $xajax->registerFunction("contactsend");//rejestracja funkcji (xajax)
  6.  
  7.  function contactsend($autor, $contact)
  8.  {
  9.      //$contact=new contact;
  10.      //$contact->send($autor, $contact);
  11.      
  12.    $objResponse = new xajaxResponse();        
  13.    $objResponse->assign("msg","innerHTML", $contact);
  14.    return $objResponse;
  15.  }
  16.  
  17.  $t_content=new template;
  18.  $t_content->read('template/'.$skin.'/contact.tpl');  
  19. }
  20. ?>


metoda w klasie contact
  1. <?php
  2. function send($autor, $content)
  3.    {
  4.      if($autor && $content)
  5.      {
  6.          $autor=addslashes($autor);
  7.          $content=addslashes($content);
  8.          $date=date('Y-m-d');
  9.          $sql=$this->db->query("INSERT INTO lo_contact VALUES(NULL, '$date', '$autor', '$content' )");
  10.          conf::$sql_num++;
  11.          if($sql==true)
  12.            return true;
  13.      }
  14.      return false;    
  15.    }
  16. ?>


troche kodu html

  1. <textarea name="contact" id="contact" rows="15" cols="50">wartosc poczatkowa</textarea><br />
  2. autor <input type="text" name="autor" id="autor" maxlength="32" size="32" value="wartosc poczatkowa" />
  3.  
  4. <button onclick="xajax_contactsend(document.getElementById('autor').value , document.getElementById('contact').value)">click</button>
  5. <p id="msg">msg</p>



skrypt w takiej postaci działa, po kliknięciu na button, tekst "msg w tym miejscu
  1. <p id="msg">msg</p>

zamienia sie na zawartość pola textarea

jednak gdy
  1. <?php
  2. //$contact=new contact;
  3.        //$contact->send($autor, $contact);
  4. ?>


zamienie na
  1. <?php
  2. $contact=new contact;
  3.        $contact->send($autor, $contact);
  4. ?>


to już wtedy nie działa..

jaka może być tego przyczyna (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


A pluje jakimiś błędami?
Go to the top of the page
+Quote Post
peter13135
post
Post #3





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


nie...

dodam że gdy tą metodę zamienię na

  1. <?php
  2. function send($autor, $content)
  3.    {
  4.        return true;
  5.    }
  6. ?>


to również nie działa...,

Ten post edytował peter13135 13.06.2009, 12:16:30
Go to the top of the page
+Quote Post
Fifi209
post
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


A wywołujesz gdzieś w ogóle funkcję
Kod
contactsend($autor, $contact)


?
Go to the top of the page
+Quote Post
peter13135
post
Post #5





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


  1. <button onclick="xajax_contactsend(document.getElementById('autor').value , document.getElementById('contact').value)">click</button>


ten button jest poto jest ten button aby tą funkcje wywołać


poza tym napisałem że to mi działa
  1. <?php
  2. function contactsend($autor, $contact)
  3.  {
  4.      //$contact=new contact;
  5.      //$contact->send($autor, $contact);
  6.      
  7.    $objResponse = new xajaxResponse();        
  8.    $objResponse->assign("msg","innerHTML", $contact);
  9.    return $objResponse;
  10.  }
  11. ?>


a takie coś nie
  1. <?php
  2. function contactsend($autor, $contact)
  3.  {
  4.      $contact=new contact;
  5.      $contact->send($autor, $contact);
  6.      
  7.    $objResponse = new xajaxResponse();        
  8.    $objResponse->assign("msg","innerHTML", $contact);
  9.    return $objResponse;
  10.  }
  11. ?>



więc skoro to pierwsze działa to można sie domyśleć że musiałem ją jakoś wywołać
Go to the top of the page
+Quote Post
Fifi209
post
Post #6





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Cytat(peter13135 @ 13.06.2009, 14:01:51 ) *
więc skoro to pierwsze działa to można sie domyśleć że musiałem ją jakoś wywołać


Nie ma wywołania w kodzie, stąd moje pytanie...

To może pokaż klase contact, upewnij się że masz włączoną obsługę błędów.
Go to the top of the page
+Quote Post
peter13135
post
Post #7





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


  1. <?php
  2. class contact
  3. {
  4.    private $db;
  5.    function __construct()
  6.    {    
  7.      $conf = new conf;    
  8.      $this->db = @new mysqli($conf->host, $conf->user, $conf->pass, $conf->name);
  9.      if(mysqli_connect_errno())
  10.      {
  11.          echo 'Blad: Nie moge polaczyc sie z baza danych';
  12.          exit;
  13.      }      
  14.    }
  15.    
  16.    function send($autor, $content)
  17.    {
  18.      if($autor && $content)
  19.      {
  20.          $autor=addslashes($autor);
  21.          $content=addslashes($content);
  22.          $date=date('Y-m-d');
  23.          $sql=$this->db->query("INSERT INTO lo_contact VALUES(NULL, '$date', '$autor', '$content' )");
  24.          conf::$sql_num++;
  25.          if($sql==true)
  26.            return true;
  27.      }
  28.      return false;    
  29.    }  
  30. }
  31. ?>


heh, uprosciłem to jeszcze bardziej...


funkcja
  1. <?php
  2. function contactsend($autor, $contact)
  3.  {
  4.    $contact=new contact;
  5.        
  6.    $objResponse = new xajaxResponse();        
  7.    $objResponse->assign("msg","innerHTML", $contact);
  8.    return $objResponse;
  9.  }
  10. ?>



klasa

  1. <?php
  2. class contact
  3. {    
  4. }
  5. ?>


to nie działa, a żeby działało, wystarczy dać w komentarz to
  1. <?php
  2. $contact=new contact;
  3. ?>
Go to the top of the page
+Quote Post
Fifi209
post
Post #8





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


W konstruktorze klasy contact dodaj na początku jakieś np. echo i zobacz czy faktycznie konstruktor jest wywoływany.
Go to the top of the page
+Quote Post
peter13135
post
Post #9





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


Cytat(fifi209 @ 13.06.2009, 14:16:00 ) *
W konstruktorze klasy contact dodaj na początku jakieś np. echo i zobacz czy faktycznie konstruktor jest wywoływany.


zobacz mój poprzedni post, klasę przeobiłem do takiej postaci

  1. <?php
  2. class contact
  3. {    
  4. }
  5. ?>


i mimo to nadal nie działa

Ten post edytował peter13135 13.06.2009, 13:23:52
Go to the top of the page
+Quote Post
Fifi209
post
Post #10





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Chyba nie czytasz, uważnie co piszę...

W konstruktorze klasy contact daj echo jakiegoś tekstu. Potem wywołaj ten konstruktor...
$test = new contact();

Masz przetestować tylko to...
ew. sprawdź czy includujesz pliki, czy wersja php to 5+
Go to the top of the page
+Quote Post
peter13135
post
Post #11





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

Ostrzeżenie: (0%)
-----


sam już znalazłem błąd

jak to ma działać, skoro $contact jest zastępowany przez obiekt o takiej samej nazwie (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 18:11