- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema CANCELLAZIONE dati da un DB
-
Problema CANCELLAZIONE dati da un DB
Salve, ho un problema con una Rubrica:
cancello un record ma ricevo un errore.
La rubrica che stò realizzando sarebbe molto più complessa ...ma avendo avuto problemi con la CANCELLAZIONE e con la MODIFICA dei dati inseriti, ho deciso di provare con una rubrica ridotta che contenesse solamente NOME COGNOME e AZIENDA.
Per la cronaca, si tratta di listati presi dal libro PHP5 di M. Canducci.- Ho creato il database.
- Ho creato il FORM per inserire i dati (FUNZIONA)
- Ho creato una pagina per visualizzare i dati presenti nel DB (FUNZIONA)
Poi, ci sarebbero le due query per la CANCELLAZIONE e per la MODIFICA di un Record.
Partendo dalla CANCELLAZIONE, all'esecuzione restituisce il seguente errore:
Notice: Undefined index: confirm in C:\wamp\www\test2\8-8.php on line 12
Praticamente la pagina PHP che visualizza una tabella con i dati presenti nel DB (chiamata: 8-7.php), ha, per ogni riga della tabella (cioè per ogni Record presente), due link CANCELLA e MODIFICA che inviano alla pagina 8-8.php l'ID del Record da cancellare.
Il record viene cancellato ma è preceduto dall'errore riportato sopra.Spero possiate aiutarmi ...perchè sono diversi giorni che ci provo in tutti i modi ma senza successo.
Vi posto di seguito i due listati. Nel listato 8-8.php ho evidenziato in grassetto la RIGA 12 cui fa riferimento l'errore.
(Il database si chiama 'rubrica' e la tabella si chiama 'elenco')
8-7.php - Lista i record presenti nel DB
<html>
<head>
<title>Visualizza Record</title>
</head>
<body>
<?php
$host = 'localhost';
$user = 'root';
$password = 'password';
$database = 'rubrica';$db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server $host");
mysql_select_db($database, $db) or die ("Impossibile connettersi al database $database");
$query = "select * from elenco";
$dbResult = mysql_query($query, $db);
$AffectedRows = mysql_affected_rows($db);print "<table border="1">\n";
for ($index=0 ; $index<$AffectedRows ; $index++)
{
$row=mysql_fetch_row($dbResult);if($index==0)
{
print "<tr>\n";
foreach ($row as $k => $v)
{
$myfield = mysql_fetch_field($dbResult, $k);
print ("<td><b>" . $myfield->name . "</b></td>");
}
print "</tr>\n";
}foreach ($row as $k =>$v)
{
print ("<td>$v ");
if ($k==0)
{
print "<br>";
print "<a href="8-8.php?id='$v'">Cancella</a>";
print "<br>";
print "<a href="8-9.php?id=$v">Modifica</a>";
}
print ("</td>");
}
print ("</tr>");
}
print ("</table>");mysql_free_result($dbResult);
mysql_close($db);
?>
</body>
</html>
8-8.php - Cancella un Record dal DB
<html>
<head>
<title>Cancella un Record</title>
</head>
<body>
<?php
$host = 'localhost';
$user = 'root';
$password = 'password';
$database = 'rubrica';$confirm = $_REQUEST['confirm'];
$id = $_REQUEST['id'];if ($confirm)
{$db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server $host");
mysql_select_db($database, $db) or die ("Impossibile connettersi al database $database");
$query = "delete from elenco 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
{
print("<h3>Il Record è stato eliminato</h3>");
print("<h3><a href="8-7.php">Torna alla lista</a></h3>");
}mysql_close($db);
}
else
{
print("<h3>Eliminare il Record?</h3>");
print("<h3><a href="{$_SERVER['PHP_SELF']}?id=$id&confirm=1">Conferma</a></h3>");
print("<h3><a href="8-7.php">Annulla</a></h3>");
}
?>
</body>
</html>
-
Ciao Lukat,
la forma più corretta per il file 8-8.php sarebbe questa:
[php]
<html>
<head>
<title>Cancella un Record</title>
</head>
<body>
<?php
$host = 'localhost';
$user = 'root';
$password = 'password';
$database = 'rubrica';$id = $_GET['id'];
if (isset($_GET['confirm']))
{$db = mysql_connect($host, $user, $password) or die ("Impossibile connettersi al server $host");
mysql_select_db($database, $db) or die ("Impossibile connettersi al database $database");
$query = "delete from elenco 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
{
print("<h3>Il Record è stato eliminato</h3>");
print("<h3><a href="8-7.php">Torna alla lista</a></h3>");
}mysql_close($db);
}
else
{
print("<h3>Eliminare il Record?</h3>");
print("<h3><a href="{$_SERVER['PHP_SELF']}?id=$id&confirm=1">Conferma</a></h3>");
print("<h3><a href="8-7.php">Annulla</a></h3>");
}
?>
</body>
</html>
[/php]
Mancano comunque tutti i controlli sui dati ricevuti, è molto facile alterare la query allo stato attuale.