Visualizzazione risultati 1 fino 11 di 11

Discussione: inserire database valori di una select

  1. #1
    L'avatar di fantacalciojarno
    fantacalciojarno non è connesso Utente giovane
    Data registrazione
    31-12-2010
    Messaggi
    89

    Predefinito inserire database valori di una select

    Allora.. ho una pagina che collegandosi al database mi estrae una serie di valori e li mostra in un menu a scomparsa. Una volta scelto il valore desiderato vorrei inviare il valore a un'altra tabella del database ma non so dove sbaglio.

    Codice PHP:

    <form action="ins.php" method="get" name="formazione">
    <center><table width="50%" border="0" align="center" cellpadding="1" cellspacing="0">
    <tr><td>

    <select name="lista">
    <?php

    $username
    ="user";
    $password="******";
    $database="my_db";
    mysql_connect(localhost,$username,$password);
    @
    mysql_select_db($database) or die("Impossibile selezionare il database.");
    $query="SELECT * FROM lista WHERE id='1' ";
    $lista=mysql_query($query);

    while (
    $row = mysql_fetch_assoc($lista)) {

    echo
    "<option value='p1' >$row[p1]</option>";
    echo
    "<option value='p1' >$row[p2]</option>";
    echo
    "<option value='p1' >$row[p3]</option>";

    }

    ?>
    </select>

    <input type="submit" value="Schiera"></center>
    </form>

  2. #2
    habbogalactica non è connesso Utente giovane
    Data registrazione
    12-06-2012
    Messaggi
    66

    Predefinito

    Dato che è un form bisognerebbe vedere pure il codice della pagina "ins.php"

    Comunque nelle tag "Option" dovresti dare un nome e mettere il valore come quello contenuto in esso:
    Codice PHP:
    <?php echo "<option name='nome_desiderato' value='$row[p1]' >$row[p1]</option>";
    e così via.

    Poi, nel file ins.php, dato che il metodo scelto è il get:
    Codice PHP:
    If(isset($_GET['nome_desiderato']) && trim($_GET['nome_desiderato']) !== "") {
    $_GET['nome_desiderato'] = mysql_real_escape_string(htmlspecialchars($_GET['nome_desiderato']));
    $result = mysql_query("INSERT INTO nome_tabella (nome_campo) VALUES (".$_GET['nome_desiderato'].")") OR die(mysql_error(); }
    Al massimo aggiungi il controllo se esiste o meno il get inviato:

    Codice PHP:
    If(isset($_GET['nome_desiderato']) && trim($_GET['nome_desiderato']) !== "") {
    $_GET['nome_desiderato'] = mysql_real_escape_string(htmlspecialchars($_GET['nome_desiderato']));
    $result = mysql_query("SELECT * FROM lista WHERE campo_precedente = ".$_GET['nome_desiderato']."")
    if(
    mysql_num_rows($result) !== 0) {
    $result = mysql_query("INSERT INTO nome_tabella (nome_campo) VALUES (".$_GET['nome_desiderato'].")") OR die(mysql_error(); }
    else { echo
    "Non in lista"; }}
    Ultima modifica di habbogalactica : 04-11-2012 alle ore 10.12.51

  3. #3
    L'avatar di fantacalciojarno
    fantacalciojarno non è connesso Utente giovane
    Data registrazione
    31-12-2010
    Messaggi
    89

    Predefinito

    Errore mio, il metodo GET è rimasto dai vari smanettamenti in realta' è POST, poi lo script è quello.Posto anche il file ins.php

    Codice PHP:

    <?php
    $connessione
    =mysql_connect("localhost", "", "");
    $sele=mysql_select_db("my_db", $connessione) or die(mysql_error());

    $p1=$_POST["p1"];
    $p2=$_POST["p2"];
    $p3=$_POST["p3"];

    {
    $stringa="INSERT INTO formazione( p1, p2, p3 ) values('$p1', '$p2', '$p3' )";
    mysql_query($stringa) or die(mysql_error());

    echo
    "<script>alert('Invio !!!')</script>"; exit ();
    }
    ?>
    Funziona tutto, non mi da errori, si apre anche il popup d'invio ma nel database il valore selezionato non va..non capisco dove sia l errore....

  4. #4
    habbogalactica non è connesso Utente giovane
    Data registrazione
    12-06-2012
    Messaggi
    66

    Predefinito

    Comunque ti consiglio di mettere la funzione mysql_real_escape_string per il post dato che è a rischio sql injection, comunque per quel che io sappia la select invia soltanto 1 dato, o no?
    E che codice gli hai dato? Hai messo il Name nell'html?
    Prova a mettere all'inizio
    if(!isset($_POST['p1']) || trim($_POST['p1']) == "") { die ("Nessun dato inviato"); }

  5. #5
    L'avatar di fantacalciojarno
    fantacalciojarno non è connesso Utente giovane
    Data registrazione
    31-12-2010
    Messaggi
    89

    Predefinito

    mysql_real_escape_string ce lo metto per ora mi premeva che andasse, la select invia un solo dato il problema è che il dato che seleziono poi non me lo invia.Il name avevo provato a darglielo come hai fatto tu:

    echo "<option name='nome_desiderato' value='$row[p1]' >$row[p1]</option>";

    Se metto l'isset infatti mi dice ''nessun dato inviato''
    L'errore io credo sia nella primo script che ho postato.

  6. #6
    habbogalactica non è connesso Utente giovane
    Data registrazione
    12-06-2012
    Messaggi
    66

    Predefinito

    Perché il dato che invii lo script lo interpreta col nome $_POST['nome_desiderato'] (non $_POST['p1']) (Basta che cambi il "name" nella tag option)

    Comunque non ho ben chiaro cosa tu voglia fare, vuoi che inserisca nel database i 3 dati (inviati singolarmente) in 3 campi diverse o tutte nello stesso?

  7. #7
    L'avatar di fantacalciojarno
    fantacalciojarno non è connesso Utente giovane
    Data registrazione
    31-12-2010
    Messaggi
    89

    Predefinito

    echo "<option name='nome_desiderato' value='$row[p1]' >$row[p1]</option>";

    ovviamento è

    echo "<option name='p1' value='$row[p1]' >$row[p1]</option>";

    Voglio semplicemente che invii il dato dei 3 che seleziono in 1 campo.
    Cmq non funziona nemmeno se il name nel tag option è p1. Sarebbe stato semplice, è qui che casca l'asino..cioè io

  8. #8
    habbogalactica non è connesso Utente giovane
    Data registrazione
    12-06-2012
    Messaggi
    66

    Predefinito

    Ops, scusami, mi sono confuso io xD (usando gli altri input pensavo fosse lo stesso per questo), devi dare il nome al <select>, che poi sarà elaborato dal php con la variabile $_POST['lista'] (che è il name che hai dato in precedenza).

  9. #9
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da fantacalciojarno Visualizza messaggio
    ovviamento è

    echo "<option name='p1' value='$row[p1]' >$row[p1]</option>";
    Che non funziona: se vuoi inserire un campo di un array (o di un oggetto) in una stringa, devi circondarlo con parentesi graffe, vedi documentazione. Ad esempio:

    Codice PHP:
    $messaggio = "Parole parole {$var_array[0]} ed altre parole";

  10. #10
    L'avatar di fantacalciojarno
    fantacalciojarno non è connesso Utente giovane
    Data registrazione
    31-12-2010
    Messaggi
    89

    Predefinito

    Non sono le parentesi il problema,anzi dovrei dire non ERANO le parentesi il problema, non ho tempo per controllare tutto ma finalmente ha inviato il dato da me scelto.Per adesso quindi grazie habbogalactica!
    Ora vorrei togliermi una curiosita!!! Vorrei che ci fossero diverse select ogn'una delle quali mi invia un dato, ovviamente per fare questo devo dare nomi diversi a ogni select ,e le devo mettere fuori dal php perchè non le riconosce ,ogni volta devo per forza riconnettermi al database o c è qualche altra possibilita'????

    Questo è l' esempio 'FUNZIONANTE' per capirsi meglio:

    Codice PHP:
    <form action="ins.php" method="post" name="formazione">
    <center><table width="50%" border="0" align="center" cellpadding="1" cellspacing="0">
    <tr><td>

    <select name="lista">
    <?php
    $username
    ="";
    $password="";
    $database="my_db";
    mysql_connect(localhost,$username,$password);
    @
    mysql_select_db($database) or die("Impossibile selezionare il database.");
    $query="SELECT * FROM lista WHERE id='1' ";
    $lista=mysql_query($query);

    while (
    $row = mysql_fetch_assoc($lista)) {

    echo
    "<option value='$row[p1]' >$row[p1]</option>";
    echo
    "<option value='$row[p2]' >$row[p2]</option>";
    echo
    "<option value='$row[p3]' >$row[p3]</option>";
    }
    ?>
    </select>

    <select name="lista2">
    <?php
    $username
    ="";
    $password="";
    $database="my_db";
    mysql_connect(localhost,$username,$password);
    @
    mysql_select_db($database) or die("Impossibile selezionare il database.");
    $query="SELECT * FROM lista WHERE id='1' ";
    $lista2=mysql_query($query);
    while (
    $row = mysql_fetch_assoc($lista2)) {

    echo
    "<option value='$row[d1]' >$row[d1]</option>";
    echo
    "<option value='$row[d2]' >$row[d2]</option>";
    echo
    "<option value='$row[d3]' >$row[d3]</option>";
    echo
    "<option value='$row[d4]' >$row[d4]</option>";
    echo
    "<option value='$row[d5]' >$row[d5]</option>";
    echo
    "<option value='$row[d6]' >$row[d6]</option>";
    echo
    "<option value='$row[d7]' >$row[d7]</option>";
    echo
    "<option value='$row[d8]' >$row[d8]</option>";
    }
    ?>
    </select>
    <input type="submit" value="Schiera"></center>
    </form>
    Ultima modifica di fantacalciojarno : 05-11-2012 alle ore 19.00.49

  11. #11
    habbogalactica non è connesso Utente giovane
    Data registrazione
    12-06-2012
    Messaggi
    66

    Predefinito

    No, basta connettersi soltanto una volta.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •