checkbox, array e cicli

ciao a tutti,

ho la pagina a.php composta da n campi, uno di questi è una checkbox.

costruisco l array;

<input type='checkbox' name='check[]' value='$nome_articolo'>

dove $nome_articolo rappreseta un valore che arriva dal db, immaginate l input all interno di un while.

Nella pagin r.php, attraverso questo codice ho la stampa solo del nome_articolo selezionato

while (list ($key,$val) = @each ($check)) {
                              
   echo "<tr><td> <div class='contenuto'> <center> $val </center> </div> </td> </tr> ";

}

la domanda è:

come posso avere nella pagina r.php altri valori del articolo selezionato che non sia solo nome?

Ho provato a passarmi anche un id attraverso un hidden in a.php, ma niente..

sbaglio nell array?

spero di non essere stato troppo schematico

buon inizio di settima...il mio è già in salita  :D

inviato 9 anni fa
fertilia
X 0 X

Ciao fertilia,

la tecnica comunemente utilizzata si basa sul passare attraverso la checkbox l'id dell'articolo, ovvero la chiave primaria della tabella del DB che contiene l'articolo. In questo modo nella paribna r.php si può eseguire una SELECT e recuperare tutte le altre informazioni

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ciao Gianni,

ho provato a fare come dici passando l'id in un campo nascosco, ma quello che visualizzo è sempre l id dell ultimo articolo

allego il codice in questione, per chiarezza:

pagina a.php

$res = mysql_query("SELECT * FROM filepartif ORDER BY 'codparte' ASC");

while ($row = mysql_fetch_array($res,MYSQL_ASSOC)){
               
   $id = $row['id'];
   $nome_art = $row['codparte'];

<td width='16%' > 
       <div class='contenuto'> <center> Inserisci  
      <input type='checkbox' name='carrello' value='$nome_art'> </center> </div> 

      <input type='hidden' name='id_art' value='$id'>
}

nella pagina r.php  eseguo la query con $_POST['id_art'], quindi:

$id_art = $_POST['id_art'];

$res = mysql_query("SELECT *  FROM filepartif  WHERE id='$id_art'  ORDER BY 'codparte' ASC");

inserisco tutto nel ciclo per l estrazione..

while ($row = mysql_fetch_array($res,MYSQL_ASSOC)){

      $id_art = $row['id'];

    //se faccio un echo di $id mi stampa l'id dell ultimo articolo presente in a.php e non l'id relativo all articolo selezionato..

}
risposto 9 anni fa
fertilia
X 0 X

L'id va messo in ciascuna checkbox, al posto di $nome_art

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

bene

Ho inserito anche il ciclo che mi stampa tanti quanti checkbox sono stati selezionati, ma il $value nella clausola WHERE non viene preso.Mentre l echo stampa correttamente

foreach ($_POST['carrello'] as $key => $value){
               
    echo "Hai selezionato la checkbox con valore: $value<br />";
  
     $res = mysql_query("SELECT codparte,desestesa,preuni,urlimg 
                  FROM filepartif 
                  WHERE id='$value' 
                  ORDER BY 'codparte' ASC");
           
           while ($row = mysql_fetch_array($res,MYSQL_ASSOC)){
                    
              $nome_art = $_POST['codparte'] ;
            $des_art = $_POST['desestesa'] ;
            $prez_art = $_POST['preuni'] ;
            $img_art = $_POST['urlimg'] ;
                  
            echo "<tr><td> <div class='contenuto'> <center> $nome_art </center> </div> </td>
                  <td> <div class='contenuto'> <center> $des_art </center> </div> </td>
                  <td> <div class='contenuto'> <center> $img_art  </center> </div> </td
                  <td> <div class='contenuto'> <center> $prez_art $euro </center> </div> </td>
                                                                                     <td> <div class='contenuto'> <center> n$pallino $_POST[quantita] </center> </div> </td>
                  <td> <div class='contenuto'> <center> parziale $euro </center> </div> </td> </tr>
               <tr bgcolor='yellow'>
                     <td colspan='6' style='font-size:1px;'> &nbsp; </td> </tr> ";
                    
                 }
               

              }
risposto 9 anni fa
fertilia
X 0 X

scusate! Per echo intendo quello del for e non del while

risposto 9 anni fa
fertilia
X 0 X
           
     while ($row = mysql_fetch_array($res,MYSQL_ASSOC)){
                    
        $nome_art = $row['codparte'] ;
      $des_art = $row['desestesa'] ;
      $prez_art = $row['preuni'] ;
      $img_art = $row['urlimg'] ;

l errore è nel while  ??? ...sbagliavo la dichiarazione    ;D :)

che piccione!!! :buck:

risposto 9 anni fa
fertilia
X 0 X

risolto?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

yes!! thanks u

risposto 9 anni fa
fertilia
X 0 X

Ciao a tutti, nelle varie prove che sto facendo mi sono clamorosamente accordo di aver tralasciato un passaggio molto importante...in sostanza non visualizzo il totale perchè non gli passo il valore quantità articolo!?!

Nella stessa pagina in cui ho la checkbox - a.php, per capirci - ho anche un <input type='text' name='quant' value=''>

ma se in r.php provo a stampare il valore di $_POST['quantita'] non visualizzo niente.

ho provato a crearmi un array in a.php e in r.php aggiungevo i valori di quantità ma non riesco ad avere il valore delle quantità relativo all articolo che seleziono!?

Se qualcun'altro ha incontrato il mio stesso problema sarò felice di capire dove sbaglio..

gracias a todos

risposto 9 anni fa
fertilia
X 0 X

come fa l'utente a specificare la quantità? E' previsto un campo nel form?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

questa è la creazione dinamica della tabella articoli, dove:

$cod_cat identifica gli articoli appartenenti ad una categoria

$id rappresenta l identificativo del articolo della categoria

art_check è un array

$res = mysql_query("SELECT id,codparte,desestesa,preuni,urlimg
                FROM filepartif 
                WHERE codlinea='$cod_cat' 
                ORDER BY 'codparte' ASC");

while ($row = mysql_fetch_array($res,MYSQL_ASSOC)){

   $id = $row['id'];
   $nome_art = $row['codparte'];
   $desestesa = $row['desestesa'];
   $pre_uni = $row['preuni'];
   $urlimg = $row['urlimg'];


   echo "
      <td $align_art > 
         <div class='contenuto'> <center> ".$pre_uni." ".$euro." </center> </div> </td>
      <td $align_art width='12%' height='110px' > <div class='contenuto'> <center>
         n$pallino  
         <input type='text' name='quantita' value='' size='1' maxlength='2' $disable> 
         </center> </div> </td>
      <td $align_art width='16%' > <div class='contenuto'> <center> Inserisci  
         <input type='checkbox' name='art_check[]' value='$id' >
         <img src='../../img/carrello.gif'> </center> </div>

         </td> </tr>
     <tr bgcolor='yellow'> <td colspan='4' style='font-size:1px;'> &nbsp; </td> </tr>";

}

Ho provato a creare l array quantita[].

Quello che ottengo è questo, è giusto ma fino in parte perchè non devo avere gli altri valori degli articolo, ma soltanto [0] => 8 .

stampa di print_r

( Array ( [345] => Array ( [0] => 8 [1] => 0 [2] => 0 [3] => 0)) )

---

Ho provato anche a inserire l'attributo id nel imput type text quantita, creando un array di array

$art[] = array ('id_art' => $id);

$_SESSION['carr'] = $art ;

nella pagina successiva, in r.php

$art = $_SESSION['carr'] ;

$art['quant_art'] = array ($id => $_POST ['quantita']);

Ma neanche in questo modo ottengo il valore della quantità inserita  :o :o

sicuro che sbaglio..

risposto 9 anni fa
fertilia
X 0 X

come per le checkbox hai usato un nome con le parentesi quadre finali [] in modo da realizzare un array di valori così devi farlo anche per il campo di testo che contiene la quantità:

<input type='text' name='quantita[]'

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda