Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Textarea e checkbox con stesso nome

    Nel dubbio che sia la sezione giusta, vi chiedo aiuto per il seguente problema:

    utilizzando un database su cui sono registrati diversi tipi di prodotti, dove ogni genere di prodotto ha una propria tabella, ho creato una pagina in php che visualizza i prodotti, e per ogni prodotto ho associato una checkbox e una textarea per indicarne la quantità desiderata.

    Il valore "name" della checkbox l'ho riempito con il nome del prodotto stesso, essendo univoco, in questo modo :
    echo "<input type = 'checkbox' name = '{$array['nome']}' value = '{$array['nome']}'>";

    Per quanto riguarda la textarea ho voluto riempire il campo "name" con l'indice del prodotto stesso, in questo modo:
    echo "<input type = 'textarea' name = '{$array['id']}'>";

    Ma il problema è che essendo che carico più tabelle dal database, mi ritrovo più prodotti con lo stesso id, e quindi mi ritrovo un conflitto con le textarea, perchè ce ne sono più di una con lo stesso "name".

    Allora ho pensato di chiamare la textarea anche con il nome del prodotto, in quanto sempre univoco. Ma il problema è che una volta che prendo le variabili con il $_POST, questo non distingue quale ha preso dalla textarea, e quale dalla checkbox.

    Esiste un modo per poter fare questa distinzione? Oppure conoscete un'altro metodo per risolvere questo problema?

    Quì a seguito inserisco delle porzioni di codice, creato solamente per risolvere il problema, quindi non è la pagina su cui sto lavorando, ma è funzionamento è identico:

    PAGINA DOVE VISUALIZZO I PRODOTTI E LI SCELGO
    <?php
    include 'connessione.php'; // Connetto al database

    $query = "SELECT * FROM pizza";
    $ris = mysql_query($query) or die("Errore nella query");

    echo "<form action = 'ordina.php' method = 'POST'>";
    if($ris)
    {
    while($array = mysql_fetch_array($ris))
    {
    echo "<input type = 'checkbox' name = 'p{$array['nome']}'>";
    echo $array['nome'];
    echo "
    ";
    echo "<input type = 'text' name = 'p{$array['id']}'>";
    echo "

    ";
    }
    }
    echo "<input type = 'submit' value = 'Ordina'>";
    echo "</form>";

    ?>

    PAGINA CHE DOVREBBE MEMORIZZARE L'ORDINE NEL DATABASE

    <?php
    include 'connessione.php';

    $query = "SELECT * FROM pizza";
    $ris = mysql_query($query) or die("Errore nella query");

    if($ris)
    {
    while($array = mysql_fetch_array($ris))
    {
    @$nome = $_POST[$array['nome']];
    @$n = $_POST[$array['id']];
    if(isset($nome))
    {
    echo $array['nome']."x".$n;
    echo "
    ";
    }

    }
    }

    ?>

  2. #2
    Utente di HTML.it L'avatar di jcsnake
    Registrato dal
    Jun 2010
    Messaggi
    629
    CIao, potresti risolvere semplicemente così...

    echo "<input type = 'checkbox' name = 'chk_{$array['nome']}' value = '{$array['nome']}'>";
    echo "<input type = 'textarea' name = 'txt_{$array['id']}'>";

  3. #3
    Scusa l'ignoranza, ma non sono ancora abbastanza ferrato sul php. Mi potresti spiegare in cosa consiste, e come si utilizza questo metodo?

  4. #4
    Nessun'altro può aiutarmi a risolvere questo problema?

  5. #5
    Ho risolto.
    Come ha suggerito jcsnake, ho inserito nel campo name della checkbox e della textare una sigla che si riferisca a quale delle due sto utilizzando, in questo modo:

    name = chk_{$array['nome']}
    name = txt_{$array['id']}

    Nella pagina in cui carico i vari inserimento, ho inserito in una variabile, la sigla di ciò che carico, più la variabile che carico dal database, così:

    $checkbox = "chk_".$array['nome'];
    $txt = "txt_".$array['id'];

    E infine inserito le variabili in altre stringhe ancora, così:

    @$nome = $_POST[$checkbox];
    @$n = $_POST[$txt];

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 © 2024 vBulletin Solutions, Inc. All rights reserved.