Ciclo for con diverse variabili

alexgentili

Utente Attivo
15 Lug 2010
39
0
0
Ciao a tutti e grazie ancora una volta per l'aiuto che vorrete darmi.
Ho un ciclo for con una insert che dice :

for($a = 0; $a < $quantita_1; $a++)

{ $or = "INSERT INTO barcode ( quantita_1, quantita_2) VALUES ( '$quantita_1','$quantita_2',)";

$result = mysql_query ($or) or die ("errore query inserimento in barcode");
}

Il mio ciclo for serve per fare il controllo sulla variabile '$quantita', dove se il valore e meno di $a allora inserisce in tabella tante righe quante il valore contenuto nella variabile.
Il mio problema è: come faccio a fare lo stesso controllo sulla variabile 'quantita_2' ?
ho provato una cosa del genere ma nulla da fare:
for($a = 0; $a < $quantita_1,$quantita_1; $a++)

grazie a tutti .
 
Quello che vuoi fare non è affatto chiaro, dovresti descrivere meglio la logica dell'operazione che vuoi effettuare.
Già in questo passo ti contraddici in quanto il codice non fa quello che affermi:

...
for($a = 0; $a < $quantita_1; $a++)

{ $or = "INSERT INTO barcode ( quantita_1, quantita_2) VALUES ( '$quantita_1','$quantita_2',)";

$result = mysql_query ($or) or die ("errore query inserimento in barcode");
}

Il mio ciclo for serve per fare il controllo sulla variabile '$quantita', dove se il valore e meno di $a allora inserisce in tabella tante righe quante il valore contenuto nella variabile.
...

Dici, "se il valore è meno di $a", ma dal codice che hai postato inserisci righe finchè il valore di $a è minore del valore di $quantita_1.

Mi astengo da commenti riguardo alla logica ed alla struttura del DB anche se effettuare inserimenti multipli degli stessi identici valori in più record va contro ogni logica di normalizzazione di un DB.

Comunque cerca di spiegare meglio la relazione tra le variabili $quantia_1 e $quantia_2. Ad esempio, se esse hanno valori divverenti, quanti inserimenti vanno effettuati? Il massimo tra i due valori o cosa?
 
ok allora ti posto il codice che per adesso soddisfa in parte le mie esigenze:

$quantita_1 = addslashes($_POST['quantita_1']);
$quantita_2 = addslashes($_POST['quantita_2']);

$articolo_1 = addslashes($_POST[articolo_1']);
$articolo_2 = addslashes($_POST[articolo_2']);

for($a = 0; $a < $quantita_1; $a++)
{ $or = "INSERT INTO barcode ( quanita_1, quantita_2,articolo_1,articolo_2)
VALUES ( '$quantita_1','$quantita_2' ,'$articolo_1' ,'$articolo_2' )";
$result = mysql_query ($or) or die ("errore query inserimento in barcode");
}

// così riesco ad inserire n righe in db a seconda del valore contenuto nella variabile $quantita_1.
il mio scopo e fare lo stesso controllo anche su $quantita_2.
 
La logica continua a rimanermi oscura comunque, per prima cosa dovresti togliere quegli addslashes() sulle quantità in quanto contengono valori numerici poi, per quanto riguarda il codice forse ti basta fare una cosa del genere???

PHP:
for ($a = 0; $a < $quantita_1; $a++) { 
    $or = "INSERT INTO barcode ( quantita_1, quantita_2, articolo_1, articolo_2) VALUES ('$quantita_1', '$quantita_2' , '$articolo_1' , '$articolo_2' )";
    $result = mysql_query ($or) or die ("errore query inserimento in barcode");
}

for ($a = 0; $a < $quantita_2; $a++) { 
    $or = "INSERT INTO barcode ( quantita_1, quantita_2, articolo_1, articolo_2) VALUES ('$quantita_1', '$quantita_2' , '$articolo_1' , '$articolo_2' )";
    $result = mysql_query ($or) or die ("errore query inserimento in barcode");
}
 
Esatto una cosa del genre.
Grazie ancora per la rispota.
Non badare alla logica sono all'inizio e sto imparando php.
Mi era girata per la testa questa idea ma mi sono chiesto: vuoi che non ci sia un modo per scrivere solo una volta il ciclo con la query ? bisogna per forza scrivere tanti cicli quante sono le variabili ?
 
ciao,
come dice satifal la logica è oscura, ma così è.
si devi fare tanti cicli quanti sono le variabili, l'unica cosa, dato che le query sono uguali puou fare dei clicli annidati
 
Secondo me voleva semplicemente controllare due diverse condizioni per l'iterazione del ciclo. Dovresti poter fare così:
PHP:
for(init; (condizione1 && condizione2); end)
{
    // ...
}

Anch'io inizialmente ho pensato ad una cosa del genere in quanto la soluzione da me proposta, a meno di logiche molto oscure, ha ben poco senso.
 

Discussioni simili