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 con visualizzazione array passato con function...
Forum - PHP - problema con visualizzazione array passato con function...

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 23:47
Giovedì, 07/01/2010
Salve ragazzi ho un problema con il passaggio degli elementi di due array in una funzione dichiarata dal sottoscritto:

[CODICE PHP]:
function leggi_id_partita() {

  // recupero i campi
  $id_campionato = $_GET['id_campionato'];

  //Leggi l'id_partita corrente e somma 1
  $leggi_id_partita = mysql_query("SELECT COUNT(id_partita) FROM partita WHERE
                                   id_campionato = '$id_campionato'");

  //controllo l'esito
  if(!$leggi_id_partita) {

    // controllo l'esito
    echo "Errore nella query $leggi_id_partita: " . mysql_error();

  }

  // associa $leggi_id_partita a mysql_fetch_array
  $result_id_partita = mysql_fetch_array($leggi_id_partita);

  // associa $result_id_partita ad una seconda variabile
  $id_partita = $result_id_partita['COUNT(id_partita)'];

  // ritorna l'elemento letto
  return ($id_partita);

}
?>


<?php

//Dichiarazione di funzione: LEGGI gli id_casa e gli id_ospite presenti nella query partita
function leggi_id_casa_ospite() {

  // recupero i campi
  $id_campionato = $_GET['id_campionato'];

  //Leggi l'id_partita corrente e somma 1
  $leggi_id_casa_ospite = mysql_query("SELECT id_casa, id_ospite FROM partita WHERE
                                       id_campionato = '$id_campionato'");

  //controllo l'esito
  if(!$leggi_id_casa_ospite) {

    // controllo l'esito
    echo "Errore nella query $leggi_id_casa_ospite: " . mysql_error();

  }

  // associa $leggi_id_partita a mysql_fetch_array
  while($result_id_casa_ospite = mysql_fetch_array($leggi_id_casa_ospite)) {
  
    // associa $result_id_partita ad una seconda variabile
    $id_casa   = $result_id_casa_ospite['id_casa'];
    $id_ospite = $result_id_casa_ospite['id_ospite'];

    $array_id_casa   = array("$id_casa");
    $array_id_ospite = array("$id_ospite");

    return ($array_id_casa);
    return ($array_id_ospite);

  }
    
  
}
?>

<?php

  //invoco la funzione
  $x = leggi_id_casa_ospite($id_casa, $id_ospite);
      echo "$x";

?>

Mi spiegate come mai mi non mi visualizza gli elementi????...mi esce solo la scritta Array8-|

Grazie...8-)




PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 10:54
Venerdì, 08/01/2010
magari sbagli la query,
controlla bene.


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 10:29
Sabato, 09/01/2010
La query è giusta, infatti se applico il select direttamente dal server mysql mi escono gli elementi selezionati ...
Ma la scritta Array potrebbe significare che gli elementi sono vuoti? ... bah?!8-|

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 11:57
Sabato, 09/01/2010
credo che il problema sia qui

Codice sorgente - presumibilmente Plain Text

  1. $array_id_casa   = array("$id_casa");
  2. $array_id_ospite = array("$id_ospite");



prova a controllare il valore delle variabili
anche $result_id_casa_ospite se hanno realmente un valore

magari con un foreach sull'array e controlli i dati.

poi ti chiedo una domanda

hai inserito 2 Return
sicuro che funzioni?

Ultima modifica effettuata da Thejuster il 09/01/2010 alle 11:58


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 12:06
Sabato, 09/01/2010
Ti assicuro al 100% che i valori non sono nulli ... posizionando un

echo "<br/>$id_casa - $id_ospite<br/>";

nel while, gli elementi sono visualizzati alla perfezione ...

Piuttosto come posso ritornare i valori? ... dovrei essere "obbligato" a scrivere due return o no? ... c'è qualche altro metodo che posso applicare??? ... mi sta bloccando il progetto questa cosa ... uff!!:(

PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 12:13
Sabato, 09/01/2010
Aggiungo ... ho provato ad effettuare un foreach modificando la funzione in modo che passasse un solo array -> return(array_id_casa);:

// dichiaro la funzione
function leggi_id_casa_ospite() {

  // richiamo i campi
  require 'config_GET.php';
  
  echo "$id_campionato";

  //Leggi l'id_partita corrente
  $leggi_id_casa_ospite = mysql_query("SELECT id_casa, id_ospite FROM partita WHERE
                                       id_campionato = '$id_campionato'");

  //controllo l'esito
  if(!$leggi_id_casa_ospite) {

    // controllo l'esito
    echo "Errore nella query $leggi_id_casa_ospite: " . mysql_error();

  }

  // associa $leggi_id_partita a mysql_fetch_array
  while($result_id_casa_ospite = mysql_fetch_array($leggi_id_casa_ospite)) {
  
    // associa $result_id_partita ad una seconda variabile
    $id_casa   = $result_id_casa_ospite['id_casa'];
    $id_ospite = $result_id_casa_ospite['id_ospite'];
  
    $array_id   = array("$id_casa", "$id_ospite");
    
    return ($array_id);
  }    
  
}

// invoco la funzione

$x = leggi_id_casa_ospite($array_id);

      foreach($x as $var_tmp) {

        echo "$var_tmp<br/>";
      }
      

Mi passa questi parametri 3 - 8
                          
quando poi dovrebbero essere 3 - 8
                             5 - 4

dove 3 sarebbe $id_casa - 8 sarebbe $id_ospite
Quasi come se si limitasse alla lettura dei primi elementi, tralasciando i seguenti...bah??!!8-|
                                    


Ultima modifica effettuata da giocala88 il 09/01/2010 alle 12:28
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 23:12
Domenica, 10/01/2010
Allora ragazzi sono arrivato ad una conclusione, credo plausibile:

la funzione return() mi ritorna solo il primo valore letto se messa nel while, viceversa, mi ritorna l'ultimo valore se messa dopo il while ... in altre parole, da quanto  ho capito la funzione return() ritorna ad ogni valore letto lo stesso, bloccandosi però solo alla prima lettura, è possibile???? ... suggerimenti su come posso risolvere questo problema???
Grazie anticipatamente.

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 9:29
Lunedì, 11/01/2010
semplicemente perchè una funzione può contenere un solo Return,
e non di più.

puoi ovviare a questa restrizione utilizzando dei separatori

tipo , per ogni dato e ; per array

e usi la funzione split per separare i dati in altri array.

oppure usi 2 funzioni


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
giocala88 (Normal User)
Expert


Messaggi: 248
Iscritto: 23/04/2008

Segnala al moderatore
Postato alle 10:49
Lunedì, 11/01/2010
Allora voglio spiegarmi meglio, facendo un esempio  banale ....

CODICE PHP -> dichiarazione di funzione che visualizza 4 numeri

<?php

// dichiaro una funzione
function array_prova() {

  for($i = 0; $i < 4; $i++) {
    $array_prova = array("$i");

    return ($array_prova);
  }
}
?>

CODICE PHP -> invoco la funzione
<?php

$richiamo = array_prova($array_prova);
echo "<br/><br/>";
foreach ($richiamo as $tmp)
echo "$tmp - ";
?>

Mi visualizza solo il primo elemento ... ??? ... in un ciclo si limita al ritorno del primo elemento, è questo il problema 8-|8-|8-|.
Questa cosa mi sta bloccando il progetto :d
Grazie comunque ...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo