• User

    La tabella non si aggiorna

    Ciao a tutti,
    so che non sarò il primo a dirlo ma ho un disperato bisogno di aiuto per risolvere un problema di codice PHP.
    Dato che non sono un genio di tale materia ma solo alle prime armi, spero mi possiate aiutare.

    Ho creato un database in MySQL che viene alimentato da un form in una pagina PHP che funziona perfettamente.
    L'output generato è una tabella con le sue celle perfettamente riempite con i dati forniti dal form appena menzionato e si auto-incrementa ogni volta che si aggiungono altri dati con questo form.

    Ho poi creato una pagina php per cancellare una riga della tabella nel caso in cui mi serva cancellare tutti i dati di quel "id" ( e conseguentemente il "id" stesso) ed un'altra pagina php per modificare i dati di una determinata riga della tabella.

    Nella tabella di fianco ad ogni "id" ci sono due link per le summenzionate pagine di cancellazione e modifica.

    La pagina di cancellazione funziona perfettamente ...... la pagina di modifica no!

    La risposta che ottengo è che i dati sono stati modificati ma in realtà se guardo la tabella (l'output) nella riga che ho scelto di modificare non è successo assolutamente nulla!

    Facendo l'upload della pagina di modifica non ottengo nessuna risposta di errore; quindi significa che il codice è giusto .... peccato che non fa il mestiere che dovrebbe fare e cioè modificare i dati di una specifica riga nel database.

    Qui di seguito il codice della pagina "incriminata". Dove sta l'errore ???

    Grazie grazie grazie grazie mille e mille per tutto l'aiuto che potrete darmi!

    [php]<?
    include ("config.inc.php");
    include ("top_foot.inc.php");

    //intestazione
    top();
    ?>
    <html><head>
    <title>Modifica di un record</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
    <!--
    body,td,th {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    }
    -->
    </style></head>
    <body>
    <?php
    $host = 'localhost' ;
    $user = 'user' ;
    $password = 'password' ;
    $db_name = 'database';

    $confirm=$_REQUEST['confirm'];
    $id=$_REQUEST['id'];

    $db = mysql_connect($host, $user, $password)
    or die ("Impossibile connettersi al server $host");

    mysql_select_db($db_name, $db)
    or die ("Impossibile connettersi al database $db_name");

    if (!$confirm)
    {

    $query = "select * from rubrica where id=$id";
    $dbResult = mysql_query($query, $db);
    $AffectedRows = mysql_affected_rows($db);

    if ($AffectedRows==0)
    {
    print("<h3>Non esistono record con i criteri selezionati</h3>");
    }
    else
    {

    mysql_data_seek($dbResult,0);

    $row=mysql_fetch_row($dbResult);

    print("<table>");
    print("<form method="post"action="{$_SERVER['PHP_SELF']}">");

    foreach ($row as $k => $v)
    {
    $myfield = mysql_fetch_field($dbResult,$k);
    print("<tr><td>$myfield->name</td>");
    print("<td><input type="text" value="" . $v . "" name="" . $myfield->name . "" size="100" maxlenght="100"></td></tr>");
    }

    print("<tr><td colspan="2"><input type="submit" value="Conferma modifiche"></td></tr> ");
    print("<input type="hidden" name="confirm" value="1">");
    print("</form>");
    print("</table>");

    mysql_free_result($dbResult);
    mysql_close($db);
    }
    }
    else
    {
    $promotore=$_REQUEST['promotore'];
    $nome_azienda=$_REQUEST['nome_azienda'];
    $settore=$_REQUEST['settore'];
    $città=$_REQUEST['città'];
    $indirizzo=$_REQUEST['indirizzo'];
    $nome_contatto=$_REQUEST['nome_contatto'];
    $telefono=$_REQUEST['telefono'];
    $email=$_REQUEST['email'];
    $sede_estero=$_REQUEST['sede_estero'];
    $azioni=$_REQUEST['azioni'];
    $progressione=$_REQUEST['progressione'];
    $risultato_finale=$_REQUEST['risultato_finale'];
    $note=$_REQUEST['note'];

    $query = "update rubrica set
    promotore="$promotore","
    . " nome_azienda="$nome_azienda","
    . " settore="$settore","
    . " città="$città","
    . " indirizzo="$indirizzo","
    . " nome_contatto="$nome_contatto","
    . " telefono="$telefono","
    . " email="$email","
    . " sede_estero="$sede_estero","
    . " azioni="$azioni","
    . " progressione="$progressione","
    . " risultato_finale="$risultato_finale","
    . " note="$note","
    . "where id=$id";
    $dbResult = mysql_query($query, $db);
    $AffectedRows = mysql_affected_rows($db);

    if ($AffectedRows!=0)
    {
    print("<h3>Il record è stato aggiornato</h3>");
    print("<h3><a href="query.php">Torna alla lista</a></h3>");
    }
    mysql_close($db);
    }
    ?>
    </body>
    </html>
    [/php]


  • ModSenior

    Ciao RockerC,

    Sostituisci:
    [php]
    $query = "update rubrica set
    promotore="$promotore","
    . " nome_azienda="$nome_azienda","
    . " settore="$settore","
    . " città="$città","
    . " indirizzo="$indirizzo","
    . " nome_contatto="$nome_contatto","
    . " telefono="$telefono","
    . " email="$email","
    . " sede_estero="$sede_estero","
    . " azioni="$azioni","
    . " progressione="$progressione","
    . " risultato_finale="$risultato_finale","
    . " note="$note","
    . "where id=$id";
    [/php]Con:

    [php]
    $query = "update rubrica set
    promotore="$promotore","
    . " nome_azienda="$nome_azienda","
    . " settore="$settore","
    . " città="$città","
    . " indirizzo="$indirizzo","
    . " nome_contatto="$nome_contatto","
    . " telefono="$telefono","
    . " email="$email","
    . " sede_estero="$sede_estero","
    . " azioni="$azioni","
    . " progressione="$progressione","
    . " risultato_finale="$risultato_finale","
    . " note="$note""
    . " where id='$id'";
    [/php]


  • User

    Fatto .... però il risultato è sempre il medesimo.
    La tabella non si aggiorna. Infatti la risposta è:
    Modificati 0 records 😞


  • ModSenior

    Guardando bene la query, mi sono accorto che la , finale non era l'unico errore.
    Prova cosi:
    [php]
    $query = "update rubrica set promotore='$promotore', nome_azienda='$nome_azienda', settore='$settore', città='$città', indirizzo='$indirizzo', nome_contatto='$nome_contatto', telefono='$telefono', email='$email', sede_estero='$sede_estero', azioni='$azioni', progressione='$progressione', risultato_finale='$risultato_finale', note='$note' where id='$id'";
    [/php]


  • User

    Di nuovo.... medesima risposta 😞


  • ModSenior

    Hai provato a stampare $id?
    Perchè la sintassi ora è corretta, ma non trova un record con quell'id.


  • User

    Perdonami, ma ho dei limiti nel PHP.
    Cosa intendi per stampare $id ?
    Capisco che si intenda un comando print ma in che modo devo scriverlo?


  • ModSenior

    Devi semplicemente fare :
    [php]
    echo $id;
    [/php]

    Dove c'è la query.


  • User

    Ok ho aggiunto.
    La risposta è quasi simile alla precedente

    7Modificati: 0 records

    dove 7 sta per il numero di id che ho tentato di modificare ma naturalmnte 0 records sta per il numero dei records che ha modificato (cioè 0)


  • ModSenior

    La sintassi della query è esatta, controlla che nella tabella ci sia un record avente come id 7.


  • User

    Si c'è ...


  • ModSenior

    Ti dirò che mi sembra impossibile.
    Allora dopo la query aggiunti:
    [php]
    echo mysql_num_rows(mysql_query("SELECT id FROM rubrica where id='$id'"));
    [/php]
    Che numero stampa questa volta?


  • User

    71Modificati: 0 records

    se tolgo echo $id; la risposta è

    1Modificati: 0 records


  • ModSenior

    Allora, la cosa è strana, modifica questo:
    [php]
    $query = "update rubrica set promotore='$promotore', nome_azienda='$nome_azienda', settore='$settore', città='$città', indirizzo='$indirizzo', nome_contatto='$nome_contatto', telefono='$telefono', email='$email', sede_estero='$sede_estero', azioni='$azioni', progressione='$progressione', risultato_finale='$risultato_finale', note='$note' where id='$id'";
    $dbResult = mysql_query($query, $db);
    [/php]
    In questo:
    [php]
    $query = "update rubrica set promotore='$promotore', nome_azienda='$nome_azienda', settore='$settore', città='$città', indirizzo='$indirizzo', nome_contatto='$nome_contatto', telefono='$telefono', email='$email', sede_estero='$sede_estero', azioni='$azioni', progressione='$progressione', risultato_finale='$risultato_finale', note='$note' where id='$id'";
    $dbResult = mysql_query($query, $db) or die(mysql_error());
    [/php]
    Vedi se da errore.
    L'unica cosa che mi viene in mente è che puoi avere i magic_quotes impostati a off nel php.ini, e in uno dei campi mandi un ' modificando cosi la query, anche se non sono molto convinto che il problema può essere questo.

    Evita di chiamare i campi con caratteri accentati ed anche le variabili. Al posto di città usa citta, può dare effetti indesiderati.


  • User

    Modificato come da tuoi suggerimenti ma la risposta è sempre
    1Modificati: 0 records

    Vuoi sapere una cosa carina?
    Se agisco direttamente in myPHPadmin a modifico uno dei records, vedo la modifica nella tabella nella pagina PHP nel mio browsers.

    Quando poi tento di modificarla tramite questa "simpatica" pagina di modifica il risultato è che i records vengono cancellati...

    Può esserti utile?


  • ModSenior

    La cosa strana è che c'è il record con quell'id, infatti il mysql_num_rows che abbiamo fatto lo conferma, la query non dà errore ma non modifica nulla.
    L'unica cosa che penserei in questo caso, è aver il nome di qualche campo che dià problemi.
    Stampa la query con:
    [php]
    echo "update rubrica set promotore='$promotore', nome_azienda='$nome_azienda', settore='$settore', città='$città', indirizzo='$indirizzo', nome_contatto='$nome_contatto', telefono='$telefono', email='$email', sede_estero='$sede_estero', azioni='$azioni', progressione='$progressione', risultato_finale='$risultato_finale', note='$note' where id='$id';
    [/php]
    E vedi lanciandola dal phpmyadmin che fà.

    Proverei a togliere anche dalla query la modifica del campo città, magari quella à da fastidio.

    Oltre questo francamente non sò più che dirti, perchè non trovo un altra spiegazione logica.


  • User

    Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/.........../............/............../................/modifica.php on line 93

    😞 Questo è ciò che ottengo ... naturalmente ho sostituito l'indirizzo completo con dei puntini per motivi di privacy ....

    ho rimesso tutto come prima e ho cancellato i parametri del campo "città" e naturalmente ottengo la solita risposta

    1Modificati: 0 records

    Waaaaaaa!!!! 😢


  • ModSenior

    Si errore mio, dovevi fare:
    [php]
    echo "update rubrica set promotore='$promotore', nome_azienda='$nome_azienda', settore='$settore', città='$città', indirizzo='$indirizzo', nome_contatto='$nome_contatto', telefono='$telefono', email='$email', sede_estero='$sede_estero', azioni='$azioni', progressione='$progressione', risultato_finale='$risultato_finale', note='$note' where id='$id'";
    [/php]


  • User

    update rubrica set promotore='', nome_azienda='', settore='', città='', indirizzo='', nome_contatto='', telefono='', email='', sede_estero='', azioni='', progressione='', risultato_finale='', note='' where id='7'1Errore:Query was emptyQuery was empty

    😞 😞 😞


  • ModSenior

    Query was empty?
    Puoi postare il codice completo, non vorrei che abbiamo fatto un pò di confusione con questi aggiungi qua e là.
    La query stampata se la lanci dal phpmyadmin dice record modificati 0?