accumulare in elenco con php

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Ciao a tutti,
sono fermo su questo problema:
Con un banale form html con 1 input, interrogo il mio db ..
Se cio' che mi restituisce e' OK, grazie ad un check importo quel record in una textarea .
La textarea e' in una pag.PHP che mi ivia una mail.

Come posso fare ad accumulare record ,incolonnandoli nella textarea senza perdere dati?
form
HTML:
<form method="post" action="cerca_dettagli.php">
<h1>PRODOTTO:</h1>&nbsp&nbsp<input type="text" name="testo"><br><br>
<input type="image" src="http://MIOSITO/registrazione_utenti/images/DETTAGLI_PRODOTTO.png"/>
</form>

VEDI_DETTAGLI.PHP
Codice:
 echo'<td>
<form method="post" action="salva_telai/modulosalvaPRODOTTO.php">
                <input type="checkbox" multiple="true"   name="myCheck[ '.$rs[5].'-'.$rs[9].'___'.$rs[27].'___'.$rs[24].'___'.$rs[52].']"
                value="PRODOTTO" />

                
                
                
</center></h1><br></tr></td> ';

<center><input type="image" " src="MIOSITO/registrazione_utenti/dettagli/images/SALVA.png" target="blank" value="INVIA " />
           </form>  <br>
<br><br><hr><br>
<a href="formcerca.php"> <img src="images/INDIETRO.png" ></a></center><br><br>

Con questo check il pulsante salva inserisce il record nella textarea.

formmail.php
<form action="invio_lista_in_ufficio.php" method="post" id="modulo">
<table>
<tr>
<td><h1>nome :</h1><br></td>
<td><label>
<input name="name" type="text" id="name" />
</label></td>
</tr>



<tr>
<td><h1>POSTO :</h1><br></td>
<td><label>
<input name="object" type="text" id="object" />
</label></td>
</tr>
<tr>
<td><h1>ELENCO PRODOTTI:</h1><br></td>
<td>
<textarea name="body" cols="60" rows="10" id="body" >
<?php
$myCheck = $_POST['myCheck'];

foreach ($myCheck as $key => $value) {
echo "$key ";
}
?>




</textarea>

</td>
</tr>
<tr>
<td><label></label>
</td>
<td><label>
<input type="image" src="MIOSITO/registrazione_utenti/images/INVIA_RICHIESTA_PRODOTTI.png" /><br><br>
<a href="../formcerca.php"> <img src="../images/INDIETRO.png" align="center>"></a>
<br><br><br><input type="reset" name="cancella" id="cancella" value="CANCELLA" />
</label></td>
</tr>
</table>
</form>

In pratica vedo il record in textarea ma vorrei che,se torno INDIETRO al form che interroga e scegliendo un altro record ,quello scritto in textarea rimanesse in elenco.
Secondo voi si puo' fare e come ...mi date una mano con il codice?

Grazie
 
Ciao giancadeejay,
quello che vuoi ottenere, sempre che abbia ben interpretato, non dovrebbe essere molto difficile
(poi facci0 qualche prova). L'unico dubbio è: quante scelte può fare l'utente? Tu avevi affiancato ad ogni
record una check-box (che ti permette di effettuare una o più scelte), mentre io ti avevo suggerito, forse
mal interpretando, di sostitruire le check-box con le radio-button, che permettono una sola scelta.
quante scelte può fare l'utente? Ciao


Zorro
 
Allora avevo mal interpretato: ci volevano le check-box. Domani faccio qualche prova. Ma 10 scelte precise o fino a un max
di 10 scelte (da min 1 a max 10 scelte)?
 
Ciao giancadeejay,
ho fatto quache prova: sono riuscito a effettuare scelte multiple, a inserire i record selezionati in una textarea ma non a stamparli, nonostante le prove, uno sotto l'atro: me li stampa uno di seguito all'altro. A questo punto o c'è qualcuno più esperto di me che ti suggerà come formattarli nella textarea oppure potresti stamparli all'interno di un div (devono essere per forza in una textarea?)
Io ho optato per quest'ultima soluzione e questo è il risultato.
Dovrai modificare seleziona.php con

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

e poi dovrai inserire all'inizio di contrform.php

HTML:
!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#box {
    border:solid 1px grey;
    border-radius:5px;
    font-family: "Arial Black", Gadget, sans-serif ;
    padding-left:10px;
    padding-top:10px;
    font-size:16px;
    width:600px;
    height:250px;
}
</style>
</head>

<body>

PHP:
$cont = count($scelta);

per contare le scelte effettuate, ed infine

PHP:
echo '<div id="box">';

        for ($ind=0;$ind<$cont;$ind++) {
                $query = mysql_query("SELECT id, campo1, campo2, campo3, campo4, campo5, campo6 FROM tabella where id = ".$scelta[$ind]);
               while ($row = mysql_fetch_array($query)) {
                       $id = $row['id'];
                    $campo1 = $row['campo1'];
                    $campo2 = $row['campo2'];
                    $campo3 = $row['campo3'];
                    $campo4 = $row['campo4'];
                    $campo5 = $row['campo5'];
                    $campo6  = $row['campo6'];
            
                    echo $campo1.' '.$campo2.' '.$campo3.' '.$campo4.' '.$campo5.' '.$campo6.'<br>';
             }
        }
    echo '</div>';

per visalizzarli -all'interno del div box. Spero vada bene. Ciao


Zorro
 
Grazie zorro.......... ma Forse ho trovato una soluzione ma vi prego di darmi una mano col codice..
Allora ho questa pagina php che interroga il db e mi restituisce un record di dati.
Con questo codice che posto vorrei, oltre che vedermeli stampati a video ,salvarli anche in un altra tabella del mio db come posso fare??
pag.php
Codice:
<table id="box-pieno" >

 <tr>
              
              
              
                <th scope="col">MODO</th>
                <th scope="col">TEMPO</th>
                <th scope="col">COLORE</th>
                <th scope="col">ZONA</th>
                <th scope="col">POSTO</th>
                <th scope="col">UGOLONE</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: 18px;
    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: 14px;
}

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

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

</style>
</head>

<body>

<center>



<?php
$cn = mysql_connect("localhost", "DB", "PSW");
mysql_select_db("my_DB", $cn);
//leggi il valore che ti provine dal form
$testo=trim($_POST['testo']);
$testo = substr("00000000".$_POST["testo"], -8);//inserisce gli zeri prima del telaio
$newpage = '../dettagli/formcerca.php';
 
$wh="";
if(!empty($testo) && preg_match('/^[a-zA-Z0-9]{1,8}/',$testo)){
    $wh=" WHERE DATO9='".$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 completo $wh";
    //var_dump($sel); LO COMMENTI
    $query = mysql_query($sel, $cn );
    $quanti = mysql_num_rows($query);
    if ($quanti == 0){
        echo "<h1>TEMPO ERRATO OPPURE INESISTENTE!</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> <h1><center>ECCO I DETTAGLI CHE HAI RICHIESTO:"."<br><br><hr>";
          
            echo "<td> " . $rs[5] . "</td>";
            echo "<td>" . $rs[9] . "</td> ";
            echo "<td>" . $rs[29] . "</td>";
           echo "<td>" . $rs[24] . "</td>";
           echo "<td>" . $rs[26] ." - ". $rs[27] . "</td>";
           echo "<td>" . $rs[50] . "</td>";
           echo "<td>" . $rs[52] . "</td>";
                 echo'<td>
<form method="post" action="salva_telai/modulosalvatelai.php">
                <input type="checkbox" multiple="true"   name="myCheck[ '.$rs[5].'-'.$rs[9].'___'.$rs[26].' - '.$rs[27].'___'.$rs[24].'___'.$rs[52].']"
                value="TEMPO" />

              
              
              
</center></h1><br></tr></td> ';
     } 
    }

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


</table><br>
<center><input type="image" " src="http://MIOSITOWEB/registrazione_utenti/dettagli/images/SALVA.png"  value="INVIA " />
            </form>  <br>
<br><br><hr><br>
<a href="formcerca.php"> <img src="images/INDIETRO.png" ></a></center><br><br>
 
Ciao giancadeejay,
nel tuo codice, soprattutto HTML, c'è qualcosa da sistemare: le pagine HTML richiedono dei tag (di apertura e chilusura) ben precisi:

HTML:
!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>..............</title>
</head>

<body>
</body>
</html>

La sezione contenente le regole CSS (contenuta tra i tag <style> e </style>), se c'è, va inserita prima di </head> mentre tutto ciò che verrà visualizzato nella pagina andrà inserito tra <body> e </body>. Nel tuo codice inserisci <style> dopo <table>, quando, in realtà, vanno in due sezioni differenti: <style> prima di </head> e <table> andava bene nel <body>. Devi semplicemente spostare le regole CSS
 
Ciao giancadeejay,
nel tuo codice, soprattutto HTML, c'è qualcosa da sistemare: le pagine HTML richiedono dei tag (di apertura e chilusura) ben precisi:

HTML:
!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>..............</title>
</head>

<body>
</body>
</html>

La sezione contenente le regole CSS (contenuta tra i tag <style> e </style>), se c'è, va inserita prima di </head> mentre tutto ciò che verrà visualizzato nella pagina andrà inserito tra <body> e </body>. Nel tuo codice inserisci <style> dopo <table>, quando, in realtà, vanno in due sezioni differenti: <style> prima di </head> e <table> andava bene nel <body>. Devi semplicemente spostare le regole CSS
Ciao...Riesci a darmi una mano con l'ultimo mio post?
 
Ciao Giancadeejay,
scusa il ritardo ma sono stato occupato. Ho fatto diverse prove ed eco qua il risultato, sempre che abbia ben intepretato le tue esigeenze: qui puoi vedere un'anteprima.
Come puoi vedere, apparentemente non cambia niente; in realtà ho creato una nuova tabella (recsel record selezionati) cosituita dai campi che vengono visualizzati nel DIV più un campo (io l'ho chamato ID_tab) che
riporta l'ID del record che viene assegnato direttamente dal computer al record nella tabella dalla quale l'utente effettua la selezione; questo per evitare di avere doppioni nella tabella recsel: prma dell'inserimento, viene controllato che in recsel non esista già un record con quel particolare id.

Di seguito il codice modificato:

hom.php

PHP:
<?php
session_start();
$errore = $_SESSION['err'];
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
table, tr, td {
    text-align:center;
}
#footer {
    width:730px;
    height:30px;
    padding-left:100px;
    color:red;
}
</style>
</head>

<body>
<?php

//leggo il DB

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


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

mysql_select_db($db)
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 '<form method="get" action="contrform.php">';
       echo '    <table width="800" border="0">';
       echo '        <tr>';
       echo '            <th scope="col" colspan="5" height="140"><h1>VETTURE DISPONIBILI</h1></th>';
       echo '        </tr> ';
       echo '        <tr bgcolor="grey">';
       echo '            <th scope="col" height="70">CAMPO1</th>';
       echo '            <th scope="col">CAMPO2</th>';
       echo '            <th scope="col">CAMPO3</th>';
       echo '            <th scope="col">SELEZIONA</th>';
       echo '        </tr> ';

       // conteggio dei record restituiti dalla query
       while($row = mysql_fetch_array($query)) {
             $id = $row['id'];
             $campo1 = $row['campo1'];
             $campo2 = $row['campo2'];

             echo '        <tr>';
             echo '            <td scope="col" height="30">'.$id.'</td>';
             echo '            <td scope="col">'.$campo1.'</td>';
             echo '            <td scope="col">'.$campo2.'</td>';
             echo '            <td scope="col"><input type="checkbox" name="scelta[]" value="'.$id.'"></td>';
             echo '        </tr> ';
       }

  
echo '        <tr>';
echo '            <td scope="col" colspan="3" height="100"><h3>Effettua una scelta</h3></td>';
echo '            <td scope="col"><input type="submit" name="invia" value="Invia i dati"></td>';
echo '        </tr> ';
echo '    </table>';
echo '</form>';

echo '<div id="footer">';
echo $errore;
echo '</div>';

?>

</body>
</html>


e contrform.php

PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#box {
    border:solid 1px grey;
    border-radius:5px;
    font-family: "Arial Black", Gadget, sans-serif ;
    padding-left:10px;
    padding-top:10px;
    font-size:16px;
    width:600px;
    height:250px;
}
</style>
</head>

<body>
<?php
$scelta = $_GET['scelta'];
$righe = 0;
$cont = count($scelta);

if  ($cont == 0 ) {
     session_start();
     $_SESSION['err'] = 'ATTENZIONE!!! Nessun record selezionato.<br>Devi effettuare almeno una selezione';
     include('home.php');
} else {
     echo 'Scelte effettuate: '.$cont;
     //Connessione
   
    // nome di host
    $host = "localhost";
    // username dell'utente in connessione
    $db_user = "........";
    // password dell'utente
    $db_psw = ".......";
    // nome del database
    $database = '......';


    $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);
    echo '<div id="box">';

    for ($ind=0;$ind<$cont;$ind++) {
         $query = mysql_query("SELECT id, campo1, campo2, campo3, campo4, campo5, campo6 FROM tabella where id = ".$scelta[$ind]);
           while ($row = mysql_fetch_array($query)) {
                $id = $row['id'];
                   $campo1 = $row['campo1'];
                $campo2 = $row['campo2'];
                $campo3 = $row['campo3'];
                $campo4 = $row['campo4'];
                $campo5 = $row['campo5'];
                $campo6  = $row['campo6'];
                   
                $query="SELECT COUNT(*) as tot FROM recsel WHERE ID_tab = ".$id;
                $tabella=mysql_query($query, $connessione) or die ("Attenzione: errore nella query");
                //Esecuzione della query
                $row=mysql_fetch_assoc($tabella);
                //$count=$row[' count'];
                $righetot=$row['tot'];

                if ($righetot == 0) {
                    $query = mysql_query("INSERT INTO recsel (ID_tab, campo1, campo2, campo3, campo4, campo5, campo6) VALUES ('$id', '$campo1', '$campo2', '$campo3', '$campo4', '$campo5', '$campo6')");
                    //mysql_query($query, $connessione) or die ("Attjjjjjenzione: errore nella query");
                    $righe++;
                 }  
                 echo $campo1.' '.$campo2.' '.$campo3.' '.$campo4.' '.$campo5.' '.$campo6.'<br>';
             }
        }
    echo '</div>';
    echo 'record inseriti: '.$righe;  
}
?>
</body>
</html>


Zorro
 
Ultima modifica:
Ciao Giancadeejay,
scusa il ritardo ma sono stato occupato. Ho fatto diverse prove ed eco qua il risultato, sempre che abbia ben intepretato le tue esigeenze: qui puoi vedere un'anteprima.
Come puoi vedere, apparentemente non cambia niente; in realtà ho creato una nuova tabella (recsel record selezionati) cosituita dai campi che vengono visualizzati nel DIV più un campo (io l'ho chamato ID_tab) che
riporta l'ID del record che viene assegnato direttamente dal computer al record nella tabella dalla quale l'utente effettua la selezione; questo per evitare di avere doppioni nella tabella recsel: prma dell'inserimento, viene controllato che in recsel non esista già un record con quel particolare id.

Di seguito il codice modificato:

hom.php

PHP:
<?php
session_start();
$errore = $_SESSION['err'];
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
table, tr, td {
    text-align:center;
}
#footer {
    width:730px;
    height:30px;
    padding-left:100px;
    color:red;
}
</style>
</head>

<body>
<?php

//leggo il DB

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


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

mysql_select_db($db)
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 '<form method="get" action="contrform.php">';
       echo '    <table width="800" border="0">';
       echo '        <tr>';
       echo '            <th scope="col" colspan="5" height="140"><h1>VETTURE DISPONIBILI</h1></th>';
       echo '        </tr> ';
       echo '        <tr bgcolor="grey">';
       echo '            <th scope="col" height="70">CAMPO1</th>';
       echo '            <th scope="col">CAMPO2</th>';
       echo '            <th scope="col">CAMPO3</th>';
       echo '            <th scope="col">SELEZIONA</th>';
       echo '        </tr> ';

       // conteggio dei record restituiti dalla query
       while($row = mysql_fetch_array($query)) {
             $id = $row['id'];
             $campo1 = $row['campo1'];
             $campo2 = $row['campo2'];

             echo '        <tr>';
             echo '            <td scope="col" height="30">'.$id.'</td>';
             echo '            <td scope="col">'.$campo1.'</td>';
             echo '            <td scope="col">'.$campo2.'</td>';
             echo '            <td scope="col"><input type="checkbox" name="scelta[]" value="'.$id.'"></td>';
             echo '        </tr> ';
       }

 
echo '        <tr>';
echo '            <td scope="col" colspan="3" height="100"><h3>Effettua una scelta</h3></td>';
echo '            <td scope="col"><input type="submit" name="invia" value="Invia i dati"></td>';
echo '        </tr> ';
echo '    </table>';
echo '</form>';

echo '<div id="footer">';
echo $errore;
echo '</div>';

?>

</body>
</html>


e contrform.php

PHP:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
#box {
    border:solid 1px grey;
    border-radius:5px;
    font-family: "Arial Black", Gadget, sans-serif ;
    padding-left:10px;
    padding-top:10px;
    font-size:16px;
    width:600px;
    height:250px;
}
</style>
</head>

<body>
<?php
$scelta = $_GET['scelta'];
$righe = 0;
$cont = count($scelta);

if  ($cont == 0 ) {
     session_start();
     $_SESSION['err'] = 'ATTENZIONE!!! Nessun record selezionato.<br>Devi effettuare almeno una selezione';
     include('home.php');
} else {
     echo 'Scelte effettuate: '.$cont;
     //Connessione
  
    // nome di host
    $host = "localhost";
    // username dell'utente in connessione
    $db_user = "........";
    // password dell'utente
    $db_psw = ".......";
    // nome del database
    $database = '......';


    $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);
    echo '<div id="box">';

    for ($ind=0;$ind<$cont;$ind++) {
         $query = mysql_query("SELECT id, campo1, campo2, campo3, campo4, campo5, campo6 FROM tabella where id = ".$scelta[$ind]);
           while ($row = mysql_fetch_array($query)) {
                $id = $row['id'];
                   $campo1 = $row['campo1'];
                $campo2 = $row['campo2'];
                $campo3 = $row['campo3'];
                $campo4 = $row['campo4'];
                $campo5 = $row['campo5'];
                $campo6  = $row['campo6'];
                  
                $query="SELECT COUNT(*) as tot FROM recsel WHERE ID_tab = ".$id;
                $tabella=mysql_query($query, $connessione) or die ("Attenzione: errore nella query");
                //Esecuzione della query
                $row=mysql_fetch_assoc($tabella);
                //$count=$row[' count'];
                $righetot=$row['tot'];

                if ($righetot == 0) {
                    $query = mysql_query("INSERT INTO recsel (ID_tab, campo1, campo2, campo3, campo4, campo5, campo6) VALUES ('$id', '$campo1', '$campo2', '$campo3', '$campo4', '$campo5', '$campo6')");
                    //mysql_query($query, $connessione) or die ("Attjjjjjenzione: errore nella query");
                    $righe++;
                 } 
                 echo $campo1.' '.$campo2.' '.$campo3.' '.$campo4.' '.$campo5.' '.$campo6.'<br>';
             }
        }
    echo '</div>';
    echo 'record inseriti: '.$righe; 
}
?>
</body>
</html>


Zorro
Grazie mille Zorro... provero' subito
 

Discussioni simili