- Home
- Categorie
- Coding e Sistemistica
- Coding
- Come modificare un campo record?
-
Per le tabelle differenti te l'ho detto, quello era uno script non aggiornato, dato che dietro di me avevo solo la penna, ma in quello originale coindidono, infatti funziona perfettamente.
-
Ciao! Ecco la pagina modifica_dati_clienti.php intera
Gli ho aggiunto l'isset.
[php]<?php
// Dati connessione al database
$db_host = 'localhost'; // Host - solitamente localhost
$db_utente = 'root'; // Nome utente del Database
$db_password = ''; // Password del Database
$db_nomedb = ''; // Nome del Database
// Effettua la connessione al database
$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_nomedb);if (isset($_POST['id_cl']) && !empty($_POST['id_cl'])) {
$id=$_POST['id_cl'];
$cognome=$_POST['cognome'];
$nome=$_POST['nome'];
$query=mysql_query("UPDATE inserimento_dati SET cognome = '$cognome', nome = '$nome' WHERE id_cl = '$id_cl'");
$risultato = mysql_query($query) or die ("Query "$query" fallita ::: ".mysql_error());
echo "update eseguito";
}
else {
?>
<form method="post" action="modifica_dati_clienti.php">
<input type="hidden" name="id_cl"><br />
NOME <input type="text" name="nome"><br />
COGNOME <input type="text" name="cognome"><br />
<input type="submit" value="Invia" />
</form>
<?php } ?>
[/php]Non mi dà nessun errore, nè warning nè notice, mi fà compilare il form e mi rimanda al form, come da richiesta se l'update non è stato eseguito.
-
Perciò ora non ti da nessun errore ma non ti modifica i campi?
Nella tabella c'è il record con quell'id?
-
Nella tabella db c'è id_cl, nome e cognome...PINCO PALLO...ma non modifica nulla...mi riporta al form...
-
Ah, ti rimostra proprio il form.
Prova cosi:
[php]
<?php
// Dati connessione al database
$db_host = 'localhost'; // Host - solitamente localhost
$db_utente = 'root'; // Nome utente del Database
$db_password = ''; // Password del Database
$db_nomedb = ''; // Nome del Database
// Effettua la connessione al database
$dbh=mysql_connect ($db_host, $db_utente, $db_password) or die ('Errore nella stringa di connessione al database: '.mysql_error());
mysql_select_db($db_nomedb);if(isset($_POST['nome'])) {
$id=$_POST['id_cl'];
$cognome=$_POST['cognome'];
$nome=$_POST['nome'];
$query=mysql_query("UPDATE inserimento_dati SET cognome = '$cognome', nome = '$nome' WHERE id_cl = '$id_cl'");
$risultato = mysql_query($query) or die ("Query "$query" fallita ::: ".mysql_error());
echo "update eseguito";
}
else {
?>
<form method="post" action="modifica_dati_clienti.php">
<input type="hidden" name="id_cl"><br />
NOME <input type="text" name="nome"><br />
COGNOME <input type="text" name="cognome"><br />
<input type="submit" value="Invia" />
</form>
<?php } ?>
[/php]
Ma comunque $_POST['id_cl'] non ha alcun valore perchè l'input non ha alcun value perciò non potrà fare l'update di niente.
-
Mi rimostra sempre il form...
-
Non può essere, ma questa pagina si chiama modifica_dati_clienti.php?
-
No, scusami, mi dice:
Notice: Undefined variable: id_cl in c:\programmi\easyphp1-8\www\modifica_dati_clienti.php on line 15
Query "" fallita ::: La query e` vuotaMa perchè è vuota???
-
Te l'ho scritto prima:
$_POST['id_cl'] non ha alcun valore perchè l'input non ha alcun value perciò non potrà fare l'update di niente.
-
Avevo scritto male la pagina...una lettera digitata in più...scusami...ora:
Notice: Undefined variable: id_cl in c:\programmi\easyphp1-8\www\modifica_dati_clienti.php on line 15
Query "1" fallita ::: Errore di sintassi nella query SQL vicino a '1' linea 1
-
Ma il problema è l'id_cl? bisogna dagli un value? non credo...:?
-
Se non gli dai un value cosa vuoi passare? Passi una variabile senza valore...
-
Comunque nel codice mancava il "cl"...ora non mi dà più il notice...ma il resto come lo si risolve?
-
Ma anche il nome e cognome non hanno un value...o sbaglio?
-
L'id da qualche parte devi tenertelo...
Solitamente si passa in GET alla pagina, tipo voglio modificare l'utente con ID 3 uso la pagina modifica.php?id=3
E mi recupero l'id con $_GET['id'].
-
Il nome e cognome viene inserito manualmente perciò il value non serve, anche perchè non è usato come condizione nella query è può avere come valore una stringa vuota.
-
Ma quindi è impossibile fare quello che vorrei fare...cioè cliccare semplicemente sul cognome da modificare e modificarlo...
Se lo devo fare con GET tanto vale non è più semplice farlo attraverso il db?
-
Tornando al discorso di prima...mi dà errore nella query:
Query "1" fallita ::: Errore di sintassi nella query SQL vicino a '1' linea 1
-
Ciao!!!
Ho un pò letto e guarda il codice che ovviamente non và, però penso che io abbia imboccato la strada giusta...
Quando clicco sul cognome (vedo che mi dà id_cl progressivo per cliente) clicco sul cognome ma mi dà questo errore:
Query 'SELECT nome, cognome FROM inserimento_dati where id_cl=>2 ACCETTATO DA: <a href= LIMIT 1' fallita
" . mysql_error() );
$inserimento_dati = mysql_fetch_array( $risultato );
[/PHP]Poi ho la pagina modifica_dati_clienti.php
[PHP]<form method="post" action="">
<input type="hidden" name="id_cl" value="<?php echo $id_cl; ?>"><br />
NOME <input type="text" name="nome" value="<?php echo $inserimento_dati['nome']; ?>" ><br />
COGNOME <input type="text" name="cognome" value=$inserimento_dati['cognome']; ?>" ><br />
<input type="submit" value="Invia" />
</form>
<?php
if (isset($_POST['submit']) && !empty($_POST['id_cl'])) {
$id_cl=$_POST['id_cl'];
$cognome=$_POST['cognome'];
$nome=$_POST['nome'];
$query=mysql_query("UPDATE inserimento_dati SET cognome = '$cognome', nome = '$nome' WHERE id_cl = '$id_cl'");
$risultato = mysql_query($query) or die ("Query "$query" fallita ::: ".mysql_error());
echo "update eseguito";
}
else {
echo "impossibile procedere con l'update";
}
?>
[/PHP]
E mi dice impossibile procedere con l'update.
Grazie moltissime per la pazienza!
-
Modifica la query
[php]$query = "SELECT nome, cognome FROM inserimento_dati where id_cl=".$id_cl." LIMIT 1";
Così :[/php]
[php]$query = "SELECT nome, cognome FROM inserimento_dati WHERE id_cl='".$id_cl."' LIMIT 1"; [/php]