• 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?


  • User

    Ecco il codice completo

    [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'];

    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'";

    echo mysql_num_rows(mysql_query("SELECT id FROM rubrica where id='$id'"));

    if(mysql_query($query)== true)
    {
    echo "Modificati: ",mysql_affected_rows(), " records";
    }
    else
    {
    echo "Errore:" . mysql_error();
    }
    $dbResult = mysql_query($query, $db) or die(mysql_error());
    $AffectedRows = mysql_affected_rows($db);

    if ($AffectedRows!=1)
    {
    print("<h3>Il record è stato aggiornato</h3>");
    print("<a href="query.php"><img src="http://www.giorgiotave.it/forum/images/vedi.jpg" border="0"></a><br><br><br>");
    print("<a href="logout.php"><img src="http://www.giorgiotave.it/forum/images/logout.jpg" border="0"></a>");
    }
    mysql_close($db);
    }
    ?>
    </body>
    </html>
    [/php]

    e scusa la mia beata ignoranza 🙂 ma come si fa a lanciare da PHPMyAdmin? 😊


  • ModSenior

    Apri il phpmyadmin, selezioni il database da sinistra, al centro in alto trovi SQL, li incolli quella query e fai esegui.

    EDIT:
    Non ho controllato tutto ciò che c'è prima, visto che la query la stampa si spera corretta, se hai provato a mettere ovunque i campi vuoti.
    Ti sei perso una variabile durante le modifiche fai cosi:
    [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'];

    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'";

    echo mysql_num_rows(mysql_query("SELECT id FROM rubrica where id='$id'"));
    $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'";

    if(mysql_query($query)== true)
    {
    echo "Modificati: ",mysql_affected_rows(), " records";
    }
    else
    {
    echo "Errore:" . mysql_error();
    }
    $dbResult = mysql_query($query, $db) or die(mysql_error());
    $AffectedRows = mysql_affected_rows($db);

    if ($AffectedRows!=1)
    {
    print("<h3>Il record è stato aggiornato</h3>");
    print("<a href="query.php"><img src="http://www.giorgiotave.it/forum/images/vedi.jpg" border="0"></a><br><br><br>");
    print("<a href="logout.php"><img src="http://www.giorgiotave.it/forum/images/logout.jpg" border="0"></a>");
    }
    mysql_close($db);
    }
    ?>
    </body>
    </html>
    [/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'1Modificati: 0 records

    Io non ce la faccio più ... e tu credo anche 😞 sto seriamente meditando di picchiare la testa su uno spigolo ...


  • ModSenior

    Anche lanciando dal phpmyadmin non modifica nulla?
    Prova a lanciare questa query dal phpmyadmin:
    [php]
    update rubrica set promotore='' where id='7'
    [/php]
    E vedi se cosi modifica.


  • User

    Righe interessate: 0 (La query ha impiegato 0.0002 sec)


  • ModSenior

    :bho:
    Lanciando dal phpmyadmin:
    [php]
    SELECT * FROM rubrica where id='7'
    [/php]
    Prima lo abbiamo fatto da php e trovava il record con id 7, ma se non modifica l'unica cosa è che non c'è un record con id 7.


  • User

    Visualizzazione record 0 - 0 (1 Totali, La query ha impiegato 0.0003 sec)
    eppure io lo vedo in PHPMyAdmin


  • ModSenior

    Non saprei dare una spiegazione a ciò.


  • User

    Beh, senti... in ogni caso sei stato più che gentilissimo e ti ringrazio molto per tutto il tempo che mi hai dedicato! Sei un grande :figo2:


  • User Attivo

    Ciao,
    non ho riletto tutti i post, sto guardando solo gli ultimi... vediamo se riassumo bene

    Hai eseguito la query:

    update rubrica set promotore='' where id='7'
    

    ed il risultato è stato:
    Righe interessate: 0 (La query ha impiegato 0.0002 sec)

    Hai eseguito la query:

    SELECT * FROM rubrica where id='7' 
    ```ed il risultato è stato:
    Visualizzazione record 0 - 0 (1 Totali, La query ha impiegato 0.0003 sec)
     
    Quindi, ricapitolando, il record con ID 7 è presente nel database e viene trovato, ma la query di aggiornamento non sembra aggiornarlo.
     
    Domanda:
    Che valore ha il campo "promotore" per il record con ID=7 ?
     
    Perchè mysql_affected_rows() ti segnala il numero di record effettivamente modificati. 
    Ovvero, se modifici un record inserendo per i campi valori che ha già, nessuna riga viene modificata e il risultato è appunto 0.
     
    Alessandro

  • User

    Grazie Magicale per il tuo interessamento.
    Purtroppo esiste questo problema.
    Se tutti i campi del form vengono riempiti, l'inserimento dei dati nel database funziona benissimo.
    Il problema si ha quando si tenta di modificare uno qualsiasi dei dati che hai visto.
    A quel punto il risultato è che non viene modificato quel campo da te digitato nuovamente (cioè per esempio voglio cambiare il nome dell'azienda perchè ha cambiato ragione sociale) ma tutti i valori presenti in quella riga (cioè in quel ID) vengono cancellati .... tranne il numero di ID.

    Quindi se tenti di inserire nuovamente i dati, anche parzialmente, non si ottiene alcun aggiornamento.

    Pertanto, per rispondere alla tua domanda, non c'è alcun valore nel campo "promotore" .... ma neanche in tutti gli altri.


  • User Attivo

    Ciao,
    ho creato sul mio db locale una tabella con gli stessi campi. Ho creato una pagina copiando l'ultima versione del codice che ti ha postato Thedarkita e l'ho testata. L'unica cosa che posso dirti è che accade quanto presumevo: funziona tutto correttamente.

    Non so che altro dirti. L'unico controllo che mi viene di suggerirti è fare un
    [php]var_dump($_REQUEST);[/php]
    subito prima o dopo dell'echo della query. Giusto per verificare che i dati arrivino correttamente alla pagina.

    Alessandro


  • User

    Alessandro,
    grazie per il tuo aiuto.
    Non riesco a capire perchè a me non funziona.
    Ho aggiunto la riga di codice che hai suggerito e questo è il risultato:

    update rubrica set promotore='', nome_azienda='', settore='', città='', indirizzo='', nome_contatto='', telefono='', email='', sede_estero='', azioni='', progressione='', risultato_finale='', note='' where id='8'1array(16) { ["id"]=> string(1) "8" ["Promotore"]=> string(5) "pippo" ["Nome_azienda"]=> string(5) "Apple" ["Settore"]=> string(11) "Informatica" ["Città"]=> string(9) "Cupertino" ["Indirizzo"]=> string(15) "1 Infinite Loop" ["Nome_contatto"]=> string(10) "Steve Jobs" ["Telefono"]=> string(16) "001 212 555 4433" ["Email"]=> string(15) "[email protected]" ["Sede_estero"]=> string(14) "California USA" ["Azioni"]=> string(8) "azione 1" ["Progressione"]=> string(8) "azione 2" ["Risultato_finale"]=> string(8) "azione 3" ["Note"]=> string(4) "note" ["confirm"]=> string(1) "1" ["PHPSESSID"]=> string(32) "a7157b78fcd4e275f0c13751de9ca0fa" } Modificati: 0 records

    Come vedi i dati che ho messo nel form ci sono ma nell'output non si vede nulla e comunque ciò che ho postato appena qui spra è un errore ....
    guardate, io vi ringrazio ancora per la pazienza ma a questo punto mi affido alla vostra clemenza ....


  • User Attivo

    Beh... direi che almeno ora il problema è diventato evidente 😄

    L'inghippo è nei nomi dei campi della tabella.
    Li hai scritti con l'iniziale maiuscola e quando li recuperi con mysql_fetch_field() vengono letti esattamente come li hai scritti, ovvero con, appunto, l'iniziale maiuscola.
    Di conseguenza il name dei campi input ha l'iniziale maiuscola e quando li recuperi facendo ad esempio:
    [PHP]
    $promotore=$_REQUEST['promotore'];
    [/PHP]
    non viene letto alcun dato, perchè in realtà esso si trova in
    [PHP]
    $promotore=$_REQUEST['Promotore'];
    [/PHP]

    Hai due possibili modi per correggere:

    1. sul database: editare tutti i nomi dei campi della tabella togliendo l'iniziale maiuscola (è quello che ti consiglio di fare)
    2. sul codice php: modificare la lettura dei dati mettendo l'iniziale maiuscola alle chiavi dell'array $_REQUEST

    Alessandro


  • User

    FANTASTICO ALESSANDRO !!!
    Hai ragione!
    Ho sostituito le iniziali maiuscole con le minuscole nel database e funziona!
    Inoltre ho rimosso

    var_dump($_REQUEST);

    perchè altrimenti mi dava una risposta strana e finalemnte la tabella si aggiorna !!!

    YAHOOO!!!!! :vaiii::yuppi:

    Se posso approfittare della tua cortesia adesso vorrei risolvere gli ultimi due problemi e poi il risultato è perfetto:

    1. Alla pagina dove viene mostrata la tabella ci si arriva tramite una pagina di login dove bisogna inserire username e password.
      Purtroppo ci si accede anche digitando direttamente l'url di quella pagina, by-passando così la pagina di login.
      Domanda:
      è possibile fare in modo che se si digita direttamente l'url della pagina contenente la tabella, si abbia una risposta del tipo "Non sei autorizzato ad accedere direttamente a questa pagina. Clicca qui per fare il login" e rimandare l'utente obbligatoriamente alla pagina di login?
      Naturalmente se ci si arriva "una volta che hai già fatto il login" quella risposta non deve esserci...

    2. le caselle della tabella hanno una larghezza determinata dalla lunghezza del titolo.
      Per esempio, "nome_azienda" ha una casella più larga di "indirizzo" però l'indirizzo è solitamente più lungo di un nome di azienda.
      Ovviamente se al posto di "indirizzo" ci metto "indirizzo_della_azienda" la casella mi si allarga ma questo comporterebbe rifare il codice di parecchie pagine.
      Domanda:
      c'è modo di allargare le dimensione della casella senza dovere mettere mano al nome della casella stessa?

    Grazie ancora e confido ancora una volta nel tuo preziosissimo aiuto 😄