Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][XAJAX] z niewiadomych powodów nie działa
Forum PHP.pl > Forum > Przedszkole
peter13135
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 questionmark.gif
Fifi209
A pluje jakimiś błędami?
peter13135
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...,
Fifi209
A wywołujesz gdzieś w ogóle funkcję
Kod
contactsend($autor, $contact)


?
peter13135
  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ć
Fifi209
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.
peter13135
  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. ?>
Fifi209
W konstruktorze klasy contact dodaj na początku jakieś np. echo i zobacz czy faktycznie konstruktor jest wywoływany.
peter13135
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
Fifi209
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+
peter13135
sam już znalazłem błąd

jak to ma działać, skoro $contact jest zastępowany przez obiekt o takiej samej nazwie questionmark.gif?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.