Aiuto form correlati

spizzico7

Nuovo Utente
14 Dic 2008
8
0
0
Buonasera a tutti sono nuovo del forum ma vi seguo da sempre....Oggi non ho potuto fare a meno di porvi una domanda che mi sta facendo impazzire...
Allora il mio problema è il seguente:

ho delle checkbox che vengone realizzate da un ciclo che prende i valori da un db ora ad ognuno degli oggetti selezionati devo associare un valore (1-2-3-4 ecc.)

checkbox--->[]nome1 [ text1 ]
checkbox--->[]nome2 [ text2 ]
checkbox--->[]nome3 [ text3 ]

io ho fatto una pseudo-codifica della risoluzione ma non so proprio come passare al pratico....

Risposta php{
[ricezione dati]
ciclo{
if (una della check è selezionata)
{
prendi quantità
prendi nome

insert into tabella nome1, quantità1

}
}

praticamente ogni giro di ciclo mi deve fare una insert con valori diversi....aiutatemi!!!!:dipser:
 
ciao
forse il mio sistema è complicato e qualcuno più bravo puo darti una soluzione migliore
io faccio cosi
nella trasmissione quando creo dinamicamente le check gli do un nome ed un valore(valore da db) e nel ciclo mi creo un contatore

$conta=0
ciclo{
/*.....estrazione dati da db.....*/

$nomecheck[$conta]=$conta

<input type="checkbox" name="<?php echo $nomechek[$conta]?>" value="<?php echo $valore[$conta] ?>">

$conta++
}
per sapere quante sono le check trasmetto con hidden anche il valore conta

in ricezione

faccio ciclo for basandomi su $conta

for($k=0;$k<$conta;4k++){

$nomecheck[$conta]=$k

$valore_trasmesso=$_POST[$nomecheck[$k]];

if $valore_trasmesso != ""
// insert in tabella $valore_trasmesso ...
}

}

spero di essere stato chiaro, eventualmente sono qui


:hammer:
 
niente ho fatto prove su prove ma niente posto il codice....

connessione al db...

$ora =$_POST["ora"];
$nome_var = $_POST['nome_var'];
$quanto = $_POST['quanto'];
$iidut = $_SESSION['idut'];
$conta= $_POST["conta"];

$strSQL= "INSERT INTO ordini (idut, ora) VALUES ('$iidut', '$ora')";
if (! mysql_query($strSQL))
{
echo ("errore insert 1");
exit();
}

echo ($conta);

for($k=0;$k<$conta;$k++){

$nome_var[$conta]=$k;

$quanto[$conta]=$k;

$nome_var=$_POST[$nome_var[$k]];

$quanto=$_POST[$quanto[$k]];

if ($nome_var[$k] != "")
{

$strSQL = "INSERT INTO orddett (idord, idprod, qta) ";

$strSQL .= "VALUES ('50', '$nome_var', '$quanto') ";

if (! mysql_query($strSQL))

{
echo ("errore insert 2");
exit();
}

}:incazz:


ORA PRATICAMENTE MI RIEMPIE IN CICLO LA TABELLA ORDINI INVECE CHE ORDDETT MA L'INSERT NON E' IN CICLO!!!!!
 
Ultima modifica:
scusa dimenticavo, ma guardando meglio dove chiudi il ciclo for? se conti le parentesi graffe ti accorgi che sono 5 ed il numero delle parentesi graffe (aperte+chiuse) deve essere un numero pari,
probabilmente devi chiuderlo dopo :incazz2:

for($k=0;$k<$conta;$k++){
$nome_var[$conta]=$k;
$quanto[$conta]=$k;
$nome_var=$_POST[$nome_var[$k]];
$quanto=$_POST[$quanto[$k]];
if ($nome_var[$k] != ""){
$strSQL = "INSERT INTO orddett (idord, idprod, qta) ";
$strSQL .= "VALUES ('50', '$nome_var[$k]', '$quanto[$k]') ";
if (! mysql_query($strSQL)){
echo ("errore insert 2");
exit();
}//chiusura if !mysql
}//chiusura if $nome_var
}//chiusura for
 
allora ho messo a posto le parentesi che erano la causa dell'inserimento nella tabella sbagliata....ora però continua a non inserire nel db i valori di "nome_var" ne di "quanto", che è un valore preso da un campo testo e reso vettore cosi: <input type........value=quanto[]>, nonostante il fatto che ho modificato piu cose come,

$strSQL .= "VALUES ('50', '$nome_var[$k]', '$quanto[$k]') ";

come posso fare?
 
ciao
ti conviene inserire o
var_dump($strSQL);
oppure
echo $strSQL;
subito prima di
ed eventualmente commentare provvisoriamente tutto l'if
/*
if (! mysql_query($strSQL)){
......
*/

in questa maniera vedi cosa ti ritrovi dentro la querystringa, guardala bene perche delle volte un minimo errore impedisce l'insert.
tra l'altro, anche se penso di si, nella tabella orddett ha messo un id primarykey e autoincrement? cosa è quel idord che inserisci sempre = a 50?
eventualmente mi posti la tabella?
 
ciao
ti conviene inserire o
var_dump($strSQL);
oppure
echo $strSQL;
subito prima di
ed eventualmente commentare provvisoriamente tutto l'if
/*
if (! mysql_query($strSQL)){
......
*/

in questa maniera vedi cosa ti ritrovi dentro la querystringa, guardala bene perche delle volte un minimo errore impedisce l'insert.
tra l'altro, anche se penso di si, nella tabella orddett ha messo un id primarykey e autoincrement? cosa è quel idord che inserisci sempre = a 50?
eventualmente mi posti la tabella?


ok ora provo a fare come dici....cmq la tabella è fatta cosi:

idorddett autoincrement- idord foreign-key - idprod foreign-key -qta
 
Ultima modifica:
for($k=0;$k<$conta;$k++){

$nome_var=$_POST[$nome_var[$k]];

$quanto=$_POST[$quanto[$k]];

echo($quanto[$k]);
echo($nome_var[$k]);

if (strcmp($nome_var[$k],"")== 1)
{

$strSQL = "INSERT INTO orddett (idord, idprod, qta) ";

$strSQL .= "VALUES ('50', '$nome_var', '$quanto') ";


if (! mysql_query($strSQL))

{
echo ("errore insert 2");
exit();
}
}

ho provato cosi ma niente mi da errore....
 
scusa forse ho trovato l'errore

$nome_var[$conta]=$k;
$quanto[$conta]=$k;
$nome_var=$_POST[$nome_var[$k]];
$quanto=$_POST[$quanto[$k]];
if ($nome_var[$k] != ""){
$strSQL = "INSERT INTO orddett (idord, idprod, qta) ";
$strSQL .= "VALUES ('50', '$nome_var[$k]', '$quanto[$k]') ";

cioè ti ho fatte assegnare un valore di un array al nome dell'array

ci do un'occhiata per bene e poi ti riscrivo
 
rieccomi, devi scusarmi ma ho la testa un po' tra le nuvole... 5 min a computer e 10 min a svuotare l'acqua che mi sta invadendo (e penso di non essere tra quelli che stanno peggio)
comunque, prova in questo modo

PHP:
for($k=0;$k<$conta;$k++){
      $nome=$_POST[$nome_var[$k]];
      $qqnt=$_POST[$quanto[$k]];

      echo($qqnt);
      echo($nome);

     if ($nome!= "")
    {
          $strSQL = "INSERT INTO orddett (idord, idprod, qta) ";
          $strSQL .= "VALUES ('50', '$nome', '$qqnt') ";
         if (! mysql_query($strSQL))
        {
               echo ("errore insert 2");
               exit();
         }
     }
}

ho visto la tabella è ok
 
allora all'inizio dava errore sugli echo...levandoli non da errore ma non valorizza ti riposto il codice....
$ora =$_POST["ora"];
$iidut = $_SESSION['idut'];
$conta= $_POST["conta"];
$strSQL= "INSERT INTO ordini (idut, ora) VALUES ('$iidut', '$ora')";
if (! mysql_query($strSQL))
{
echo ("errore insert 1");
exit();
}

for($k=0;$k<$conta;$k++){

$nome=$_POST[$nome_var[$k]];
$qqnt=$_POST[$quanto[$k]];

if ($nome!= "") <<----------- qui ho provato anche una strcmp ma niente...non valorizza...
{
$strSQL = "INSERT INTO orddett (idord, idprod, qta) ";
$strSQL .= "VALUES ('50', '$nome', '$qqnt') ";
if (! mysql_query($strSQL))
{
echo ("errore insert 2");
exit();
}
}
}
 
Ultima modifica:
ciao
riprendo tutto in mano domattina riguardando di nuovo quello che avevo fatto io e che funzia per capire dove mi sto confondendo
abbi pazienza
 
ciao
ho provato a simulare il seguente codice funziona (provato in locale), devi solo adattarlo alle tue esisgenze

PHP:
<?php
if(isset($_POST['submit'])){//ho inviato i dati
$quanti_check=$_POST['conta']; //numero di check generati dinamicamente

for($k=0; $k<=$quanti_check; $k++){
$valore_check=$_POST[$k]; //leggo il valore del kappesimo check
if($valore_check != ""){//se checcato il valore non è vuoto
//parte di insert
echo " ho checcato $k con valore $valore_check <br>"; //stampo i valori checcati
}
}//fine for
}//fine if submit

?>
<form action="provaCHECK.php" method="post">
<?php
// simulo un ciclo finta estrazione dati db
$conta= 0;
while ($conta <= 5){//ciclo estrazione db 
$valore_datrasm[$conta]=$conta+200;//più 200 per avere un valore diverso da conta
$nome_chek[$conta]=$conta; // varia da 0 a 5
//creo la check con il nome che va da 0 a conta
?>
<input type="checkbox" name="<?php echo $nome_chek[$conta]?>" value="<?php echo $valore_datrasm[$conta] ?>">
<?php
$conta++; //incremento conta
} //fine ciclo estrazione e poi campo nascosto per valore di conta e pulsante di submit
?>

<input name="conta" type="hidden" value="<?php echo $conta; ?>">
<input name="submit" type="submit" value="Invia">
</form>
 
ciao scusa se non ho piu risposto ma ho avuto dei problemi con il server e non potevo testare niente....ora ho letto il codice e sinceramente non mi sembra che si adatti a quello che serve a me....ora sperando che tu possa aiutarmi allego i due file nel secondo c'è il form e nel primo la presa dei valori del form....
 

Allegati

ciao
scusa se non mi sono fatto più sentire, ma ho avuto grossi problemi di connesione e computer (ferie forzate):dipser:
fammi sapere se per caso hai comunque risolto, altrimenti riprendo in mano tutto il discorso
 

Discussioni simili