Visualizzazione risultati 1 fino 5 di 5

Discussione: Problema UPDATE query

  1. #1
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Question Problema UPDATE query

    Ciao ragazzi ho un problema con la funzione UPDATE della query.
    Premetto che ho creato tutto io a mano, quindi se ho sbagliato qualcos'altro ditemelo.
    Comunque, arriva fino alla fine, mi dice persino "Canzone aggiornata con successo", ma sul database nessun risultato!
    Il codice è questo:
    Codice PHP:
    <!-- PARTE 3 -->

    <?php
    require_once("../connessione.php");
    if(isset(
    $_POST['Modifica'])){
    $id = $_POST['id'];
    $titolo = $_POST['titolo'];
    $autore = $_POST['autore'];
    $voti = $_POST['voti'];
    $query = "UPDATE canzoni SET titolo = '$titolo', autore = '$autore' WHERE id = '$id'";
    if(
    mysql_query($query)){
    echo
    "Canzone aggiornata con successo";
    }else{
    echo
    "Errore sconosciuto durante la modifica della canzone";
    }
    }
    ?>

    <!-- PARTE 2-->

    <?php
    if(isset($_POST['Submit'])){
    ?>
    </p>
    <form id="form1" name="form1" method="post" action="">
    <table width="100%" border="0">
    <tr>
    <td>ID</td>
    <td><input type="text" name="id" disabled="disabled" value="<?php echo $_GET['id']; ?>" />
    (non modificabile) </td>
    </tr>
    <tr>
    <td>Titolo</td>
    <td><input type="text" name="titolo" value="<?php echo $_GET['titolo']; ?>" /></td>
    </tr>
    <tr>
    <td>Artista</td>
    <td><input type="text" name="autore" value="<?php echo $_GET['autore']; ?>" /></td>
    </tr>
    <tr>
    <td>Voti</td>
    <td><input type="text" name="voti" value="<?php echo $_GET['voti']; ?>" disabled="disabled" />
    (non modificabile) </td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td><input name="Modifica" type="submit" id="Modifica" value="Modifica" /></td>
    </tr>
    </table>
    </form>
    <?php
    }
    ?>

    <!--PARTE 1 -->

    <?php
    //includo il file di connessione
    require_once("../connessione.php");
    //faccio la query stringa, se vuoi es. fare la TOP 30 dopo data mettti LIMIT 30
    //quindi ti si presentane le 30 canzoni più votate in orfine di voto e in caso di parità prima la più recente
    $query_str="SELECT * FROM canzoni ORDER BY voti DESC";//e interrogo il db
    $result=mysql_query($query_str);
    //verifico che ci siano canzoni
    $esistono=mysql_num_rows($result);
    //e costruisco la tabella per presentare le canzoni
    echo "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"2\">";
    echo
    "<tr>";
    if(
    $esistono==0){//se 0 non ci sono titoli registrati
    echo "<tr><td colspan=\"5\">Per ora non ci sono canzoni da votare.</td></tr>";
    }else{
    //ci sono canzoni nel db
    $item=1;//mi serve per numerare
    //estraggo le canzoni eccc....
    while($riga=mysql_fetch_array($result)){
    $id=$riga['id'];
    $titolo=stripslashes($riga['titolo']);//metto strip perche l'inserimento andrà con addslashes
    $video=addslashes($riga['video']);
    $autore=stripslashes($riga['autore']);
    $voti=$riga['voti'];
    //e li presento echo "<tr>";
    echo "<td>$item</td>";
    echo
    "<td>$titolo</td>";
    echo
    "<td>$autore</td>";
    echo
    "<td><form id=\"form1\" name=\"form1\" method=\"post\" action=\"modifica_canzoni.php?id=$id&titolo=$titolo&autore=$autore&voti=$voti\">
    <input type=\"submit\" name=\"Submit\" value=\"MODIFICA\" />
    </form></td>"
    ;
    echo
    "<td>$voti voti</td>";
    echo
    "</tr>";
    $item++;//incremento il contatore
    }//fine while
    }//fine if-else
    //fine pagina vota.php
    ?>
    Il file di connessione è il più normale che possa esistere:
    Codice PHP:
    <?php
    $host
    = 'localhost';
    $username = 'radiodelmomento';
    $password = '';
    $db = 'my_radiodelmomento';
    $conn = @mysql_connect($host,$username,$password) or die (mysql_error());
    $sel = @mysql_select_db($db) or die (mysql_error());
    ?>
    Grazie mille.

  2. #2
    Guest

    Predefinito

    Il disabled="disabled" nell'input/select rende null il valore se inviato il form.

    Cambia con readonly e risolverai il problema.


  3. #3
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie mille, problema risolto.
    Quindi lui non trovava l'id e quindi non poteva aggiornare.
    Grazie! :-)

  4. #4
    Guest

    Predefinito

    Se non vuoi che un valore possa essere modificato, puoi utilizzare gli input type="hidden" o, in questo caso, utilizzare l'id passato tramite $_GET con tanto di type casting (te lo consiglio, perché il tuo codice può essere vittima di SQL Injection.

    Cambialo così:

    Codice PHP:
    require_once('../connessione.php');

    if (isset(
    $_POST['Modifica']))
    {
    $id = (int) $_POST['id']; # (int) $_GET['id']
    $titolo = mysql_real_escape_string(htmlspecialchars($_POST['titolo']));
    $autore = mysql_real_escape_string(htmlspecialchars($_POST['autore']));
    $voti = (int) $_POST['voti'];
    $query = "UPDATE canzoni
    SET
    titolo = '
    {$titolo}',
    autore = '
    {$autore}'
    WHERE id =
    {$id}";
    if (
    mysql_query($query))
    {
    echo
    'Canzone aggiornata con successo';
    }
    else
    {
    echo
    'Errore sconosciuto durante la modifica della canzone: ' . mysql_error();
    }
    }

  5. #5
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Grazie, ma non pensavo alla sicurezza, perché i dati li potrà modificare lo staff del quale mi fido ciecamente. Magari per errore lo modificavano, quindi l'ho reso più sicuro.
    Comunque grazie per avermi scritto il codice... NON SI FINISCE MAI D'IMPARARE!!! Ad esempio non sapevo che si potesse utilizzare (int)!
    Grazie mille per la tua disponibilità. :-D

Regole di scrittura

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