[RESOLU] Suppression avec formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Suppression avec formulaire

Re: Suppression avec formulaire

par cris84 » 17 janv. 2014, 19:51

Merci pour cette aide,

je mets le code entier si jamais cela peut aider quelqu'un...
<?php
$sql = 'SELECT messages.id, titre, date, message, membres.pseudo as expediteur FROM messages, membres WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=membres.id';
	// on lance cette requete SQL à MySQL
	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	$nb = mysql_num_rows($req);

	if ($nb == 0) {
	echo 'Aucun message reconnu.';
	}
	else {
	
while($data = mysql_fetch_array($req))
{
 ?>
<form method='POST' action=''>
<table width="100%" border="1">
<tr>
<td width=''>Date</td>
<td width=''>ID</td>
<td width=''>Titre</td>
<td width=''>Expéditeur</td>
<td width=''>Message</td>
<td width=''>Choix</td>
<tr><td><?php echo $data['date']; ?></td>

  <td><?php echo $data['id']; ?></td>
  <td><?php echo $data['titre']; ?></td>
<td><?php echo $data['expediteur']; ?></td>
<td><?php echo $data['message']; ?></td>
<td colspan="2"><input type='checkbox' name='delete[]' value="<?php echo $data['id'] ; ?>" />
  <input accesskey="S" name="Supprimer" value="Supprimer" type="submit"></tr>
</table>
</form>


<?php 
		} 
		$delete = isset($_POST['delete']) ? $_POST['delete'] : array(); 
	$id = isset($_POST['id']) ? $_POST['id'] : array();

		if (sizeof($delete)==0){
echo 'Vous n\'avez pas selectionné d\'enregistrements';

exit;
}
else
{

foreach ($delete as $id){
$sql='DELETE FROM messages where message.id='.$id;
echo $sql;
$req= mysql_query($sql);
}
 
echo 'Les enregsitrements ont été supprimés';
 
}
	}
?>

Re: Suppression avec formulaire

par moogli » 17 janv. 2014, 00:12

1/ je t'ai dit que c'est le problème
2/ il te faut préfixer avec le nom de la table dont tu tire l'information. Donc dans ton cas messages.id
SELECT messages.id, titre, date, message, membres.pseudo AS expediteur FROM messages, membres WHERE id_destinataire="1" AND id_expediteur=membres.id
@+

Re: Suppression avec formulaire

par cris84 » 16 janv. 2014, 22:25

Oui ils ont un id

j'ai ajouté
<?php $id = isset($_POST['id']) ? $_POST['id'] : array(); ?>
après
<?php $delete = isset($_POST['delete']) ? $_POST['delete'] : array(); ?>
mais ça ne change rien

c'est sans doute
value="<?php echo $data['id']; ?>
qui ne va pas ?

Si j'ajoute id dans ma requête j'obtiens une erreur :
Erreur SQL !
SELECT id, titre, date, message, membres.pseudo as expediteur FROM messages, membres WHERE id_destinataire="1" AND id_expediteur=membres.id
Column 'id' in field list is ambiguous

Re: Suppression avec formulaire

par moogli » 16 janv. 2014, 22:12

salut,


Tu n'as pas de colonne id sectionnée dans la requête.

Si tu n'as pas d'erreur c'est que ton niveau de rapport n'est pas à E_ALL ou que le display_error est a off.

Se sont deux choses a ne pas faire lorsque l'on développe une application (mais ok en prod).


@+

Re: Suppression avec formulaire

par sirakawa » 16 janv. 2014, 22:10

Les messages n'ont pas un id dans la table?
tu pourrais stocker lcet id, par exemple comme clef de delete dans le formulaire et t'en servir pour supprimer.
Parce que là, tu te bases sur le tableau delete qui est indicé à partir de 0 à chaque fois.

Suppression avec formulaire

par cris84 » 16 janv. 2014, 21:32

Bonsoir à tous
je voudrais supprimer les messages sélectionnés via un formulaire, quand je valide en cochant la case je n'ai pas d'erreur mais les messages ne sont pas supprimés de la BDD.
Je vous donne les deux pages : messagerie.php qui contient les messages et supprimer.php qui contient le code de suppression des messages.
Merci d'avance pour vos remarques..
<?php

$sql = 'SELECT titre, date, message, membres.pseudo as expediteur FROM messages, membres WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=membres.id';
	// on lance cette requete SQL à MySQL
	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
	$nb = mysql_num_rows($req);

	if ($nb == 0) {
	echo 'Aucun message reconnu.';
	}
	else {
	
while($data = mysql_fetch_array($req))
{
 ?>
<form method='POST' action='supprimer.php'>
<table width="100%" border="1">
<tr>
<td width=''>Date</td>
<td width=''>Titre</td>
<td width=''>Message</td>
<td width=''>expéditeur</td>
<td width=''>Choix</td>

 
<?php


?>
<tr><td><?php echo $data['date']; ?></td>
<td><?php echo $data['titre']; ?></td>
<td><?php echo $data['expediteur']; ?></td>
<td><?php echo $data['message']; ?></td>
<td colspan="2"><input type='checkbox' name='delete[]' value="<?php echo $data['id']; ?>" />
  <input accesskey="S" name="Supprimer" value="Supprimer" type="submit"></tr>
</table>
</form>


<?php 
		} 
	}
?>
La page de suppression :
<?php
$delete = isset($_POST['delete']) ? $_POST['delete'] : array();


if (sizeof($delete)==0){
echo 'Vous n\'avez pas selectionné d\'enregistrements';

}
else{
 
foreach ($delete as $valeur){
$sql=('DELETE FROM messages where id='.$valeur)or die(mysql_error());
$req= mysql_query($sql);
}
 
echo 'Les enregsitrements ont été supprimés';
 }
?>