- Home
- Categorie
- Coding e Sistemistica
- Coding
- La tabella non si aggiorna
-
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?
-
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?
-
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]
-
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 recordsIo non ce la faccio più ... e tu credo anche
sto seriamente meditando di picchiare la testa su uno spigolo ...
-
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.
-
Righe interessate: 0 (La query ha impiegato 0.0002 sec)
-
: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.
-
Visualizzazione record 0 - 0 (1 Totali, La query ha impiegato 0.0003 sec)
eppure io lo vedo in PHPMyAdmin
-
Non saprei dare una spiegazione a ciò.
-
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
-
Ciao,
non ho riletto tutti i post, sto guardando solo gli ultimi... vediamo se riassumo beneHai 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
-
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.