Php non inserisce dati in db mysql

Ciao a tutti! Sono contento! Ho realizzato una sottospecie di sito per una completa amministrazione dei dati di un db richiesta da un esame di maturità di anni passati:fonzie: Sono riuscito a creare una pagina principale dalla quale si sceglie cosa effettuare, viene caricata la pagina scelta e poi si passa alla pagina del risultato in php dove poi è possibile tornare alla pagina principale:fonzie: L'unica cosa che non mi funziona è la modifica dei dati... riesco a farli eliminare, aggiungere, visualizzare ma non a modificarli anche se non mi da nessun errore ma i dati quando visualizzo il database sia in mysql che phpmyadmin è sempre identica la riga che modifico... ecco il listato:

<html>
<head>
<title>Pagina modifica</title>
<head>
<body>
<?php
$conn = mysql_connect("localhost","root","gt40forever");
if (! $conn)
{
echo "Errore connessione database";
}
$db = mysql_select_db("sdo");
if(!$db)
{
echo "Errore selezione database";
}
$codricovero = $_POST['c'];
$codosp= $_POST['1'];
$codpaz = $_POST['2'];
$datain = $_POST['3'];
$datadim = $_POST['4'];
$codtiporic = $_POST['5'];
$query = "UPDATE ricovero SET codosp = '$codosp', codpaz = '$codpaz', dataric ='$datain', datadim = '$datadim', codtipo = '$codtiporic' WHERE codric = 'codricovero';";

if (!$query)
{
echo "Errore inserimento query";
}
else
{
echo "Modifica effettuata al ricovero n° ".$codricovero;

}

?>

<a href = "paginiziale.html"> clicca qui per tornare alla pagina iniziale</a>

</body>
</html>

E' stata una buona esercitazione in via della prova scritta d'esame che ho venerdì... Sono veramente contento però non riesco a capire perchè non riesco a modificare i dati:confused:

Mi sapete dire dove sbaglio?
Grazie!:beer:
 
Ciao! Grazie sempre del tuo puntuale soccorso!:) L'ho cambiato ma non mi modifica lo stesso una riga a piacere...

Ecco il listato ora:

<html>
<head>
<title>Pagina modifica</title>
<head>
<body>
<?php
$conn = mysql_connect("localhost","root","gt40forever");
if (! $conn)
{
echo "Errore connessione database";
}
$db = mysql_select_db("sdo");
if(!$db)
{
echo "Errore selezione database";
}
$codricovero = $_POST['c'];
$codosp= $_POST['1'];
$codpaz = $_POST['2'];
$datain = $_POST['3'];
$datadim = $_POST['4'];
$codtiporic = $_POST['5'];
$query = "UPDATE ricovero SET codosp = '$codosp', codpaz = '$codpaz', dataric ='$datain', datadim = '$datadim', codtipo = '$codtiporic' WHERE codric = '$codricovero'";

if (!$query)
{
echo "Errore inserimento query";
}
else
{
echo "Modifica effettuata al ricovero n° ".$codricovero;

}

?>

<a href = "paginiziale.html"> clicca qui per tornare alla pagina iniziale</a>

</body>
</html>


Però è strano, non mi da errore... Dice che la modifica è stata effettuata con successo...
 
ciao
avevo guardato il codice in fretta e la cosa più evidente ed "essenziale" mi era sfuggita

non hai messo mysql_query, puoi fare così
PHP:
//...........
$codtiporic = $_POST['5'];
$query = "UPDATE ricovero SET codosp = '$codosp', codpaz = '$codpaz', dataric ='$datain', datadim = '$datadim', codtipo = '$codtiporic' WHERE codric = '$codricovero'"; 
$uppa=mysql_query($query);
if (!$uppa)
{
echo "Errore inserimento query";
//..................

oppure più semplicemente

PHP:
$codtiporic = $_POST['5'];
$query = "UPDATE ricovero SET codosp = '$codosp', codpaz = '$codpaz', dataric ='$datain', datadim = '$datadim', codtipo = '$codtiporic' WHERE codric = '$codricovero'"; 
if (!mysql_query($query))
{
echo "Errore inserimento query";
//..................
 
Uuuuuuuuuuuuu, è vero!!!!!!!!!!!! Non c'è mysql_query dopo l'inserimento della query in $query!!!!!!!!!!!!! Che sbadato!!!!!!!! E non me ne sono accorto!:D Grazie ! Grazie ancora per il tuo aiuto!:beer:

Solo che ora è uscito l'errore dell'inserimento della query... uffffffff

Ecco il listato modificato:

<html>
<head>
<title>Pagina modifica</title>
<head>
<body>
<?php
$conn = mysql_connect("localhost","root","gt40forever");
if (! $conn)
{
echo "Errore connessione database";
}
$db = mysql_select_db("sdo");
if(!$db)
{
echo "Errore selezione database";
}
$codricovero = $_POST['c'];
$codosp= $_POST['1'];
$codpaz = $_POST['2'];
$datain = $_POST['3'];
$datadim = $_POST['4'];
$codtiporic = $_POST['5'];
$query = "UPDATE ricovero SET codosp = '$codosp', codpaz = '$codpaz', dataric ='$datain', datadim = '$datadim', codtipo = '$codtiporic' WHERE codric = '$codricovero'";
$res = mysql_query($query);
if (!$res)
{
echo "Errore inserimento query";
}
else
{
echo "Modifica effettuata al ricovero n° ".$codricovero;

}

?>

<a href = "paginiziale.html"> clicca qui per tornare alla pagina iniziale</a>

</body>
</html>


A me sembra corretta la query... Ma non servono per forza tutti i valori, vero? posso inserire solo quelli da modificare, vero?
 
ciao
posso inserire solo quelli da modificare, vero?
SI

due cose
metti dop la $query il solito

PHP:
$query = "UPDATE ricovero SET codosp = '$codosp', codpaz = '$codpaz', dataric ='$datain', datadim = '$datadim', codtipo = '$codtiporic' WHERE codric = '$codricovero'"; 
var_dump($query);
$res = mysql_query($query);

e verifica che sia giusta

secondo
verifica che tra query e tabella i nomi corrispondano (anche minuscole/maiuscole) e verifica che per caso tu non abbia alcune variabili vuote e che il corrispondente campo non sua NOT NULL, se un valore è vuoto ed il campo NOT NUL non fai l'uppatura
 
Ecco il risultato:

string(108) "UPDATE ricovero SET codosp = '1', codpaz = '1', dataric ='', datadim = '', codtipo = '1' WHERE codric = '4';" Errore inserimento query clicca qui per tornare alla pagina iniziale


gli unici NOT NULL sono codosp, codpaz, codtipo, codric. Gli altri di default sono NULL. Corrispondono maiuscole/minuscole, i dati a quanto pare passano... Non riesco a capire perchè mi da errore:gun::incazz2:
 
ciao
Errore inserimento query clicca qui per tornare alla pagina iniziale
se i dati passano (quindi la query è giusta) come mai non vedi l'errore?
ricordati che i computer non fanno quello che vorresti che facessero, ma quello chi gli dici difare:rolleyes:

guarda bene
1. dove hai messo l'istruzione
HTML:
<a href = "paginiziale.html"> clicca qui per tornare alla pagina iniziale</a>
essendo fuori dell'if viene sempre eseguita
2. la negazione di TRUE è FALSE, quindi se la query va a buon fine $res=TRUE
ma !$res vuol dire che se NON è TRUE (cioè è FALSE) esegue il primo if e non l'else, (un po' arzigogolato ma fa parte della logica binaria)
metti if($res){....


p.s.
poi per favore NON facciamo politica
 
Ciao! Mi ritrovo pienamente con quello che hai detto tu. Se è false esegue il primo if mentre se è vera esegue l'else. Quindi se la query fosse andata a buon fine, eseguirebbe l'else, no?:confused:

<a href = "paginiziale.html"> clicca qui per tornare alla pagina iniziale</a>
l'ho messo apposta dopo l'if per consentirmi di ritornare alla pagina iniziale indipendentemente dal risultato.:fonzie:
 
ciao
Se è false esegue il primo if mentre se è vera esegue l'else
si è giusto
mi sono accorto di una cosa guardando il tuo var_dump

string(108) "UPDATE ricovero SET codosp = '1', codpaz = '1', dataric ='', datadim = '', codtipo = '1' WHERE codric = '4';"

c'è un ; che non dovrebbe esserci, guarda da dove ti salta fuori e toglilo
 
Uffyyyyyyyyyyyyyyyyyyy, ho tolto anche quello e mi da lo stesso errore!:

string(107) "UPDATE ricovero SET codosp = '1', codpaz = '1', dataric ='', datadim = '', codtipo = '1' WHERE codric = '4'" Errore inserimento query clicca qui per tornare alla pagina iniziale

Eccoti la tabella:

mysql> describe ricovero;
+---------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+----------------+
| codric | int(11) | NO | PRI | NULL | auto_increment |
| codosp | int(11) | NO | MUL | NULL | |
| codtipo | int(11) | NO | MUL | NULL | |
| dataric | varchar(20) | YES | | NULL | |
| datadim | date | YES | | NULL | |
| codpaz | int(11) | NO | MUL | NULL | |
+---------+-------------+------+-----+---------+----------------+
6 rows in set (0.03 sec)

mysql>
 
ciao,
mi è venuto "un" piccolo dubbio:
1.come fai l'insert della tabella?
2. codric è primary_key?

guardando la tabella con adminmysql risulta gia un record con codric = '4' ? perchè se non c'è non uppa.

ti chiedo questo perchè da quanto vedo non dovrebbero esserci errori e non vorrei che si perdesse la testa cercando in uppa quando l'errore è a monte
 
Ciao! Questo è il listato dell'inserimento di un ricovero(la pagina php) e funziona:

<html>
<head>
<title> Aggiunto ricovero </title>
</head>
<body>
<h4> Aggiunto ricoverato con i seguenti valori</h4><br><br>

<?php
$conn = mysql_connect("localhost","root","gt40forever");
if (!$conn)
{
echo "Errore connessione database";
exit();
}
$db = mysql_select_db("sdo");
if (!$db)
{
echo "Errore selezione database";
exit();
}
$codosp= $_POST['1'];
$codpaz = $_POST['2'];
$datain = $_POST['3'];
$datadim = $_POST['4'];
$codtiporic = $_POST['5'];
$query = "INSERT INTO ricovero (codosp, codtipo, dataric, datadim, codpaz) VALUES ('$codosp','$codtiporic','$datain','$datadim','$codpaz');";
$res = mysql_query($query);
if (!$res)
{
echo "Errore esecuzione query";
}
else
{
echo "Codice ospedale : ".$codosp;
echo ("<br>");
echo "Codice paziente : ".$codpaz;
echo ("<br>");
echo "Data inizio ricovero : ".$datain;
echo ("<br>");
echo "Data dimissione ricoverato :".$datadim;
echo ("<br>");
echo "Codice tipo ricovero : ".$codtiporic;
echo ("<br>");

}

?>

Per tornare alla pagina principale clicca <a href = "paginiziale.html">qui</a>

</body>
</html>


codric è primary_key. Sisi, già risulato un codric = 4. Da 3 fino a 12 ci stanno i codric.
 
ciao
proviamo l'ultimo tentativo

prova a togliere

WHERE codric = 4
gli apici al 4, il mio manuale dice che se è un intero non "servirebbero" (attenzione non dice che non ci vogliono)
io normalmente li utilizzo, ma forse mi vanno sempre bene in quanto io prelevo la condizione da $_POST che restituisce una stringa per cui
$condizione=$_POST['condizione'];
WHERE codric = '$condizione'
è corretto:confused:

se non va così non so più che pesci pigliare
 
Ciao! Ho provato... Niente... Ma in teoria dovrebbe essere corretto il listato, vero? Se così, non fa niente:fonzie: L'importante che posso prenderlo come esempio per l'esame:fonzie: Grazie per il tuo puntuale aiuto (come sempre:D):fonzie:
 

Discussioni simili