eliminare righe di una tabella con form html

91andrea91

Nuovo Utente
7 Ott 2015
8
0
1
Buonasera, sono nuovo del forum piacere di conoscervi:cool:. da una tabella del database (di nome categorie) dovrei prelevo due campi...1 IDCategorie (autoincrement) e il secondo Categoria (dove sono inserite tutte le categorie). Le righe del campo Categorie la riempio in maniera dinamica tramite un form e da un altro form posso visualizzare e selezionare la riga che desidero. Adesso vorrei poter tramite un form o link...poter eliminare le righe del campo Categoria....vi posto il codice (come errore mi da :Unknown column 'id' in 'where clause'). Grazie anticipatamente a chi si interesserà al mio problema.
PHP:
<?php

	
        

// connessione al db...


// estraggo i dati dalla tabella
$sql = 'SELECT * FROM categorie';
$query = mysql_query($sql) or die (mysql_error());

echo "<table border=\"1\">\n";

//verifico che sia presente almeno un record
if(mysql_num_rows($query) > 0){

// se la tabella contiene records li mostro attraverso un ciclo
  while($row = mysql_fetch_array($query)){
    $id = $row["IDCategoria"];
    $davisualizzare = stripslashes($row["Categoria"]);
   

//impagino i records
echo "<tr><td width=\"80%\"><font size=\"2\" face=\"Segoe Print\">\n";
echo $davisualizzare;
echo "</font></td>\n";
echo "<font size=\"2\" face=\"Segoe Print\"><td>\n";

//creo il bottone per l'eliminazione del record
echo "<form method=\"post\" action=\"#\">\n";
echo "<input type=\"submit\" name=\"Submit\" value=\"Rimuovi\"></form>\n";
echo "</td></font></tr>\n";

}
}else{
  // se in tabella non ci sono records...
  echo "<tr><td><font size=\"3\">\n";
  echo "Non ci sono iscritti";
  echo "</font></td></tr>\n";
}
echo "</table>\n";

//ora la query per cancellare il record
if(isset($_POST["Submit"]))
    {
    $id = $_POST["Submit"];
    $sql = "DELETE FROM categorie WHERE id=".$id;
    
  if (mysql_query($sql) or die (mysql_error())){
    echo "Eliminazione di " . $davisualizzare . " effettuata con successo";
    }
        }
?>
 
ciao
sei sicuro che il campo esista e si chiami id?
ma poi non vedo in alcun punto dello script dove trasmetti il valore di $id

p.s.
il tag font è deprecato, usa i css
 
ciao
scusa accorto adesso
$id = $row["IDCategoria"];
intanto quindi correggi
PHP:
<?php
//.....
 $sql = "DELETE FROM categorie WHERE id=".$id; 
 //....
 ?>
in
PHP:
 <?php
//.....
 $sql = "DELETE FROM categorie WHERE IDCategoria=".$id; 
 //....
 ?>
o meglio
PHP:
<?php
//.....
 $sql = "DELETE FROM categorie WHERE IDCategoria=$id"; 
 //....
 ?>
 
ciao
scusa accorto adesso
$id = $row["IDCategoria"];
intanto quindi correggi
PHP:
<?php
//.....
 $sql = "DELETE FROM categorie WHERE id=".$id; 
 //....
 ?>
in
PHP:
 <?php
//.....
 $sql = "DELETE FROM categorie WHERE IDCategoria=".$id; 
 //....
 ?>
o meglio
PHP:
<?php
//.....
 $sql = "DELETE FROM categorie WHERE IDCategoria=$id"; 
 //....
 ?>

Ciao Borgo grazie per la risposta:byebye:
Ho fatto la modifica che mi hai suggerito e adesso mi da l'errore: string(47) "DELETE FROM categorie WHERE IDCategoria=Rimuovi" Unknown column 'Rimuovi' in 'where clause'. Il fatto che "cancelli" quando IDCategoria sia uguale a Rimuovi dovrebbe andare bene ma sembra che non risconosca il Rimuovi perchè pare cerchi questo parametro nel database, non lo trova e non cancella niente(forse è una cavolata). Quando scrivo
PHP:
if(isset($_POST["Submit"]))
    { 
    $sql = "DELETE FROM categorie WHERE IDCategoria= $id";
    var_dump($sql);
    if (mysql_query($sql) or die (mysql_error())){
    echo "Eliminazione di " . $davisualizzare . " effettuata con successo"; 
  }
        }
?>

invece mi cancella sempre l'ultimo parametro perchè cancellando l'associazione con 'submit' la variabile id uscita dal ciclo while ha il valore dell'ultimo ID...ho fatto questa prova per vedere se riconosceva IDCategoria. Ti ringrazio di nuovo per l'attenzione0:)
 
ciao
intanto guardiamo il while
PHP:
<?php
//....
	while($row = mysql_fetch_array($query)){
		$id = $row["IDCategoria"];
		//......
	}
//....
?>
e ipotizziamo che tu abbia tre record
al primo ciclo legge il primo id
al secondo legge l'id del secondo sovrascrivndolo al primo
al terzo legge l'id del terzo sovrascrivndolo al secondo
così tu avrai all'uscita del while solo l'id dell'ultimo record
secondo, metti un var_dump
PHP:
<?php
///
if(isset($_POST["Submit"])){ 
	var_dump($id);
	$sql = "DELETE FROM categorie WHERE IDCategoria= $id"; 
//.....
?>
e guarda cosa ti riporta
poi se hai pazienza ti posto come faccio io
 
ciao
questo è uno schema di come faccio io
PHP:
<?php
//.....
$sql = 'SELECT * FROM categorie';
$query = mysql_query($sql) or die (mysql_error());
echo "<table  style=\"border:1px;\">";//comunque sarebbe meglio con css esterno
if(mysql_num_rows($query) > 0){
	while($row = mysql_fetch_array($query)){
		$id = $row["IDCategoria"];
		$davisualizzare = stripslashes($row["Categoria"]);
		//impagino i records
		echo "<tr>";
		echo "<td style=\"font-size:12px; font-family:pinco pallo; width:80%\">$davisualizzare</td>";
		echo "<td style=\"font-size:12px; font-family:pinco pallo\"><a href=\"?delete=$id&vedi=$davisualizzare\" onclick='confirm(\"conferma eliminazione di $davisualizzare\")'>delete</a></td>";//ci sta bene un confirm
		echo "</tr>";
    }
}else{
	echo "<tr>";
	echo "<td style=\"font-size:12px;\">Non ci sono iscritti</td>";
	echo "</tr>";
}
echo "</table>";
if(isset($_GET["delete"]) && is_int($_GET["delete"])){
	$id=(int)$_GET["delete"];
	$vedi=$_GET["vedi"];
	$sql = "DELETE FROM categorie WHERE IDCategoria=".$id; 
	if (mysql_query($sql)){
		echo "Eliminazione di  $vedi effettuata con successo";
	}else{
		echo "ERRORE, $vedi non eliminato";
	}
	//e qui un ritorno automatico alla lista
}
//....
?>
provalo, puo essere che abbia fatto qualche errore buttandolo giu di brutto
 
ciao
questo è uno schema di come faccio io
PHP:
<?php
//.....
$sql = 'SELECT * FROM categorie';
$query = mysql_query($sql) or die (mysql_error());
echo "<table  style=\"border:1px;\">";//comunque sarebbe meglio con css esterno
if(mysql_num_rows($query) > 0){
	while($row = mysql_fetch_array($query)){
		$id = $row["IDCategoria"];
		$davisualizzare = stripslashes($row["Categoria"]);
		//impagino i records
		echo "<tr>";
		echo "<td style=\"font-size:12px; font-family:pinco pallo; width:80%\">$davisualizzare</td>";
		echo "<td style=\"font-size:12px; font-family:pinco pallo\"><a href=\"?delete=$id&vedi=$davisualizzare\" onclick='confirm(\"conferma eliminazione di $davisualizzare\")'>delete</a></td>";//ci sta bene un confirm
		echo "</tr>";
    }
}else{
	echo "<tr>";
	echo "<td style=\"font-size:12px;\">Non ci sono iscritti</td>";
	echo "</tr>";
}
echo "</table>";
if(isset($_GET["delete"]) && is_int($_GET["delete"])){
	$id=(int)$_GET["delete"];
	$vedi=$_GET["vedi"];
	$sql = "DELETE FROM categorie WHERE IDCategoria=".$id; 
	if (mysql_query($sql)){
		echo "Eliminazione di  $vedi effettuata con successo";
	}else{
		echo "ERRORE, $vedi non eliminato";
	}
	//e qui un ritorno automatico alla lista
}
//....
?>
provalo, puo essere che abbia fatto qualche errore buttandolo giu di brutto

Eccomi....ho risolto grazie a un tuo post che ho trovato eheheh, ho aggiunto un pulsante radio con il valore dell'ID e successivamente se è spuntato leggo il suo valore e poi elimino il valore con il pulsante che ho messo fuori dalle righe del form.
PHP:
//connessione db...
// estraggo i dati dalla tabella
$sql = 'SELECT * FROM categorie';
$query = mysql_query($sql) or die (mysql_error());

echo "<table border=\"1\">\n";

//verifico che sia presente almeno un record
if(mysql_num_rows($query) > 0){

// se la tabella contiene records li mostro attraverso un ciclo
  while($row = mysql_fetch_array($query)){
    $id = $row["IDCategoria"];
    $valoreDaVisualizzare = $row['Categoria'];
   

//impagino i records
echo "<tr><td width=\"80%\" size = \"5\" face=\"Segoe Print\">\n";
echo $id;
echo "</td>\n";
echo "<td><size = \"5\" face=\"Segoe Print\"><td>\n";

//creo il bottone per l'eliminazione del record
echo "<form method=\"POST\"  size = \"3\" action=\"#\">\n";
echo " <input name=\"submit\" type=\"radio\" value=\"$id\">\n"; 
echo "</td></tr>\n";
}

echo "<tr><input type=\"Submit\" name=\"esegui\" value=\"elimina\"></tr>\n";
}else{
  // se in tabella non ci sono records...
  echo "<tr> <size = \"3\"><td>\n";
  echo "Non ci sono iscritti";
  echo "</td></tr>\n";
}
echo "</table>\n";


//ora la query per cancellare il record
if (isset($_POST["submit"])){
    $a = $_POST["submit"];
    $sql = "DELETE FROM categorie WHERE IDCategoria = $a";
    $query =mysql_query ($sql);
     
    if (mysql_query($sql) or die (mysql_error())){
    echo "Eliminazione effettuata con successo"; 
  }
        }
?>
 

Discussioni simili