giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
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 Array
Grazie...
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
magari sbagli la query,
controlla bene.
|
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
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?!
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
credo che il problema sia qui
Codice sorgente - presumibilmente Plain Text |
$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 il 09/01/2010 alle 11:58
|
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
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!!
|
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
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??!!
Ultima modifica effettuata da giocala88 il 09/01/2010 alle 12:28 |
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
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.
|
|
Thejuster (Admin)
Guru^2
Messaggi: 2305
Iscritto: 04/05/2008
|
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
|
|
giocala88 (Normal User)
Expert
Messaggi: 248
Iscritto: 23/04/2008
|
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 .
Questa cosa mi sta bloccando il progetto
Grazie comunque ...
|
|