- Home
- Categorie
- Coding e Sistemistica
- Coding
- Problema Doppio Ciclo: For & While
-
Problema Doppio Ciclo: For & While
Salve!
ho un problema con un doppio ciclo. in pratica devo inserire delle
ricette e per ognuna di questa devo inserire gli ingredienti in una
tabella a parte, in cui sono indicati tutti gli ingredienti.quindi: seleziono tutti gli ingredienti ed inizio il ciclo for per
visualizzare le select il cui numeo arriva tramite una sessione
($_SESSION['numingr']. all'interno di questo for, inserisco una casella
di testo dove si inserisce la quantità ed una select. a questo punto
devo far in modo di inserire all'interno di questa select tutti gli
ingredienti presenti nella tabella Ingredienti. faccio partire il ciclo
while in cui creo l'arrai $row in cui memorizzo tutti gli id ed il nome
degli ingredienti. ora nel scrivo tutti gli ingredienti all'interno del
select attraverso le option.l'errore sta nel fatto che se inserisco un solo ingrediente tutto
funziona correttamente, mentre se ne inserisco due o più, nel primo
select la lista compare senza problemi, mentre i successibi select
risultano vuoti. da residui di conoscenze di programmazione, credo che
l'errore stia nella posizione delle option, ma nonostante abbia provato
a pensare e a provare a spostare il codice qua e la, non sono riuscito
a risolverlo...mi potete aiutare?
grazie!
ecco qui di seguito la parte di codice interessata...[PHP]
<?
//Inserire Codice Salvataggio Ingredienti
//Perlievo Informazioni Ingredienti
$queryingredienti="SELECT * FROM Ingredienti";
$resultingredienti=mysql_query($queryingredienti)or
die(mysql_error());//Inizio For Inserimento Quantità/Ingredienti for($i=0;$i<$_SESSION['numingr'];$i=$i+1){
?>
<input type="text" name="quantita<? print("$i"); ?>" /> <select
name="ingrediente<? print("$i"); ?>">
<?
//Creazione Array $row
while($row=mysql_fetch_array($resultingredienti)){
$idingrediente=$row[IDIngrediente];
$ingrediente=$row[Ingrediente];
?>
<option value="<? print("$idingrediente"); ?>"><?
print("$ingrediente"); ?></option>
<?
//Fine While
}
?>[/PHP]
-
Il problema è che finito il primo giro di fetch il puntatore si trova in fondo alla tabella e quindi nel secondo giro non c'è + niente.
La soluzione più semplice è spostare la mysql_query dopo il for e prima del while. Chiaramente così però fai tante query quanti sono i cicli for.
Meglio sarebbe fare le fetch all'inizio per alimentare un array che poi andari ad usare nel ciclo interno.
-
@Senamion said:
Il problema è che finito il primo giro di fetch il puntatore si trova in fondo alla tabella e quindi nel secondo giro non c'è + niente.
La soluzione più semplice è spostare la mysql_query dopo il for e prima del while. Chiaramente così però fai tante query quanti sono i cicli for.
Meglio sarebbe fare le fetch all'inizio per alimentare un array che poi andari ad usare nel ciclo interno.io avevo fatto così per risparmiarmi un ciclo, diciamo...
ma da come ho capito, quello che dici tu è tirare fuori il fetch e creare un altro ciclo interno al for che mi scriva ogni volta tutti gli ingredienti presenti nell'array...giusto???
grazie!
-
Giusto...
-
-
@Senamion said:
Il problema è che finito il primo giro di fetch il puntatore si trova in fondo alla tabella e quindi nel secondo giro non c'è + niente.
La soluzione più semplice è spostare la mysql_query dopo il for e prima del while. Chiaramente così però fai tante query quanti sono i cicli for.
Meglio sarebbe fare le fetch all'inizio per alimentare un array che poi andari ad usare nel ciclo interno.ok..al momento però l'ho risolto in questo modo [PHP]mysql_data_seek($resultingredienti, 0);[/PHP]
sarà anche non ottimizzato ma per il momento l'importante che funzioni...tuttavia ho rpovato acon il doppio ciclo, ma non compare nemmeno la prima...probabilmente ho sbagliato con l'array...mha...
comunque per ora va e questo è l'importante...successivamente lo sistemo...
grazie!