Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - Problema array
Forum - PHP - Problema array

Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 11:44
Martedì, 23/09/2008
Da qualche giorno sbatto la testa contro un problema stupido che non riesco a risolvere.

Ho una classe Ricerca.php:
Codice sorgente - presumibilmente Php

  1. <?php
  2.  
  3. class Ricerca{
  4.        
  5. var $results = array();
  6.  
  7. function DoSearch($qstr, $db,$res)
  8. {
  9.     $str = $qstr->ToString();
  10.         $conn = $db->getc();
  11.         $result = mysql_query( sprintf("
  12.    SELECT DISTINCT desc_gmstr as descr, path_gmstr as path,
  13.          name_gmstr as nome, ftyp_gmstr as ftyp,
  14.          urlp_gmstr as urlp,
  15.          MATCH(name_gmstr, desc_gmstr) AGAINST('%s' IN BOOLEAN MODE) as score
  16.    FROM    guide_mstr
  17.    WHERE    MATCH(name_gmstr, desc_gmstr) AGAINST('%s' IN BOOLEAN MODE)
  18.    ORDER BY  score DESC;",
  19.     $str, $str) , $conn );
  20.  
  21.     $data = $db->FetchResult($result);
  22.     foreach($data as $article)
  23.     {
  24.         $res->AddResult($article['descr'], $article['path'], $article['nome'], NULL , NULL , $article['ftyp'], $article['urlp']);
  25.                 $results[] = $res;
  26.                                
  27.         }
  28. }
  29.  
  30. function GetResults()
  31. {
  32.         return $this->results;
  33. }
  34. }
  35. ?>



un'altra classe QRResult.php:
Codice sorgente - presumibilmente Php

  1. class Result
  2. {
  3.         var $path = "";
  4.         var $name = "";
  5.         var $lng = "";
  6.         var $lngp = "";
  7.         var $desc = "";
  8.         var $ftyp = "";
  9.         var $urlp = "";
  10.        
  11.         function AddResult( $desc , $path , $name , $lngp , $lng , $ftyp , $urlp )
  12.         {
  13.                 $this->path = $path;
  14.                 $this->name = $name;
  15.                 $this->lng = $lng;
  16.                 $this->lngp = $lngp;
  17.                 $this->desc = $desc;
  18.                 $this->ftyp = $ftyp;
  19.                 $this->urlp = $urlp;
  20.         }
  21. //...altro codice



Come si vede, nella funzione DoSearch assegno al vettore $results i risultati della query.
Quando ritorno alla mia pagina search.php il vettore però non riesco a visualizzare nessun valore. IL codice di Search.php:
Codice sorgente - presumibilmente Php

  1. <?php
  2.                                                                 import_request_variables("gp","_");
  3.                                                                 $res = new Result();
  4.                                                                 $db = new Database( "aaa" , "aaa" , "aaa" , "aaa" );
  5.                                         $qStr = new QueryString();
  6.                                                                 $ric = new Ricerca();
  7.                                                                 $risultati = array();
  8.                                                                 $qStr->AddStartWords( $_text_insert );
  9.                                         $qStr->AddFinishWords( $_text_insert );
  10.                                         $ric->DoSearch( $qStr , $db , $res);
  11.                                                                 $risultati = $ric->GetResults();
  12.                                                                 foreach( $risultati as $result )
  13.                                                                         echo $result->Display();
  14.                                                                 $db->Close();
  15.                                                         ?>



Perché il ciclo foreach non mi stampa nessun risultato?

ps: la funzione Display restituisce una stringa

Ultima modifica effettuata da lorenzo il 23/09/2008 alle 11:45


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6112
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 19:14
Giovedì, 25/09/2008
Il codice mi sembra corretto (così ad occhio, non l'ho provato), sei sicuro che il problema non sia più su?

Ad esempio (forse domanda scontata), hai provato a fare un echo $res quando aggiungi un elento a $results per vedere che il programma effettivamente trova qualcosa?


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 19:38
Giovedì, 25/09/2008
beh, certo che ci ho provato.
In pratica, se faccio una echo di res mi stampa corretto,
se faccio una echo di $this->results[0 ( per esempio) ]->Display() mi stampa corretto
ma se faccio un foreach fuori dal ciclo per stampare tutto $results non mi stampa niente

Ultima modifica effettuata da lorenzo il 25/09/2008 alle 19:40


"There's no point in being exact about something if you don't even know what you're talking about."

JOHN VON NEUMANN


Siamo italiani NO??
Allora scriviamo in ITALIANO!!!!
PM Quote