Visualizzazione risultati 1 fino 8 di 8

Discussione: UPDATE non aggiorna i record

  1. #1
    Guest

    Predefinito UPDATE non aggiorna i record

    Ciao, descrivo velocemente il problema.
    Ho creato questa funzione molto semplice, se la variabile $_POST['aggiorna'] non è stata definita stampa un form, altrimenti elabora il codice che aggiornerà i record nella tabella.

    Lo script funziona in entrambi i casi, non dà nessun errore e continua l'esecuzione.. semplicemente dopo aver mandato i query al database corretto, tabella corretta e colonne corrette.. non aggiorna i record!

    Ecco il codice:

    Codice PHP:
    <?php
    function aggiorna() {

    if(!isset(
    $_POST['aggiorna'])){

    $nomeutente = $_SESSION['utente'];
    $queryaccount = "SELECT id, username, numerositi, ip, avatar, telefono, nome, cognome FROM utenti WHERE username = '$nomeutente'";
    $query = mysql_query($queryaccount);
    $account = mysql_fetch_array($query);
    $id = $account[0];


    echo
    "Benvenuto nelle impostazioni account <b>".$_SESSION['utente']."</b><br>Qui puoi gestire le impostazioni del tuo account e pubblicare eventuali portali!";

    echo
    "<h1> IMPOSTAZIONI ACCOUNT</h1>";
    echo
    "(Codice ID: $id)<pre>Nome : ".$account[6]."";
    echo
    "<br>Cognome : ".$account[7]."";
    echo
    "<br>Username: ".$account[1]." ";
    echo
    "<br>Siti web gestiti: ".$account[2]."";
    echo
    "<br>Indirizzo IP di registrazione: ".$account[3]."";
    echo
    "<br>Telefono: ".$account[5]."";
    echo
    "<br>Avatar: ".$account[4]."</pre>";
    echo
    "<p><i> Aggiorna i tuoi dati</i></p>";
    ?>
    <form method="post" action="account.php">
    <label for="nomeaggiornato">Nome</label><br>
    <input type="text" name="nomeaggiornato"><br><br>
    <label for="cognomeaggiornato">Cognome</label><br>
    <input type="text" name="cognomeaggiornato"><br><br>
    <label for="telefonoaggiornato">Telefono</label><br>
    <input type="text" name="telefonoaggiornato"><br>

    <input type="submit" name="aggiorna" value="Aggiorna dati" />
    </form>


    <?php

    echo "<br><br><h1> IMPOSTAZIONI SITO</h1>";

    } else {

    $nomeaggiornato = $_POST['nomeaggiornato'];
    $cognomeaggiornato = $_POST['cognomeaggiornato'];
    $telefonoaggiornato = $_POST['telefonoaggiornato'];

    mysql_query("UPDATE utenti SET telefono = '$telefonoaggiornato', nome = '$nomeaggiornato', cognome = '$cognomeaggiornato' WHERE id = '$id'") or die("ERRORE: ". mysql_error());
    echo
    "$nomeaggiornato <-Se visualizzi questo messaggio e il nome aggiornato l'errore non è del ciclo ma un'incomprensione col database";
    header("Refresh: 1; URL= account.php");

    }

    }
    ?>

  2. #2
    Guest

    Predefinito

    Credo sia dovuto al fatto che la variabile $id non è definita nel contesto in cui la usi.
    Tu definisci la variabile $id dentro il blocco dell'if e pretendi di usarla nell'else..
    Prova a metterla prima dell'if, e vedi se va.

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da tryphpnuke Visualizza messaggio
    Credo sia dovuto al fatto che la variabile $id non è definita nel contesto in cui la usi.
    Tu definisci la variabile $id dentro il blocco dell'if e pretendi di usarla nell'else..
    Prova a metterla prima dell'if, e vedi se va.
    Che errore da neofita.. pensavo di averla resa globale e neanche ho ricontrollato

  4. #4
    Guest

    Predefinito

    Ecco qua il codice ultimato.
    Funziona tutto, per comodità ho provato a dichiarare $id una sola volta come global.. ma non funziona >.<

    Comunque eccolo qui

    Codice PHP:
    <?php
    if(!isset($_POST['aggiorna'])){

    $nomeutente = $_SESSION['utente'];
    $queryaccount = "SELECT id, username, numerositi, ip, avatar, telefono, nome, cognome, email FROM utenti WHERE username = '$nomeutente'";
    $query = mysql_query($queryaccount);
    $account = mysql_fetch_array($query);
    $id = $account[0];

    //TESTO TAGLIATO
    <form method="post" action="account.php">
    <
    label for="nomeaggiornato">Nome</label><br>
    <
    input type="text" name="nomeaggiornato" value="<?php
    echo
    $account[6];
    ?>"
    ><br><br>
    <
    label for="cognomeaggiornato">Cognome</label><br>
    <
    input type="text" name="cognomeaggiornato" value="<?php
    echo
    $account[7];
    ?>"
    ><br><br>
    <
    label for="telefonoaggiornato">Telefono</label><br>
    <
    input type="text" name="telefonoaggiornato" value="<?php
    echo
    $account[5];
    ?>"
    ><br>

    <
    input type="submit" name="aggiorna" value="Aggiorna dati" />
    </
    form>


    <?
    php

    //TESTO TAGLIATO

    } else {

    $nomeutente = $_SESSION['utente'];
    $queryaccount = "SELECT id, username FROM utenti WHERE username = '$nomeutente'";
    $query = mysql_query($queryaccount);
    $account = mysql_fetch_array($query);
    $id = $account[0];

    $nomeaggiornato = $_POST['nomeaggiornato'];
    $cognomeaggiornato = $_POST['cognomeaggiornato'];
    $telefonoaggiornato = $_POST['telefonoaggiornato'];


    mysql_query("UPDATE utenti SET telefono = '$telefonoaggiornato', nome = '$nomeaggiornato', cognome = '$cognomeaggiornato' WHERE id = '$id'") or die("ERRORE: ". mysql_error());
    echo
    "$nomeaggiornato Hai aggiornato i tuoi dati con successo, sarai reindirizzato prima possibile";
    header("Refresh: 1; URL= account.php");

    }
    Ultima modifica di elocus : 04-06-2012 alle ore 14.20.00

  5. #5
    Guest

    Predefinito

    Non è tanto se globale o meno.
    Il problema è che lavorizzi la variabile dentro il blocco IF, quindi se ricadi nel caso ELSE, $id = $account[0] non sarà eseguito e quindi la variabile non avrà valore.

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Non è tanto se globale o meno.
    Il problema è che lavorizzi la variabile dentro il blocco IF, quindi se ricadi nel caso ELSE, $id = $account[0] non sarà eseguito e quindi la variabile non avrà valore.
    La domanda è: Come rendo globale una variabile fatta in un blocco IF e renderla quindi disponibile in ELSE?

  7. #7
    Guest

    Predefinito

    Così (cioè non facendola nell'if):
    Codice PHP:
    $id = 123456;
    if (
    $condizione) {
    # ...
    } else {
    # ...
    }
    Tanto, se deve assumere lo stesso valore sia nell'if che nell'else, è logicamente più chiaro dichiararla prima.

    EDIT: anche perché la parte di codice presente nel blocco dell'if viene eseguita solo quando $condizione == true, quindi se viene eseguito l'else, tutto il codice in if viene ignorato.
    Ultima modifica di tryphpnuke : 04-06-2012 alle ore 19.08.39

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da tryphpnuke Visualizza messaggio
    Così (cioè non facendola nell'if):
    Codice PHP:
    $id = 123456;
    if (
    $condizione) {
    # ...
    } else {
    # ...
    }
    Tanto, se deve assumere lo stesso valore sia nell'if che nell'else, è logicamente più chiaro dichiararla prima.

    EDIT: anche perché la parte di codice presente nel blocco dell'if viene eseguita solo quando $condizione == true, quindi se viene eseguito l'else, tutto il codice in if viene ignorato.
    Grazie mille molto chiaro :) Risolto, grazie!

Regole di scrittura

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