Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
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?


Il mio blog: https://piero.dev
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
PM Quote