[RESOLU] checkbox et suppression

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] checkbox et suppression

Re: checkbox et suppression

par moimeme30 » 22 juin 2014, 22:49

Ok j'ai rien dis, je l'avais placé dans le 1er if alors qu'il fallait le placer juste apres...
Merci :)

Re: checkbox et suppression

par moimeme30 » 22 juin 2014, 22:48

C'est exactement ce que j'ai déjà essayé, le problème c'est que lorsque j'ai fais ça, la phrase précisant que rien n'a été coché n’apparaît pas.

Re: checkbox et suppression

par Elie » 22 juin 2014, 22:44

Le problème de beaucoup de gens qui utilisent se forum c'est qu'ils constatent les erreurs mais n'essayent pas de les comprendre...

Que te dit l'erreur ? L'index choix est Undefined.
En gros ca te dit que la variable $_POST['choix'] n'existe pas (Normal, t'as rien coché) alors comment on peut savoir si c'est supérieur à zéro ?
Donc en fait on va juste voir si la variable existe car si elle existe c'est que forcement est supérieur à 0...
 if(!empty($_POST['choix'])) {  //<--------------ligne 43
Le savoir est une arme bébé ne l'oublie jamais - Stomy Bugsy - Mon papa à moi est un gangster

Re: [RESOLU] checkbox et suppression

par moimeme30 » 22 juin 2014, 22:37

Re, je viens de m’apercevoir d'une erreur.
Lorsque je clique sur supprimer sans selectionner de checkbox, j'ai l'erreur suivante:
Notice: Undefined index: choix in C:\wamp\www\index.php on line 43
if(!empty($_POST['mess_suppr']) ){
	if(count($_POST['choix']) > 0) {  //<--------------ligne 43
		foreach($_POST['choix'] as $id) {
			$req = Cnx::connectCnx()->exec("DELETE FROM messagerie WHERE id = ".$id);
		}
		
			header ("Refresh: 0;URL=index.php");
	}
	else {
			echo 'Aucun message n\'a été selectionné';
	}
}

Re: checkbox et suppression

par moimeme30 » 22 juin 2014, 18:44

Effectivement le <form> était avant la boucle, mais avec l'oubli de la fermeture de la balise class="mess" ça plantait.. d'ou le pourquoi je l'ai mis ensuite dans la boucle en trouvant ça un peu bizarre effectivement.
En tout cas, c'est le > qui me plantait le code.
Merci de ton aide

Re: checkbox et suppression

par Elie » 22 juin 2014, 17:17

>= 1 c'est en gros > 0 ;) mais c'est bizarre d'avoir $nb_message et la requete apres ...
Il manquait un > apres echo '<div class="mess">';
Tu fous le <form> dans ta boucle ... ?
J'ai refait propre le code pour la class non lu mais je serais toi je ferais 2 classes ex class="message" class="message non_lu"
<?php
				// On les effaces avant de les afficher ... Logique !
				if(!empty($_POST['mess_suppr'])){
				   if(count($_POST['choix']) > 0) {
						foreach($_POST['choix'] as $id) {
						  $req = Cnx::connectCnx()->exec("DELETE FROM messagerie WHERE id = ".$id);
						}
				   } else {
					  echo 'Aucun message n\'a été selectionné';
				}


				$req = Cnx::connectCnx()->prepare("SELECT e.nom, e.prenom, e.session, e.token, m.id, m.id_expediteur, m.id_destinataire, m.titre_mess, m.message, m.postit, m.lu, m.date_mess FROM messagerie m INNER JOIN equipe e ON m.id_expediteur = e.id AND m.id_destinataire = ? AND m.postit=0 ORDER BY date_mess");
                $req->execute(array($Auth->user('id')));
				if($req->rowCount() > 0)

                        echo '<div class="mess">';
						echo '<form action="index.php" method="post">';
						
                                while($user=$req->fetch(PDO::FETCH_OBJ)) {
                                        
                                        echo '<span class="mess_ligne">';
										$class = ($user->lu == 1) ? 'img_mess_lu' : 'img_mess_non_lu';
                                        echo '<input type="checkbox" name="choix[]" id="choix_'.$user->id.'" value="'.$user->id.'"> <span class="'.$class.'"></span>';
                                        echo '<span class="mess_date">'.dateFr($user->date_mess).'</span>';
                                        echo '<span class="mess_head">'.ucfirst($user->prenom). ' '.ucfirst($user->nom).'</span>';
                                        echo '<span class="titre"><a href=\'indv.php?id='.$user->id.'&lu='.$user->lu.'&token='.$user->token.'\'>'.ucfirst($user->titre_mess).'</a></span><br>';
                                }

                                        echo '<p>
                                                        <input onclick="CocheTout(this, \'choix[]\');" type="checkbox"><br>
                                                        <input type="submit" value="Supprimer"  name="mess_suppr"/>
                                                </p>
                                                </FORM>
                                        </div>';
                       
                 
       
        } else {
               echo "Aucun message";
        }
		
?>
Bref, c'est un peu le n'importe quoi dans ton code. Je pense que mon code marche mais si il marche pas a 100% la base est la !

checkbox et suppression

par moimeme30 » 22 juin 2014, 15:08

Bonjour et bon dimanche.

J'ai un problème de checkbox et de suppression. Voici le code:
	if($nb_mess >= 1) {

$req = Cnx::connectCnx()->prepare("SELECT e.nom, e.prenom, e.session, e.token, m.id, m.id_expediteur, m.id_destinataire, m.titre_mess, m.message, m.postit, m.lu, m.date_mess FROM messagerie m INNER JOIN equipe e ON m.id_expediteur = e.id AND m.id_destinataire = :id AND m.postit=0 ORDER BY date_mess");
		$req->execute(array('id' => $Auth->user('id'))); 

			echo '<div class="mess"';

				while($user=$req->fetch(PDO::FETCH_OBJ)) {
					echo '<FORM action="index.php" method="POST">';
					echo '<span class="mess_ligne">';
					if (($user->lu)==1) {
						echo '<input type="checkbox" name="choix[]" value="'.$user->id.'"> <span class="img_mess_lu"></span>';
					} 
					else {
						echo '<input type="checkbox" name="choix[]" value="'.$user->id.'"> <span class="img_mess_non_lu"></span>';
					}
					echo '<span class="mess_date">'.dateFr($user->date_mess).'</span>';
					echo '<span class="mess_head">'.ucfirst($user->prenom). ' '.ucfirst($user->nom).'</span>';
					echo '<span class="titre"><a href=\'indv.php?id='.$user->id.'&lu='.$user->lu.'&token='.$user->token.'\'>'.ucfirst($user->titre_mess).'</a></span><br>';
				}

					echo '<p>
							<input onclick="CocheTout(this, \'choix[]\');" type="checkbox"><br>
							<input type="submit" value="Supprimer"  name="mess_suppr"/>
						</p>
						</FORM>
					</div>';
			
		 
					if (isset($_POST["mess_suppr"])){
						$donnees = filter_input_array(INPUT_POST, FILTER_SANITIZE_MAGIC_QUOTES);
						foreach ($donnees['choix'] as $id) {  /* LIGNE 44*/
						  $req = Cnx::connectCnx()->exec("DELETE FROM messagerie WHERE id=$id");
						  header ("Refresh: 0;URL=index.php");
						}
					}
					else {
						echo "La suppression n'a pas eu lieu.";
					}	 
	}
	else{
		echo "Aucun message";
	}
Le problème qui se pose, c'est que je peux supprimer toutes les checkbox à l'execption de la 1ère... Impossible à supprimer, et j'ai l'erreur suivante qui apparait:
Notice: Undefined index: choix in C:\wamp\www\index.php on line 44
Warning: Invalid argument supplied for foreach() in C:\wamp\www\index.php on line 44
Et de plus, la phrase "la suppression n'a pas eu lieu" est toujours présente.

Quelqu'un a une idée svp?