- Home
- Categorie
- Coding e Sistemistica
- Coding
- La tabella non si aggiorna
-
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]
-
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]
-
Fatto .... però il risultato è sempre il medesimo.
La tabella non si aggiorna. Infatti la risposta è:
Modificati 0 records
-
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]
-
Di nuovo.... medesima risposta
-
Hai provato a stampare $id?
Perchè la sintassi ora è corretta, ma non trova un record con quell'id.
-
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?
-
Devi semplicemente fare :
[php]
echo $id;
[/php]Dove c'è la query.
-
Ok ho aggiunto.
La risposta è quasi simile alla precedente7Modificati: 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)
-
La sintassi della query è esatta, controlla che nella tabella ci sia un record avente come id 7.
-
Si c'è ...
-
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?
-
71Modificati: 0 records
se tolgo echo $id; la risposta è
1Modificati: 0 records
-
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.
-
Modificato come da tuoi suggerimenti ma la risposta è sempre
1Modificati: 0 recordsVuoi 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?
-
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.
-
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!!!!
-
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]
-
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
-
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?