[PHP] checkbox ad ogni riga estratta dal db

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Buongiorno a tutti,
Problemino..chissa' se qualcuno riesce ad aiutarmi.
Volevo affiancare ad ogni riga estratta da tabella DB,una scelta da fare per l'utente tramite checkbox.

form.html
Codice:
<form method="post" action="cerca_disponibile.php">
<h1>ZONA:</h1>&nbsp&nbsp<input type="text" name="testo" ><br><br>
<input type="image" src="http://MIOSITO.altervista.org/registrazione_utenti/images/CERCA_DISPONIBILE.png"/>
</form>

cerca.php
Codice:
<table id="box-pieno" >

 <tr>
             
             
                <th scope="col">PIPPO</th>
               <th scope="col">CORREDO</th>
               <th scope="col">COLORE</th>
               <th scope="col">BOX</th>
               <th scope="col">DESTINO</th>
               <th scope="col">POSTO</th>
               <th scope="col">COME</th>
           
             
             
             
           
       
 </tr>
     
 
        <style>
#box-pieno
{
    background: #000000;
    border-collapse: collapse;
    font-family: "Arial Black", Gadget, sans-serif ;
    font-size: 20px;
    width: 700px;
    height:150px;
 
    text-align: center;
 


}

#box-pieno th
{
    background: #000000;
    border: 1px solid Gainsboro ;
    border-top: 4px solid #FFFFFF;
    color: #FFFFFF;
    font-size: 14px;
    font-weight: normal;
    padding: 18px;
}

#box-pieno td
{
    border: 2px solid #A9A9A9 ;
    background: #000999;
    color: #ffffff;
    padding: 18px;
 
}

#box-pieno tbody td:hover
{
    background: Lime;
    color: #000000;
}

</style>


<body>

<center>
<h1>GOCATTOLI DISPONIBILI</h1><hr><br>


<?php
$cn = mysql_connect("localhost", "USER", "");
mysql_select_db("my_DB", $cn);
//leggi il valore che ti provine dal form
$testo=trim($_POST['testo']);
$newpage = 'http://MIOSITOaltervista.org/registrazione_utenti/giacenza_zona/form_inquiry_disponibile.php';
$wh="";
if(!empty($testo) && preg_match('/^[a-zA-Z0-9]{1,3}/',$testo)){
    $wh=" WHERE DATO24='".$testo."' ";//o se nel $_POSTO hai messo $box qui ci va $box
    //doveil nome del campo su cui fare la ricerca lo sai tu
    $sel = "SELECT* FROM disponibile $wh";
 
    $query = mysql_query($sel, $cn );
    $quanti = mysql_num_rows($query);
    if ($quanti == 0){
        echo "<h1> CODICE ZONA ERRATO!</h1>";header('Refresh: 3; url=' . $newpage);
    }else{
        while($rs=mysql_fetch_array($query)){
            //ti converrebbe mettere il nome del campo che visualizzi es al posto di $rs[2] mettere $rs['pinco']
     
            echo "<tr><td> " . $rs[5] . "</td>";
            echo "<td> " . $rs[9] . "</td>";
            echo "<td> " . $rs[29] . "</td>";
            echo "<td> " . $rs[50] . "</td>";
            echo "<td> " . $rs[27] . "</td>";
            echo "<td> " . $rs[24] . "</td>";
   
           echo "<td>" . $rs[52] . "</td></center></h1>";
       
         
     }
 
    }

}else{
    echo "<h1>NON HAI INSERITO NULLA!</h1>";header('Refresh: 3; url=' . $newpage);
}
mysql_close($cn);
?>
 <?php
mysql_connect("localhost", "USER", "");
mysql_select_db("my_DB");

$risultato = mysql_query("SELECT * FROM disponibile $wh");
$num_righe = mysql_num_rows($risultato);

echo "<h1>$num_righe</h1>" ;
?>
<br>
<a href="http://MIOSITO.altervista.org/registrazione_utenti/giacenza_zona/ordina_aggiunta/moduloinvioaggiunta.php"><img src="http://MIOSITO.altervista.org/registrazione_utenti/images/INVIA.png"></a>
<br><br><hr>
</table>

Mi estrae perfettamente le righe che chiedo al DB in tabella etc etc..
Io vorrei appunto affiancare ad ogni riga un checkbox dove l'utente seleziona,a volte anche tra 300 righe,la sua scelta e lo invia ..
Si puo' fare secondo voi e come?

Grazie in anticipo a tutti
 
Ultima modifica:
non ho letto il tuo codice, anche perchè è molto più semplice fare una cosa ex-novo che modificarne una già fatta; innanzi tutto
ho creato una tabella di prova (tabella) contenente 6 record e 4 campi (campo1, campo2, e campo3, oltre a id autoincrement) rispettivamente NOME, COGNOME e INDIRIZZO. Dopo aver letto l'intera tabella, per ogni record stampo una checkbox e parte
del record (nel mio caso solo NOME e COGNOME). Quando l'utente 'checca' un record ne ricavo l'id che successivamente verrà stampato per intero (NOME, COGNOME e INDIRIZZO). Qusto è il codice

scegli.php

PHP:
//Connessione
// nome di host
$host = ".......";
// username dell'utente in connessione
$db_user = "......";
// password dell'utente
$db_psw = "......";
// nome del database
$database = '......l';


$connessione= mysql_connect($host, $db_user, $db_psw)
or die ("Errore critico di Connessione al Database");

mysql_select_db($database)
or die("Impossibile connetters al Database");

$risultato_insert = mysql_query($query_insert);

$query = mysql_query("SELECT id, campo1, campo2 FROM tabella") or die("Errore query.<br/>" . mysql_error());

echo '<h3>Di chi vuoi sapere l\'indirizzo?</h3><br><br>';

echo '<form action="contrform.php" method="get">';
      while ($row = mysql_fetch_array($query)) {
             $id = $row['id'];
             $campo1 = $row['campo1'];
             $campo2 = $row['campo2'];

             echo '<input type="checkbox" name="scelte[]" value="'.$id.'">'.$id.'  '.$campo1.' '.$campo2.'<br>';

      }
      echo '<br><br><input type="submit" name="invia" value="Invia i dati">';
echo '</form>';   
?>


......e il programma di conrollo contrform.php

PHP:
<?php

$scelte = $_GET['scelte'];

//conto i record 'checcatti'
$ncont = count($scelte);

//Connessione
// nome di host
$host = "......";
// username dell'utente in connessione
$db_user = "......";
// password dell'utente
$db_psw = "......";
// nome del database
$database = '......l';


$connessione= mysql_connect($host, $db_user, $db_psw)
or die ("Errore critico di Connessione al Database");

mysql_select_db($database)
or die("Impossibile connetters al Database");

$risultato_insert = mysql_query($query_insert);


for ($cont=0;$cont<=$ncont;$cont++) {
     $query = mysql_query("SELECT id, campo1, campo2, campo3 FROM tabella where id = ".$scelte[$cont]);

      while ($row = mysql_fetch_array($query)) {
             $campo1 = $row['campo1'];
             $campo2 = $row['campo2'];
             $campo3 = $row['campo3'];
           
             echo $campo1.' '.$campo2.' '.$campo3.'<br>';
      }
}

?>

Io ho cercato di semplificare al massimo le cose: tu poi dovrai adattarlo alle tue esiegenze.
Comunque, se dovessi avere problemi.......chiedi pure. Spero di esserti stato d'aiuto.


Zorro
 
Ultima modifica:
Di niente, nessuno sbattimento: è solo che non amo troppo metter mano su codici atrui
spero di esserti stato d'aiuto
 
Ciao,
non capisco esattamente cosa intendi. Spiegati meglio.
Magari sarebbe utile sapere anche la struttura della tabella
 
Quella che vedi è solo una riga di un estrazione di circa 300.
Inserendo a fianco il checkbox vorrei che se l'utente spunta ... viene copiato il record ITO E all' invio mi incollasse il contenuto copiato all'interno di un campo body della pagina sottostante
Invio.php








Codice:
<?php
  // indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineatelo
 if ((trim($_POST['name']) != "") &&(trim($_POST['object']) != "") && (trim($_POST['body']) != "")) {    //questo fa si che se i campi "oggetto" e "messaggio" sono vuoti la form non invia nessuna mail
  $to = "      \n infomail@miamail.com";
  // soggetto della mail
  $subject = "RICHIESTA  da: MIOSITO";
 
  // corpo messaggio
  $body = "DA PREPARARE:\n\n";
 
  $body .= "operatore :" . trim(stripslashes($_POST["name"])) . "\n";//ordinante
  $body .= "NuovoPER :" . trim(stripslashes($_POST["object"])) . "\n";//oggetto del messaggio
  $body .=  "". trim(stripslashes($_POST["body"])) . "\n" ; //messaggio
 
 
  // invio mail
  mail($to, $subject, $body); // SE L'INOLTRO E' ANDATO A BUON FINE...
 
Ultima modifica:
Allora cerchero' di essere piu chiaro
estrazione.php
Codice:
<center>
<br>
<table id="box-pieno" >

 <tr>
             
             
                <th scope="col">PIPPO</th>
               <th scope="col">PLUTO</th>
               <th scope="col">COLORE</th>
               <th scope="col">BOX</th>
               <th scope="col">DESTINO</th>
               <th scope="col">ZON</th>
               <th scope="col">STATO</th>
               <th scope="col">SELEZIONA</th>
           
             
             
             
           
       
 </tr>
     
 
        <style>
#box-pieno
{
    background: #000000;
    border-collapse: collapse;
    font-family: "Arial Black", Gadget, sans-serif ;
    font-size: 20px;
    width: 700px;
    height:150px;
 
    text-align: center;
 


}

#box-pieno th
{
    background: #000000;
    border: 1px solid Gainsboro ;
    border-top: 4px solid #FFFFFF;
    color: #FFFFFF;
    font-size: 14px;
    font-weight: normal;
    padding: 18px;
}

#box-pieno td
{
    border: 2px solid #A9A9A9 ;
    background: #000999;
    color: #ffffff;
    padding: 18px;
 
}

#box-pieno tbody td:hover
{
    background: Lime;
    color: #000000;
}

</style>


<body>

<center>
<h1>GIOCHI DISPONIBILI</h1><hr><br>


<?php
$cn = mysql_connect("host", "PIPPO", "PSW");
mysql_select_db("my_DB", $cn);
//leggi il valore che ti provine dal form
$testo=trim($_POST['testo']);
$newpage = 'http://MIOSITO/form_inquiry_disponibile.php';
$wh="";
if(!empty($testo) && preg_match('/^[a-zA-Z0-9]{1,3}/',$testo)){
    $wh=" WHERE DATO24='".$testo."' ";//o se nel $_POSTO hai messo $box qui ci va $box
    //doveil nome del campo su cui fare la ricerca lo sai tu
    $sel = "SELECT* FROM disponibile $wh";
    //var_dump($sel); LO COMMENTI
    $query = mysql_query($sel, $cn );
    $quanti = mysql_num_rows($query);
    if ($quanti == 0){
        echo "<h1> CODICE ZONA ERRATO!</h1>";header('Refresh: 3; url=' . $newpage);
    }else{
        while($rs=mysql_fetch_array($query)){
            //ti converrebbe mettere il nome del campo che visualizzi es al posto di $rs[2] mettere $rs['pinco']
     
            echo "<tr><td> " . $rs[5] . "</td>";
            echo "<td> " . $rs[9] . "</td>";
            echo "<td> " . $rs[29] . "</td>";
            echo "<td> " . $rs[50] . "</td>";
            echo "<td> " . $rs[27] . "</td>";
            echo "<td> " . $rs[24] . "</td>";
   
           echo "<td>" . $rs[52] . "</td></center></h1>";
           echo'<td><form method="post" action="moduloinvio.php">
 
  <input type="checkbox" name="COSA INSERISCO   " value="COSA INSERISCO"/>
 
  <input type="submit" value="OK"/><br/>
</form></td> ';
       
         
     }
 
    }

}else{
    echo "<h1>NON HAI INSERITO NULLA!</h1>";header('Refresh: 3; url=' . $newpage);
}
mysql_close($cn);
?>

Vorrei che l'utente "CECCANDO" mi copia il dato rosso (
echo "<td> " . $rs[29] . "</td>";
)e me lo inserisce qui:
moduloinvio.php
Codice:
<center>

<form action="invio.php" method="post" id="modulo">
 <table>
 
   <tr>
  <td><h1>operatore :</h1><br></td>
  <td><label>
  <input name="name" type="text" id="name" />
  </label></td>
  </tr>
 
 
 
  <tr>
  <td><h1>DATI :</h1><br></td>
  <td><label>
  <input name="object" type="text" id="object" />
  </label></td>
  </tr>
  <tr>
   <td><h1>AGGIUNTA:</h1><br></td>
   <td>
   <textarea name="body" cols="40" rows="10" id="body"> </textarea>
 
  </td>
  </tr>
  <tr>
  <td><label></label>
  </td>
  <td><label>


  </label></td>
  </tr>
  </table>

all'interno della textarea rossa
Come posso recuperare i dati e vederli stampati a video nella tearea rossa(<textarea name="body" cols="40" rows="10" id="body"> </textarea>)?
 
Ultima modifica:
Ciao,
sono stato un po' okkupato. Una cosa ancoraa non mi è molto chiara, perdonami: quando l'utente fa una scelta, 'checca'
un solo record alla volta o più record, e comunque la stampa deve avvenire all'interno di una textarea, giusto ??
Faccio qualche prova e ti dico
 
Ciao,
sono stato un po' okkupato. Una cosa ancoraa non mi è molto chiara, perdonami: quando l'utente fa una scelta, 'checca'
un solo record alla volta o più record, e comunque la stampa deve avvenire all'interno di una textarea, giusto ??
Faccio qualche prova e ti dico
Ciao ... checca e riporta nella textarea solo il dato $rs9.....se puoi aiutarmi con il codice
 
Ciao,
ora provo il codice; in affetti ci sarebbero alcune cose da sistemare. Oltretutto, il mio dubbio era che le checkbox permettono di effettuare scelte multiple; se tu devi effettuare una sola scelta ti conviene usare le radiobox, che prevedono una sola scelta e inoltre sono più facili da gestire. Comunque ora faccio qualche prova, però, per fare una cosa migliore, mi occorrerebbe sapere i campi della tabella.
 
Ciao,
ora provo il codice; in affetti ci sarebbero alcune cose da sistemare. Oltretutto, il mio dubbio era che le checkbox permettono di effettuare scelte multiple; se tu devi effettuare una sola scelta ti conviene usare le radiobox, che prevedono una sola scelta e inoltre sono più facili da gestire. Comunque ora faccio qualche prova, però, per fare una cosa migliore, mi occorrerebbe sapere i campi della tabella.
Codice:
 echo "<tr><td> " . $rs[5] . "</td>";
            echo "<td> " . $rs[9] . "</td>";
            echo "<td> " . $rs[29] . "</td>";
            echo "<td> " . $rs[50] . "</td>";
            echo "<td> " . $rs[27] . "</td>";
            echo "<td> " . $rs[24] . "</td>"
 

Discussioni simili