Visualizzazione risultati 1 fino 7 di 7

Discussione: Funzione di aggiornamento con query UPDATE

  1. #1
    Guest

    Predefinito Funzione di aggiornamento con query UPDATE

    Buongiorno,
    stò cercando di fare una pagina per aggiornare i prodotti già presenti nel database, ma non riesco a far funzionare la pagina in questione.
    Vi posto il codice e spero che sia veramente l'ultima cosa che chiederò.
    Un grazie in anticipo.

    Form per inserimento nuovi dati:
    Codice PHP:
    <?
    @include 'aggiorna_offerta.php';
    echo
    "
    <br />
    <FONT COLOR=\"WHITE\" face=\"Arial, Helvetica\">Prezzo prodotto in offerta (massimo 10 caratteri)</font>
    <br />
    <input type=\"text\" maxlength=\"10\" SIZE=\"10\" name=\"prezzo\" />
    <br />
    <br />
    <FONT COLOR=\"WHITE\" face=\"Arial, Helvetica\">Indice di qualita' (massimo 30 caratteri)</font>
    <br />
    <input type=\"text\" maxlength=\"30\" SIZE=\"30\" name=\"indice\" />
    <br />
    <br />
    <br />
    <FONT COLOR=\"WHITE\" face=\"Arial, Helvetica\">Nome Prodotto</font>
    <br />
    <input type=\"text\" maxlength=\"300\" name=\"nome_prodotto\" />
    <br />
    <br />
    <FONT COLOR=\"WHITE\" face=\"Arial, Helvetica\">Posizione in tabella</font>
    <br/>
    <SELECT NAME=\"id\">
    <OPTION VALUE=\"1\">1
    <OPTION VALUE=\"2\">2
    <OPTION VALUE=\"3\">3
    <OPTION VALUE=\"4\">4
    <OPTION VALUE=\"5\">5
    <OPTION VALUE=\"6\">6
    </SELECT>
    <br /><br/>

    <br /><br/>
    <input type=\"submit\" value=\"Invia\" />
    </form>
    "
    ;



    ?>

    Pagina aggiorna_offerta.php:

    Codice PHP:
    <?
    function aggiorna_offerta()
    {
    @include
    'config.php';
    $sql = "UPDATE offerte SET prezzo='$_POST[prezzo]', indice='$_POST[indice]', nome_prodotto='$_POST[nome_prodotto]' WHERE id='$_POST[id]'";
    $result = @mysql_query ($sql) or die (mysql_error());
    return
    true;
    echo
    "Prodotto modificato con successo";

    }
    ?>
    Grazie ancora

  2. #2
    plugsilverfree non è connesso Neofita
    Data registrazione
    02-12-2011
    Messaggi
    2

    Thumbs up Salve

    Io non essendo eccellente esperto in php é mysql ma pens0 che dovresti SELECT la tabella della tua database

    mysql_query("SELECT * FROM la tua tabella ") or die(mysql_error());

    e poi fare update

  3. #3
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,247

    Predefinito

    La UPDATE si può fare benissimo senza prima aver fatto una SELECT.

    Riguardo al codice:
    -manca il <form>
    -la funzione aggiorna_offerta() quando viene invocata?
    -Nella query, metti in variabili a doppi apici degli elementi dell'array $_POST. In quel caso, gli elementi vanno messi tra graffe. Vedi qui.

    In generale, ti consiglio di seguire un tutorial PHP per i form.

    Ciao!

  4. #4
    Guest

    Predefinito

    Intanto ringrazio per le risposte, quindi, gentilissimi grazie.

    Ho aggiunto il form ed effetivamente almeno quello ora percepisce i dati quando clicco invia.

    -la funzione aggiorna_offerta() quando viene invocata?
    Ho provato a far invocare la funzione ma ho seri problemi a farla funzionare.

    -Nella query, metti in variabili a doppi apici degli elementi dell'array $_POST. In quel caso, gli elementi vanno messi tra graffe.
    Non capisco in che senso messi fra graffe

    riposto il codice se può servire

    Codice PHP:
    <?
    @include 'aggiorna_offerta.php';

    if (isset (
    $_POST['A']))
    {
    aggiorna_offerta();
    }
    else{
    echo
    "
    <FORM>
    <br />
    <FONT COLOR=\"WHITE\" face=\"Arial, Helvetica\">Prezzo prodotto in offerta (massimo 10 caratteri)</font>
    <br />
    <input type=\"text\" maxlength=\"10\" SIZE=\"10\" name=\"prezzo\" />
    <br />
    <br />
    <FONT COLOR=\"WHITE\" face=\"Arial, Helvetica\">Indice di qualita' (massimo 30 caratteri)</font>
    <br />
    <input type=\"text\" maxlength=\"30\" SIZE=\"30\" name=\"indice\" />
    <br />
    <br />
    <br />
    <FONT COLOR=\"WHITE\" face=\"Arial, Helvetica\">Nome Prodotto</font>
    <br />
    <input type=\"text\" maxlength=\"300\" name=\"nome_prodotto\" />
    <br />
    <br />
    <FONT COLOR=\"WHITE\" face=\"Arial, Helvetica\">Posizione in tabella</font>
    <br/>
    <SELECT NAME=\"id\">
    <OPTION VALUE=\"1\">1
    <OPTION VALUE=\"2\">2
    <OPTION VALUE=\"3\">3
    <OPTION VALUE=\"4\">4
    <OPTION VALUE=\"5\">5
    <OPTION VALUE=\"6\">6
    </SELECT>
    <br /><br/>
    <input type=\"hidden\" name=\"A\"
    value=\"1\" />
    <br /><br/>
    <input type=\"submit\" name=\"submit\" value=\"Invia\" />
    </form>

    "
    ;

    }

    ?>
    funzione

    Codice PHP:
    <?
    function aggiorna_offerta()
    {



    @include
    'config.php';

    $sql = "UPDATE offerte SET prezzo='$_POST[prezzo]', indice='$_POST[indice]', nome_prodotto='$_POST[nome_prodotto]' WHERE id='$_POST[id]'";
    $result = @mysql_query ($sql) or die (mysql_error());
    return
    true;
    echo
    "Prodotto modificato con successo";

    }
    ?>
    Grazie ancora..

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,247

    Predefinito

    1-
    Codice HTML:
    <form>
    Deve avere un action e un method (che dovrebbe essere POST, visto che poi nel PHP leggi i dati con $_POST[].

    2-
    Codice PHP:
    $sql = "UPDATE offerte SET prezzo='$_POST[prezzo]', indice='$_POST[indice]', nome_prodotto='$_POST[nome_prodotto]' WHERE id='$_POST[id]'";
    teoricamente, sarebbe:
    [EDIT: vb la interpreta in modo errato!!]
    Codice PHP:
    $sql = "UPDATE offerte SET prezzo='{$_POST[\"prezzo\"]}', indice='{$_POST[\"indice\"]}', nome_prodotto='{$_POST[\"nome_prodotto\"]}' WHERE id='{$_POST[\"id\"]'}";
    Anche se io faccio:

    Codice PHP:
    $sql = 'UPDATE offerte SET prezzo='.$_POST['prezzo'].', indice='.$_POST['indice'].', nome_prodotto='.$_POST['nome_prodotto'].' WHERE id='.$_POST['id'];
    ...occhio ai dati passati: sei a rischio di sql injection! Dovresti prima passare tutti i dati di $_POST[] che utilizzi tramite la mysql_real_escape_string().

    Ultima nota: stai usando del codice molto obsoleto!. Ora il tag <font> non ha più motivo di esistere: si usano i contenitori html (<p>, <span>, <div>...) e si modifica lo stile con i css. Tutti quei <br> per spaziare sono brutti: anche qui potresti usare margin di css. Anche per il PHP, le funzioni mysql_ stanno diventando obsolete. Ora dovresti usare le funzioni mysqli_

    Ciao!
    Ultima modifica di alemoppo : 12-04-2013 alle ore 11.38.08

  6. #6
    Guest

    Predefinito

    C'ho riprovato ma niente...chiedo gentilmente se riuscite a linkarmi un esempio di quello che devo fare...perchè non capisco veramente come farlo funzionare.

    ..occhio ai dati passati: sei a rischio di sql injection! Dovresti prima passare tutti i dati di $_POST[] che utilizzi tramite la mysql_real_escape_string().
    Scusa se chiedo ma che danni possono farmi? al massimo vedono il nome del prodotto, non capisco cosa possano farci.


    Ultima nota: stai usando del codice molto obsoleto!
    grazie per avermelo fatto notare...son un po' indietro con gli aggiornamenti dei vari linguaggi...son fermo ad una preparazione scolastica di circa 4 anni fà....cercherò di migliorare

  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,247

    Predefinito

    Citazione Originalmente inviato da christianresine Visualizza messaggio
    C'ho riprovato ma niente...chiedo gentilmente se riuscite a linkarmi un esempio di quello che devo fare...perchè non capisco veramente come farlo funzionare.
    Non esiste un esempio del tuo script. Però cercando ad esempio "UPDATE mysql PHP" o simile, dovresti trovare materiale... e comunque sostituendo la query con quella che ti avevo fatto io, la funzione dovrebbe funzionare.
    Mi sono accorto che VB (=il cms di questo forum) rende la query che avevo scritto errata. L'ultima è comunque corretta. Quella sopra, no (ma non riesco a correggerla, perché io l'ho scritta comunque correttamente, ma viene visualizzata male) .

    Comunque, nel tag <form> è necessario impostare alcuni parametri. Quelli fondamentali e indispensabili sono "action" e "method". In action devi mettere la pagina a cui inviare i dati. Method puoi mettere o POST, o GET. (nel tuo caso, visto che usi $_POST[], devi mettere POST.

    Citazione Originalmente inviato da christianresine Visualizza messaggio
    Scusa se chiedo ma che danni possono farmi? al massimo vedono il nome del prodotto, non capisco cosa possano farci.
    In generale, non è bene far eseguire codice modificato a piacimento dall'utente. Volendo, si potrebbe anche far terminare la query e scriverne un'altra a piacimento del malintenzionato. Quindi potenzialmente potrebbe eliminare dati, tabelle, o corrompere dati.


    Citazione Originalmente inviato da christianresine Visualizza messaggio
    grazie per avermelo fatto notare...son un po' indietro con gli aggiornamenti dei vari linguaggi...son fermo ad una preparazione scolastica di circa 4 anni fà....cercherò di migliorare
    Mi sembra che fossi tu ad avermi contattato in pvt per questo. (non ricordavo di questo topic). Ma in generale, come vedo, sono le cose che ti ho detto: <font> (e tutto quello che ne deriva, come COLOR, FACE, ...), mysql_query(). Ah, ma ti avevo già risposto l'altra volta


    p.s: mi son accorto ora che in pratica ti ho ridetto le stesse cose della scorsa volta. Quindi se ancora non riesci, riscrivi il codice che hai corretto ma che ancora non funziona.

    Ciao!
    Ultima modifica di alemoppo : 12-04-2013 alle ore 11.39.45

Regole di scrittura

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