Oppure

Loading
07/01/10 22:47
giocala88
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-)



aaa
08/01/10 9:54
Thejuster
magari sbagli la query,
controlla bene.
mire.forumfree.it/ - Mire Engine
C# UI Designer
09/01/10 9:29
giocala88
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-|
aaa
09/01/10 10:57
Thejuster
credo che il problema sia qui

$array_id_casa   = array("$id_casa");
$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 09/01/10 10:58
mire.forumfree.it/ - Mire Engine
C# UI Designer
09/01/10 11:06
giocala88
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!!:(
aaa
09/01/10 11:13
giocala88
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 09/01/10 11:28
aaa
10/01/10 22:12
giocala88
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.
aaa
11/01/10 8:29
Thejuster
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
mire.forumfree.it/ - Mire Engine
C# UI Designer