Salve a tutti, io ed alcuni miei amici stiamo sviluppando un sito-web per un progetto universitario che sia in grado di gestire un Team di Formula 1. Abbiamo però vari problemi (che magari vi chiederò in seguito) ma quello che più ci affligge e l'UPDATE.
In pratica, abbiamo una tabella nel database denominata "Piloti" e all'interno vi sono gli attributi "Codice" , "Nome", "Cognome", "Codice_Fiscale", "Luogo_Nascita", "Data_Nascita", "Campionati_V", "Vittorie". Di cui Codice è l'ID identificativo del pilota ed è chiave primaria. Succede che se il campo Codice contiene solo numeri (ES. 01) la pagina UPDATE viene mostrata e la modifica funziona.
Nel caso in cui il campo Codice contiene valori come P001, mi vengono mostrati degli errori, ovvero:
e un errore di questo tipo per ogni attributo da modificare, di cui vi allego anche stamp
:
Il codice php che usiamo per l'update è il seguente:
Per prelevare l'ID il codice è questo:
Mentre il codice HTML del form che usiamo è il seguente :
Secondo voi dov'è che sbagliamo ? Spero di essere stato più completo possibile, così da permettervi di capire meglio dov'è il problema. Grazie mille a tutti in anticipo!
In pratica, abbiamo una tabella nel database denominata "Piloti" e all'interno vi sono gli attributi "Codice" , "Nome", "Cognome", "Codice_Fiscale", "Luogo_Nascita", "Data_Nascita", "Campionati_V", "Vittorie". Di cui Codice è l'ID identificativo del pilota ed è chiave primaria. Succede che se il campo Codice contiene solo numeri (ES. 01) la pagina UPDATE viene mostrata e la modifica funziona.
Nel caso in cui il campo Codice contiene valori come P001, mi vengono mostrati degli errori, ovvero:
Codice:
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\lsbteam.it\update_piloti.php on line
e un errore di questo tipo per ogni attributo da modificare, di cui vi allego anche stamp
Codice:
Notice: Undefined variable: Nome in C:\wamp64\www\lsbteam.it\update_piloti.php on line 108 Call Stack #TimeMemoryFunctionLocation 10.0008255312{main}( )...\update_piloti.php:0 ">
Notice: Undefined variable: Cognome in C:\wamp64\www\lsbteam.it\update_piloti.php on line 109 Call Stack #TimeMemoryFunctionLocation 10.0008255312{main}( )...\update_piloti.php:0 ">
Notice: Undefined variable: Codice_Fiscale in C:\wamp64\www\lsbteam.it\update_piloti.php on line 110 Call Stack #TimeMemoryFunctionLocation 10.0008255312{main}( )...\update_piloti.php:0 ">
Il codice php che usiamo per l'update è il seguente:
PHP:
<?php
// connessione al database
include_once("config.php");
if(isset($_POST['Aggiorna']))
{
$Codice = mysqli_real_escape_string($mysqli, $_POST['Codice']);
$Nome = mysqli_real_escape_string($mysqli, $_POST['Nome']);
$Cognome = mysqli_real_escape_string($mysqli, $_POST['Cognome']);
$Codice_Fiscale = mysqli_real_escape_string($mysqli, $_POST['Codice_Fiscale']);
$Luogo_Nascita = mysqli_real_escape_string($mysqli, $_POST['Luogo_Nascita']);
$Data_Nascita = mysqli_real_escape_string($mysqli, $_POST['Data_Nascita']);
$Campionati_V = mysqli_real_escape_string($mysqli, $_POST['Campionati_V']);
$Vittorie = mysqli_real_escape_string($mysqli, $_POST['Vittorie']);
// check dei campi vuoti
if(empty($Nome) || empty($Cognome) || empty($Codice_Fiscale) || empty($Luogo_Nascita) || empty($Data_Nascita)
|| empty($Campionati_V) || empty($Vittorie)) {
if(empty($Nome)) {
echo "<font color='red'>Il campo Nome e' vuoto.</font><br/>";
}
if(empty($Cognome)) {
echo "<font color='red'>Il campo Cognome e' vuoto</font><br/>";
}
if(empty($Codice_Fiscale)) {
echo "<font color='red'>Il campo Codice Fiscale e' vuoto</font><br/>";
}
if(empty($Luogo_Nascita)) {
echo "<font color='red'>Inserire Luogo di Nascita.</font><br/>";
}
if(empty($Data_Nascita)) {
echo "<font color='red'>Inserire Data di Nascita</font><br/>";
}
if(empty($Campionati_V)) {
echo "<font color='red'>Inserire numero di Campionati Vinti</font><br/>";
}
if(empty($Vittorie)) {
echo "<font color='red'>Inserire numero di Vittorie</font><br/>";
}
} else {
//update tabelle
$result = mysqli_query($mysqli, "UPDATE piloti SET Nome='$Nome',Cognome='$Cognome',Codice_Fiscale='$Codice_Fiscale',
Luogo_Nascita='$Luogo_Nascita', Data_Nascita='$Data_Nascita', Campionati_V='$Campionati_V', Vittorie='$Vittorie' WHERE Codice=$Codice");
//torna a index.php
header("Location: index.php");
}
}
?>
<?php
//prendo ID da url
$Codice = $_GET['Codice'];
//seleziona
$result = mysqli_query($mysqli, "SELECT * FROM piloti WHERE Codice=$Codice");
while($res = mysqli_fetch_array($result))
{
$Nome = $res['Nome'];
$Cognome = $res['Cognome'];
$Codice_Fiscale = $res['Codice_Fiscale'];
$Luogo_Nascita = $res['Luogo_Nascita'];
$Data_Nascita = $res['Data_Nascita'];
$Campionati_V = $res['Campionati_V'];
$Vittorie = $res['Vittorie'];
}
?>
Per prelevare l'ID il codice è questo:
HTML:
<a href=\"update_piloti.php?Codice=$res[Codice]\">Modifica</a> | <a href=\"delete.php?Codice=$res[Codice]\" onClick=\"return confirm('Sei sicuro di voler eliminare?')\">Elimina</a>
Mentre il codice HTML del form che usiamo è il seguente :
HTML:
<form name="form1" method="post" action="update_piloti.php">
<input type="text" name="Nome" value="<?php echo $Nome;?>"><br>
<input type="text" name="Cognome" value="<?php echo $Cognome;?>"><br>
<input type="text" name="Codice_Fiscale" value="<?php echo $Codice_Fiscale;?>"><br>
<input type="text" name="Luogo_Nascita" value="<?php echo $Luogo_Nascita;?>"><br>
<input type="text" name="Data_Nascita" value="<?php echo $Data_Nascita;?>"><br>
<input type="text" name="Campionati_V" value="<?php echo $Campionati_V;?>"><br>
<input type="text" name="Vittorie" value="<?php echo $Vittorie;?>"><br>
<input type="hidden" name="Codice" value=<?php echo $_GET['Codice'];?>><br>
<input type="submit" name="Aggiorna" value="Aggiorna">
</form>
Secondo voi dov'è che sbagliamo ? Spero di essere stato più completo possibile, così da permettervi di capire meglio dov'è il problema. Grazie mille a tutti in anticipo!