• User

    Non riesco a modificare i dati di un db

    Ciao a tutti ho un problema con il mio script php.
    In pratica sto facendo una pagina che permetta di cambiare i prezzi di una lista di prodotti inseriti inun db.

    In una pagina e presente un form con la lista dei prodotti, il prezzo e un campo vuoto a fianco a ciascun prodotto dove inserire il prezzo nuovo e il tasto submit alla fine dell'elenco che manda a questo script i dati via POST.

    Le variabili che vengono mandate sono variabili che hanno come nome l'ID del prodotto e come valore il prezzo nuovo da cambiare.

    Con questo script arrivo a leggere la scritta che il prezzo è stato modificato ma in realtà non mi modifica niente. Potete aiutarmi??

    <?php
    $host = "mysqlxxxx.xxxxxxx.xxx";
    $username = "arrrrr";
    $password = "grrrrrrrr";
    $database = "df_prodotti";
    $tabella = "prodotti";

    //Dati nella tabella: ID, nome_ita, nome_fra, prezzo

    $connessione = mysql_connect ($host,$username,$password) or die ("Connessione impossibile

    ".mysql_error());

    $lista=@mysql_query('SELECT ID, nome_ita, prezzo FROM prodotti');
    if (!$lista) {exit('Errore: Tabella non trovata');}

    //Imposto il comando sql per cambiare il prezzo

    $sql="UPDATE prodotti SET
    prezzo='$prezzo' WHERE id='$id'";

    while ($row=mysql_fetch_array($lista)) {
    $id=$row['ID'];
    // Verifico se è presente una variazione
    if (isset($_POST[$id])) {
    //Inserire controllo numero
    $prezzo=$_POST[$id];
    //Modifico dato
    if (@mysql_query ($sql)) {
    echo "<p>Prezzo del prodotto".$id."aggiornato a ".$prezzo."</p>";}
    else echo "errore";
    }
    }

    ?>


  • Consiglio Direttivo

    Ciao Paci. 🙂

    Prima di questa riga non trovo l'associazione $id=$_POST['id'];
    [php]$sql="UPDATE prodotti SET
    prezzo='$prezzo' WHERE id='$id'";[/php]Immagino poi che tutti questi:

    $_POST[$id];
    ```dovrebbero essere:
    

    $_POST['id'];

    
    
    Posteresti il form? Credo che ci sia un po' di confusione sui richiami agli elementi POSTati. ;)

  • User

    Questo è tutto form e script completo è tutto in una pagina:

    <?php
    $host = "mysqlxxxx.xxxxxxx.xxx";
    $username = "arrrrr";
    $password = "grrrrrrrr";
    $database = "df_prodotti";
    $tabella = "prodotti";

    //Dati nella tabella: ID, nome_ita, nome_fra, prezzo

    $connessione = mysql_connect ($host,$username,$password) or die ("Connessione impossibile

    ".mysql_error());

    $lista=@mysql_query('SELECT ID, nome_ita, prezzo FROM prodotti');
    if (!$lista) {exit('Errore: Tabella non trovata');}

    //Imposto il comando sql per cambiare il prezzo

    $sql="UPDATE prodotti SET
    prezzo='$prezzo' WHERE id='$id'";

    while ($row=mysql_fetch_array($lista)) {
    $id=$row['ID'];
    // Verifico se è presente una variazione
    if (isset($_POST[$id])) {
    //Inserire controllo numero
    $prezzo=$_POST[$id];
    //Modifico dato
    if (@mysql_query ($sql)) {
    echo "<p>Prezzo del prodotto".$id."aggiornato a ".$prezzo."</p>";}
    else echo "errore";
    }
    }

    <form action="modifica_prezzo.php" method="post" name="Cambio prezzo">
    <p> </p>
    <p> </p>
    <table width="500" border="1">
    <tr>
    <th scope="col">ID</th>
    <th scope="col">Prodotto</th>
    <th scope="col">Prezzo</th>
    <th scope="col">Nuovo prezzo</th>
    </tr>

    <?php
    $host = "xxxxxxxxxxxxxxxxxxxxx";
    $username = "xxxxxxxxxxxxxxxxxxx";
    $password = "xxxxxxxxxxxxxxxxxxx";
    $database = "df_prodotti";
    $tabella = "prodotti";

    //Dati nella tabella: ID, nome_ita, nome_fra, prezzo

    $connessione = mysql_connect ($host,$username,$password) or die ("Connessione impossibile

    ".mysql_error());

    $lista=@mysql_query('SELECT ID, nome_ita, nome_fra, prezzo FROM prodotti');
    if (!$lista) {exit('Errore: Tabella non trovata');}

    while ($row=mysql_fetch_array($lista)) {
    $id=$row['ID'];
    $nome_ita=$row['nome_ita'];
    $prezzo=$row['prezzo'];
    echo "

    <tr>
    <td>".$id."</td>
    <td>".$nome_ita."</td>
    <td>".$prezzo."</td>
    <td> <input name="".$id."" type="text" value="Nuovo prezzo" /> </td>

    </tr>";
    }

    ?>
    </table>
    <input name="" type="submit" />
    </form>

    </body>
    </html>


  • User Attivo

    Ciao,
    questa riga di codice:
    [php]
    $sql="UPDATE prodotti SET
    prezzo='$prezzo' WHERE id='$id'";
    [/php]
    va inserita
    [php]
    while ($row=mysql_fetch_array($lista)) {
    $id=$row['ID'];
    // Verifico se è presente una variazione
    if (isset($_POST[$id])) {
    //Inserire controllo numero
    $prezzo=$_POST[$id];

    $sql="UPDATE prodotti SET prezzo='$prezzo' WHERE id='$id'"; // QUI

    //Modifico dato
    if (@mysql_query ($sql)) {
    echo "<p>Prezzo del prodotto".$id."aggiornato a ".$prezzo."</p>";}
    else echo "errore";
    }
    }
    [/php]

    Alessandro


  • User

    Grazie mille per la soluzione sei un grande!!
    Ma mi potresti spiegare come mai semplicemente spostando la riga lo script fa il suo sporco compito?