Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    17

    query update non funziona a dovere

    Ciao a tutti, mi trovo di fronte a un piccolo problema, ho scritto una query di update che non funziona a dovere, o meglio, sembra che funzioni tutto ma in realtàquando io schiaccio il tasto di modifica vengo reindirizzato alla pagina con il form di modifica già compilato, cambio quello che devo cambiare e in seguito clicco sul tasto che dovrebbe effettivamente eseguire l'operazione nel database mysql, il messaggio che mi ritorna è quello di avvenuta modifica ma in realtà non è stato modificato assolutamente nulla.
    essendo da poco che lavoro con php ed essendo la prima query update che faccio, non riesco a capire dove sbaglio... comunque vi posto la pagina di modifica e la pagina modifica_dati che sono quelle in cui secondo me potrebbe esserci l'errore e per ora grazie a chi avrà voglia di rispondere.


    modifica.php

    Codice PHP:

    <?php
    // CONNESSIONE AL DATABASE
    include('connect.php');
    echo 
    '

    <h1>Modifica questo record</h1></br>
    '
    ;
    $sql "SELECT * FROM articoli WHERE id='$_GET[id]'";
    $res mysql_query($sql$connessione);
    $row mysql_fetch_array($res);
     if (@
    mysql_query($sql)){
    echo 
    '
    <form action="modifica_dati.php" method="POST">
    Titolo:

    <input type="text" maxlength="20" name="titolo" value="' 
    $row['titolo'] . '" />


    Testo:

    <textarea name="testo" cols="40" rows="5">' 
    $row['testo'] . '</textarea>


    Autore:

    <input type="text" maxlength="15" name="autore" value="' 
    $row['autore'] . '"/>


    <input type="hidden" value="' 
    $_GET['id'] . '" name="id" />
    <input type="submit" value="modifica" />
    </form>
     
    '
    ;
    }
    else {
    echo 
    "Errore: Non posso eseguire la modifica!";
    }
    ?>
    modifica_dati.php

    Codice PHP:

    <?php
    // CONNESSIONE AL DATABASE
    include('connect.php');
    //Recupera i dati inseriti nei form tramite il metodo $_POST
    $id '$_GET[id]';
    $titolo $_POST["titolo"];
    //$testo= addslashes($_POST['testo']);
    //$testo= mysql_real_escape_string($_POST['testo']);
    //echo "$testo";
    $testo $_POST["testo"];
    $autore $_POST ["autore"];
    //$sql = "UPDATE articoli SET titolo=$_POST[titolo], testo=$_POST[testo], autore=$_POST[autore] WHERE id=$id"; //WHERE id=$_GET[id]";
    //$query=@mysql_query($sql) or die (mysql_error());
    $sql"UPDATE articoli SET titolo='$titolo', testo='$testo', autore='$autore' WHERE id='$id' ";
    if (
    mysql_query($sql,$connessione)) {echo "aggiornamento effettuato";
    header"refresh: 3; url=leggi.php" );}
    else {echo 
    "aggiornamento non effettuato";
    $connessionemysql_close();
    }
    ?>
    mentre questa è la pagina di stampa a video

    leggi.php

    Codice PHP:

    <html>
    <head><title>Pagina di pubblicazione articoli</title></head>
    <body>
    <?php

    //includo il file per la connessione al database
        
    include ("connect.php");
    //creo la variabile $leggi in cui salvo la select che mi seleziona tutto quello che c'è all'interno della tabella articoli
    $leggi=mysql_query("SELECT * FROM articoli");
    //eseguo il ciclo while per recuperare i dati dalla variabile $leggi e imposto quali colonne del database voglio visualizzare
      
    while($tempbox=mysql_fetch_array($leggi)){
         
    $id=$tempbox['id'];
         
    $titolo=$tempbox['titolo'];
         
    $testo=$tempbox['testo'];
         
    $autore=$tempbox['autore'];
         
      
    //stampo a video le variabili $titolo $testo e $autore
         
    echo "
     [url=""]Cancella [/url] 

    </p><a href=modifica.php?id=
    $id;>modifica</a></br>[b]Titolo:[/b]$titolo 
    </br> [b]Testo:[/b]
    $testo 
    </br>  
    </br>[b]Autore:[/b]
    $autore 
    </br> 
    --------------------------------------------------</br>"
    ;
      }
      
    ?>
    </body>
    </html>
    Grazie ancora a tutti!

  2. #2
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221

    Re: query update non funziona a dovere

    Originariamente inviato da mone2984
    $id = '$_GET[id]';
    credo che il problema sia che ti aspetti di ricevere l'id del record da modificare in getl, ma in realtà nel form non c'è traccia dell'id, ne come get ne come post, quindi la tua query finirebbe con un "WHERE id='' " il che vuol dire che viene eseguita correttamente ma non tocca nessuna riga della tua tabella in quanto presumibilmente nessuna riga ha id vuoto.

    hai due strade per modificare il form:

    1. passi l'id come get:
    Codice PHP:
    echo '
    <form action="modifica_dati.php?id=' 
    $row['id'] ." method="POST">
    Titolo:
     .... ecc... 
    e il resto lo lasci come è.

    2. passi l'id come post (secondo me la migliore)
    Codice PHP:
    echo '
    <form action="modifica_dati.php" method="POST">
    <input type="hidden" name="id" value="' 
    $row['id'] . '" />
    Titolo:
     .... ecc... 
    però in questo caso dovrai cambiare su modifica_dati.php

    $id = '$_GET[id]'

    che diventerà

    $id = '$_POST[id]';

    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  3. #3
    Per correttezza meglio scrivere

    Codice PHP:
    $id '$_GET['id']' 
    Invece di:

    Codice PHP:
    $id '$_GET[id]' 
    Hai bisogno di un CMS? Hai bisogno di un E-commerce? Oppure hai bisogno di un semplice sito?

    Chiedi a me!

  4. #4
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    a volerla dire tutta in questo caso non capisco prorpio il senso delle virgolette, io scriverei direttamente:

    $id = $_GET['id'];

    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  5. #5
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Originariamente inviato da Trynight
    Per correttezza meglio scrivere
    Codice PHP:
    $id '$_GET['id']' 
    occhio però che questo è proprio sbagliato come sintassi!
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  6. #6
    Era riferito nella query

    Comunque ha risolto l'utente?
    Hai bisogno di un CMS? Hai bisogno di un E-commerce? Oppure hai bisogno di un semplice sito?

    Chiedi a me!

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2010
    Messaggi
    17

    [RISOLTO] query update non funziona a dovere

    Ciao a tutti, ho seguito i vostri consigli e sono riuscito a risolvere, essendo alle prime armi potrei aver scritto codice funzionante ma non esattamente corretto o potenzialmente insicuro, quindi se qualcuno ha qualcosa da aggiungere o da modificare ben venga

    modifica.php

    Codice PHP:

    <?php
    // CONNESSIONE AL DATABASE
    include('connect.php');
    echo 
    '

    <h1>Modifica questo record</h1></br>
    '
    ;
    $sql "SELECT * FROM articoli WHERE id='$_GET[id]'";
    $res mysql_query($sql$connessione);
    $row mysql_fetch_array($res);
     if (@
    mysql_query($sql)){
    echo 
    '
    <form action="modifica_dati.php" method="POST"> 
    Titolo:

    <input type="text" maxlength="20" name="titolo" value="' 
    $row['titolo'] . '" />


    Testo:

    <textarea name="testo" cols="40" rows="5">' 
    $row['testo'] . '</textarea>


    Autore:

    <input type="text" maxlength="15" name="autore" value="' 
    $row['autore'] . '"/>


    <input type="hidden" name="id" value="' 
    $row['id'] . '" /> 
    <input type="submit" value="modifica" />
    </form>
    '
    ;
    }
    else {
    echo 
    "Errore: Non posso eseguire la modifica!";
    }
    ?>
    modifica_dati.php

    Codice PHP:

    <?php
    // CONNESSIONE AL DATABASE
    include('connect.php');
    //Recupera i dati inseriti nei form tramite il metodo $_POST
    $id $_POST["id"]; 
    $titolo $_POST["titolo"];
    //echo "$testo";
    $testo $_POST["testo"];
    $autore $_POST ["autore"];
    $sql"UPDATE articoli SET titolo='$titolo', testo='$testo', autore='$autore' WHERE id='$id' ";
    if (
    mysql_query($sql,$connessione)) {echo "Aggiornamento effettuato";
    header"refresh: 3; url=leggi.php" );}
    else {echo 
    "Aggiornamento non effettuato";
    $connessionemysql_close();
    }
    ?>
    leggi.php

    Codice PHP:


    <html>
    <head><title>Pagina di pubblicazione articoli</title></head>
    <body>
    <?php

    //includo il file per la connessione al database
        
    include ("connect.php");
    //creo la variabile $leggi in cui salvo la select che mi seleziona tutto quello che c'è all'interno della tabella articoli
    $leggi=mysql_query("SELECT * FROM articoli");
    //eseguo il ciclo while per recuperare i dati dalla variabile $leggi e imposto quali colonne del database voglio visualizzare
      
    while($tempbox=mysql_fetch_array($leggi)){
         
    $id=$tempbox['id'];
         
    $titolo=$tempbox['titolo'];
         
    $testo=$tempbox['testo'];
         
    $autore=$tempbox['autore'];
         
      
    //stampo a video le variabili $titolo $testo e $autore
         
    echo "
     [url=""]Cancella [/url] 

    </p><a href=modifica.php?id=
    $id;>modifica</a></br>[b]Titolo:[/b]$titolo 
    </br> [b]Testo:[/b]
    $testo 
    </br>  
    </br>[b]Autore:[/b]
    $autore 
    </br> 
    --------------------------------------------------</br>"
    ;
      }
      
    ?>
    </body>
    </html>
    vi ringrazio ancora una volta per la tempestività e l'enorme aiuto che date a chi come me è alle prime armi!

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.