Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Problema con form ed array

    Buongiorno a tutti. Sto impazzendo per una cosa che sicuramente è stupidissima ma in questo momento non mi viene in testa.
    Allora, ho un form che preleva dati da un db mysql:
    Codice PHP:
    $query = "SELECT * FROM prodotti order by prod_sint asc";
        
        // invio la query
        $result = mysql_query($query);
        // controllo l'esito
        if (!$result) {
            die("Errore nella query $query: " . mysql_error());
        }


    while ($row = mysql_fetch_assoc($result))
        {
            $idProdotto = htmlspecialchars($row['idProdotto']);
            $prod_sint = htmlspecialchars($row['prod_sint']);
            $prod_dett = htmlspecialchars($row['prod_dett']);
            $IdForn = htmlspecialchars($row['IdForn']);
            $note = htmlspecialchars($row['note']);
            $costo = htmlspecialchars($row['costo']);
            
        ?>
        <form name="sel_prodotti" method="post" action="test_controllo2.php">

            <tr>
                    <td><?php echo '<input style="border:0px;" type="text" name="prodotto[]" value="'.$prod_sint.'">';?></td>
                    <td><?php echo '<input style="border:0px;" type="text" name="forn[]" value="'.$forn.'">';?></td>
                    <td><?php echo '<input style="border:0px;" type="text" name="note[]" value="'.$note.'">';?></td>
                    <td><?php echo '<input style="border:0px;" type="text" name="quantita[]" value="'.$quantita.'">';?></td>
                    <td><?php echo '<input style="border:0px;" type="text" name="costo[]" value="'.$costo.'">';?></td>
                    <td><?php echo '<input type="checkbox" name="check[]" value="'.$idProdotto.'">';?></td>
            </tr>
        <?php
        
    }
        
    ?>
    Praticamente se checked ho bisogno di sapere quale prodotto, la quantità etc della riga.
    E qui vengono i problemi.
    Nel test_controllo2.php non mi viente in mente come prendere i risultati delle quantità e dei check.
    Ho provato in varie maniere ma essendo gli array di quantità e di check di lunghezza diversa non so come raffrontarli (gli indici non corrispondono).
    Qualche idea?
    Grazie a tutti

  2. #2
    Quando fai il submit del form ti ritrovi tutto dentro a $_POST[]; il check fallo direttamente sui valori invece che sugli indici

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Per tutti i campi scrivi in questo formato
    type="text" name="prodotto[]"

    le quadre nel "name" non hanno senso in un campo di tipo text, ce l'hanno solo sui checkbox e se i "name" dei checkbox sono tutti uguali per formare un gruppo che restituisca un array, altrimenti non servono a niente neanche lì.

    Lato PHP prendi i value dei check selezionati, che contengono l'id del prodotto, e uno per uno rifai una query verso il db per prendere i dati del prodotto specifico.

    Una cosa così
    Codice PHP:
    foreach ($_POST['check'] as $id)
    {
        
    $query "SELECT * FROM tabella_prodotti WHERE id=".$id;
        
    //fai quello che devi fare con il prodotto corrente
        //l'operazione verrà ripetuta per tutti i prodotti selezionati


  4. #4
    Quindi tutto i campi avranno name="prodotto[]" e solo i check saranno name="check[]"...
    Provo

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Col sistema che ti ho proposto puoi proprio fare a meno di mettere dei campi di input text, a meno che tu non voglia che sia possibile modificarli (in tal caso va rivisto il funzionamento).

    Puoi mostrare quei valori direttamente così nel form
    <td><?php echo $prod_sint ?></td>
    <td><?php echo $forn ?></td>
    <td><?php echo $note ?></td>
    <td><?php echo $quantita ?></td>
    <td><?php echo $costo ?></td>

    perché tanto questi valori li dovrai riprendere con le query dentro il foreach.

  6. #6
    Scusami ma il problema è che le quantità vengono immesse a mano e quindi non provengono da db... con la select non le ottengo. Ho bisogno ricavarle dal POST per poi essere inserite nel DB

  7. #7
    Posta qui il risultato di
    Codice PHP:
    print_r($_POST); 
    Naturalmente dopo aver submittato il form

  8. #8
    Eccolo, con solo un checked
    Codice PHP:
    Array ( [prodotto] => Array ( [0] => Alice 20 mb [1] => [2] => 35.90 [3] => Alice Adsl 7Mb [4] => [5] => 19.90 [6] => Linea Tuttocompreso Super [7] => [8] => 49.90 [9] => Tim Flex [10] => [11] => 24.90 [12] => Tim Tutto incluso 300 [13] => [14] => 65.00 ) [check] => Array ( [0] => ) [invia] => invia 

  9. #9
    Ok, a questo punto mi chiedo qual e' il problema?
    L'array $_POST contiene tutti i dati del tuo form. Per recuperare - ad esempio - il check, ti basta fare:

    Codice PHP:
    $checked $_POST['prodotto']['check'][0]; 
    E' questo che volevi? Se no riformula meglio la domanda

  10. #10
    facendo

    $checked = $_POST['prodotto']['check'][0];
    print_r($checked);

    non ottengo nulla.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.