- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Cancellazione record da una tabella dati php mysql a mezzo pulsante di selezione
-
Cancellazione record da una tabella dati php mysql a mezzo pulsante di selezione
Ciao a tutti chiedo gentilmente aiuto per poter eseguire cancellazione record selezionati su chechbox a mezzo di un pulsante che in questo caso si chiama
"Elimina record selezionati" attualmente non produce nessuna cancellazione
i record attualmente vengono cancellati uno per volta cliccando sul pulsante
della croce rossa , questo comunque mi va bene che ci stia , vorrei soltanto
selezionare piu' record e cancellarli tutti insieme con il pulsante sopra descritto posto qui di seguito lo script sperando in un vs gentile aiuto grazie.<?php
mysql_connect("localhost", "utente", "password") or
die("Connessione non riuscita: " . mysql_error());
mysql_select_db("ninophp");
if($_POST)
{
$ids = isset($_POST['id']) ? $_POST['id'] : array();
elimina_record($ids);
}
elseif(isset($_GET['id']))
{
elimina_record(array($_GET['id']));
}
else
mostra_lista();function mostra_lista()
{
// mostro un eventuale messaggio
if(isset($_GET['msg']))
echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
}
$query = "select id,nome,cognome from indirizzi";
$rs = mysql_query($query) or die(mysql_error());
$num = mysql_num_rows($rs);if ($num == 0)
echo "<div style="text-align:center">Nessun contatto nella presente tabella</div>";
else
{
if(empty($_GET['ordercampo']))
$_GET['ordercampo'] = "id";if(empty($_GET['order'])) $_GET['order'] = "asc"; if($_GET['order']=="asc") {$ordinaVerso = "desc";} if($_GET['order']=="desc") {$ordinaVerso = "asc";} $query = "select id,nome,cognome from indirizzi order by $_GET[ordercampo] $ordinaVerso "; $rs = mysql_query($query) or die(mysql_error()); ?> <center><table bgcolor="#ffff99" border="1"> <tr bgcolor="#FF0000"> <td align="center"><strong>selez.</a></strong></td> <td align="center"><strong><a href="ordina69.php?ordercampo=<?php echo 'nome' ?>&order=<?php echo $ordinaVerso ?>" title="Inverti ordinamento">nome</a></strong></td> <td align="center"><strong><a href="ordina69.php?ordercampo=<?php echo 'cognome' ?>&order=<?php echo $ordinaVerso ?>" title="Inverti ordinamento">cognome</a></strong></td> <td align="center"><strong>elimina</a></strong></td> </tr></center> <?php while($results = mysql_fetch_array($rs)) { $nome = htmlentities($results['nome']); $cognome = htmlentities($results['cognome']); $link = $_SERVER['PHP_SELF'].'?id=' . $results['id']; echo "<tr>"; // $id = $results['id']; ; echo "<td><input name=\"id[]\" type=\"checkbox\" value=\"$results[id]\" /></td>"; echo "<td width=\"35%\"> $results[nome]</td>"; echo "<td width=\"35%\"> $results[cognome]</td>"; echo "<td><center><a href=\"$link\"><img src=\"x.gif\"></a></center></td>"; echo "</tr>"; } //fine ciclo while } //fine else nel caso ci sia almeno un contatto nel comune
function elimina_record($ids)
{
// verifico che almeno un id sia stato selezionato
if(count($ids) < 1)
{
$messaggio = urlencode("Nessun record selezionato!");
header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
exit;
}// per precauzione converto gli ID in interi $ids = array_map('intval',$ids); // creo una lista di ID per la query $ids = implode(',',$ids); // preparo la query $query = "DELETE FROM indirizzi WHERE id IN ($ids)"; // invio la query $results = mysql_query($query); // controllo l'esito if (!$results) { die("Errore nella query $query: " . mysql_error()); } // conto il numero di record cancellati $num_record = mysql_affected_rows(); // chiudo la connessione a MySQL
// mysql_close();
$messaggio = urlencode("Numero record cancellati: $num_record"); header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio);
}
echo '
<table border="1">
<input type="submit" name="Submit" value="Elimina record selezionati" />
<tr>
<th> </th>
<th>MENU</th>
<th> </th>
<td><a href="menuprincipale.php">menu</a></td>
<td><a href="inserire.php">Inserimento dati</a></td>
<th> </th>
</tr>';?>
-
Ciao paolomi,
intervenire su un codice del genere dall'esterno può non essere banale...
Se ho capito bene il non detto, non funziona quando invochi il elimina_record con $_POST... giusto?Ti restituisce un qualche tipo di errore?
Alcuni consigli:
fatti stamapare la query con il DELETE a monitor, così capisci al volo se c'è un errore:***$query = "DELETE FROM indirizzi WHERE id IN ($ids)"; ***
echo $query;poi, all'inizio dello script fatti scrivere le variabili $_POST e $_GET con, ad esempio,
var_dump($_POST);
var_dump($_GET);Così capisci se il form passa correttamente le variabili.
Non trovo, nel tuo script, il tag form, con la definizione del method... controlla che vi sia e che sia corretto.
Facci sapere...