checkbox permettant d effacer les donnees de db

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 : checkbox permettant d effacer les donnees de db

par rw_cd » 25 mai 2006, 15:31

salut


j'ai aussi ce pb avec un form de recherche.je ne sais pas d'où çà vient.un pragma avec no-cache est une solution, reload aussi.

par iruka » 25 mai 2006, 06:54

effectivement, je n avais pas compris ce que tu voulais dire...

en fait, imaginons que la personne entre ses donnees, les donnees entrees validees apparaissent juste en dessous avec les checkbox pour effacer.

si elle coche une de ses entrees pour l effacer, appuie sur effacer, la page se recharge mais la donnee qu elle a voulue effacer apparait quand meme. pour la faire disparaitre de l ecran, il faut reappuyer sur effacer sans cocher de case et cette fois tout rentre dans l ordre. du coup, j ai fait une redirection sur la page des que le bouton effacer est appuye mais bon c est pas tres propre dans le concept...

par rw_cd » 25 mai 2006, 05:35

y avait une grosse erreur! je fermais le formulaire a chaque fin de boucle au lieu de fermer le formulaire en dehors de la boucle! forcement ca allait pas marche correctement...
signalé sur le premier post.

Code : Tout sélectionner

j ai les donnees effacees qui apparaissent quand meme lors du rechargement de la page
les check cochées?

par iruka » 25 mai 2006, 04:18

bon, j ai presque trouve!!!!

y avait une grosse erreur! je fermais le formulaire a chaque fin de boucle au lieu de fermer le formulaire en dehors de la boucle! forcement ca allait pas marche correctement...

mais bon, j ai cependant un petit souci : lorsque je coche une case pour l effacer (ou plusieurs maintenant!), il efface bien la ou les donnees dans la table mais j ai les donnees effacees qui apparaissent quand meme lors du rechargement de la page :shock: il faut que je reappuie sur le bouton effacer pour que cette fois les donnees disparaissent de l affichage

ca doit etre une condition que j ai foire, je vais regarder ca de plus pres...

voila le code qui fonctionne (a peu pres, disons que je peux effacer plusieurs donnees lorsque je choisis des checkbox, c etait mon probleme initial)
<?php 
include ("connexion/mysql.inc.php");

// je verifie que le formulaire a ete envoye et qu il a passe mon test
if (isset($_POST['nom2']) && $i==1){

// si oui, j insere les informations du formulaire dans la table 
$sql = "INSERT INTO education(id,schoolname,graduation,schoollevel,educationmonth,educationyear) VALUES ('$id','$nomecole','$degree','$ecolelevel','$educationmois','$educationannee')";     
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
}

// je selectionne les donnees dans la table
	 $sql2 = mysql_query("SELECT * FROM education WHERE id=$id ORDER BY educationyear DESC"); 
$total = mysql_num_rows($sql2);

// s il y a des donnees, je les affiche
	if ($total >0) {
echo "<form name=\"delete\" method=\"post\" action=\"education.php\">";
	echo"<tr>";
           echo"<td colspan=\"6\" class=\"submessage\">";
              echo"  vos donnees";
           echo" </td>";
       echo" </tr>";
       echo"<tr>";
           echo"<td class=\"header\" align=\"center\">annee</td>";
           echo" <td class=\"header\" align=\"center\">mois</td>";
         echo"  <td class=\"header\" align=\"center\" width=\"80%\">ecole</td>";
          echo"  <td class=\"header\" align=\"center\" width=\"10%\"><br/></td>";
          echo"  <td class=\"header\" align=\"center\" width=\"10%\"><br/></td>";
      
     echo"   </tr>";
	 
	while ($donnees = mysql_fetch_array($sql2) )
	{
    echo"    <tr>";
      echo"     <td class=\"input1\">";
            echo    $donnees['educationyear'];
        echo "</td>";
           echo" <td class=\"input1\">";
              echo    $donnees['educationmonth'];
        echo"    </td>";
        echo"    <td class=\"input1\">";
           echo      $donnees['schoolname'];
       echo"    </td>";
       echo"    <td class=\"input1\">";
              echo    $donnees['schoollevel'];
   
        echo"   </td>";
       echo"    <td class=\"input1\">";
           echo    $donnees['graduation'];
        echo"   </td>";
        echo"   <td class=\"input1\" align=\"center\">";
       echo"        <input type=\"checkbox\" name=\"aeffacer[]\" value=\"".$donnees['auto']."\" >";
	       echo"     </td>";
    echo"   </tr>";
      echo" </tr>";	

  } 

// je verifie la valeur de la case a cocher
$effacer = (isset($_POST['aeffacer'])) ? $_POST['aeffacer']:null; 

// si elle n est pas vide, je cherche les cases cochees et j efface les donnees avec une requete
if (!empty($effacer)) 
  { 
foreach($effacer as $valeur) 
   { 
    $sql2 = "DELETE FROM education WHERE auto=".$valeur."";
	echo $sql2."<br>";
	$sql2=mysql_query($sql2);
	echo $sql2."<br>";
   }	
  }
//je ferme le formulaire 
	echo"    <tr>";
    echo"  <td class=\"header\" align=\"center\">";
         echo"   <input type=\"submit\" name=\"nom\" value=\"effacer\">";
         echo"   </td>";
		   echo" </tr>";	
	echo"</form>";
   
  } 
 
?>

par iruka » 25 mai 2006, 03:01

non, je n ai pas trouve la solution pour l instant...

en fait, le bouton submit etant en dehors de la boucle, j ai l impression que le probleme vient de la. je vais essayer de faire un simple bouton 'effacer' en lieu et place des checkbox pour tester si ca marche deja comme ca. si ca marche avec un simple submit, c est que forcement, il y a un souci dans ma facon de gerer le submit+checkbox.

par rw_cd » 24 mai 2006, 16:39

Code : Tout sélectionner

le $i==1 en fait, c est un peu tordu
il fallait que je travaille, donc, je reprend.éffectivement, c'est tordu.tu as toujours les mêmes erreurs?

par iruka » 24 mai 2006, 13:59

en fait, la page education montre la page initiale et j ai integre le php dans la page pour gerer les champs obligatoires qui ne sont pas remplis. le formulaire se renvoie a lui meme. je peux poster toute la page mais c est long et pas tres plaisant a lire...


le $i==1 en fait, c est un peu tordu, je pense pas que cela soit la bonne maniere mais je teste si le champ est vide, s il ne l est pas j incremente la variable $i. a la fin, si la somme de la variable $i est egal au nombre de test ok, alors je passe a la suite.

par rw_cd » 24 mai 2006, 13:50

la page éducation.php elle fait quoi? parce que là elle doit traitée le formulaire.

par rw_cd » 24 mai 2006, 13:40

&& $i==1

celle là par contre...

par iruka » 24 mai 2006, 13:37

id, nomecole, degree, eductionannee
y a pas de souci pour ca, elles sont declarees tout en haut de ma page et rentre dans la base sans souci.

par rw_cd » 24 mai 2006, 13:36

une erreur dans le foreach

Code : Tout sélectionner

name=\"aeffacer[]\"
et

Code : Tout sélectionner

foreach($effacer as $cle => $valeur) {

par iruka » 24 mai 2006, 13:35

en fait avec le code ci dessus, je peux enlever la premiere entree qu il trouve dans la table une par une mais pas la deuxieme et encore moins plusieurs a la fois...

du coup, le code ressemble a ton code si ce n est que mois les donnees du formulaire sont crees dans une boucle issue d une requete et j ai l impression que le probleme se situe par la...

l erreur que j obtiens :

DELETE FROM education WHERE auto=239 (ca c est juste un echo que je fais pour voir et normalement il devrait y avoir plusieurs requetes puisque plusieurs cases cochees)

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\edu.php on line 243

la ligne 243 etant :

while ($donnees = mysql_fetch_array($sql2) )

par rw_cd » 24 mai 2006, 13:32

les variables id, nomecole, degree, eductionannee

par rw_cd » 24 mai 2006, 13:30

un exemple issu de mon site


<p>si guitare, votre instrument.plusieurs choix possibles :<br /><br />
<input type="checkbox" name="instru[]" value="fender" class="choix" /> Fender<br />
<input type="checkbox" name="instru[]" value="gibson" class="choix" /> Gibson<br />
<input type="checkbox" name="instru[]" value="Paul Reed Smith" class="choix" /> Paul Reed Smith<br />
<input type="checkbox" name="instru[]" value="charvel" class="choix" /> Charvel<br />
<input type="checkbox" name="instru[]" value="peavey" class="choix" /> Peavey<br />
<input type="checkbox" name="instru[]" value="ibanez" class="choix" /> Ibanez<br />
<input type="checkbox" name="instru[]" value="esp" class="choix" /> ESP<br />
<input type="checkbox" name="instru[]" value="godin" class="choix" /> Godin<br />
<input type="checkbox" name="instru[]" value="copie" class="choix" /> copie de marque<br />
<input type="checkbox" name="instru[]" value="autres" class="choix" /> autres
</p>

je récupére avec foeach

par iruka » 24 mai 2006, 13:30

en fait pour le bout de code que j ai mis est vers la fin de la page et les variables sont declarees tout en haut mais peut etre que j ai effectivement oublie une variable ? tu penses a quelle variable ?

sinon j ai essaye comme ca :
<?php 
include ("connexion/mysql.inc.php");

if (isset($_POST['nom2']) && $i==1){

// on insère les informations du formulaire dans la table 
$sql = "INSERT INTO education(id,schoolname,graduation,schoollevel,educationmonth,educationyear) VALUES ('$id','$nomecole','$degree','$ecolelevel','$educationmois','$educationannee')";     
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
}

//on affiche les resultats rentrees dans la table des que le bouton submit est appuye	
	 $sql2 = mysql_query("SELECT * FROM education WHERE id=$id ORDER BY educationyear DESC"); 
$total = mysql_num_rows($sql2);

	if ($total !=0) {
echo "<form name=\"delete\" method=\"post\" action=\"education.php\">";
	echo"<tr>";
           echo"<td colspan=\"6\" class=\"submessage\">";
              echo"  □ 追加されている学歴";
           echo" </td>";
       echo" </tr>";
       echo"<tr>";
           echo"<td class=\"header\" align=\"center\">年</td>";
           echo" <td class=\"header\" align=\"center\">月</td>";
         echo"  <td class=\"header\" align=\"center\" width=\"80%\">学校名</td>";
          echo"  <td class=\"header\" align=\"center\" width=\"10%\"><br/></td>";
          echo"  <td class=\"header\" align=\"center\" width=\"10%\"><br/></td>";
          echo"  <td class=\"header\" align=\"center\">";
         echo"   <input type=\"submit\" name=\"nom\" value=\"削除\">";
         echo"   </td>";
     echo"   </tr>";
	 
	while ($donnees = mysql_fetch_array($sql2) )
	{
    echo"    <tr>";
      echo"     <td class=\"input1\">";
            echo    $donnees['educationyear'];
        echo "</td>";
           echo" <td class=\"input1\">";
              echo    $donnees['educationmonth'];
        echo"    </td>";
        echo"    <td class=\"input1\">";
           echo      $donnees['schoolname'];
       echo"    </td>";
       echo"    <td class=\"input1\">";
              echo    $donnees['schoollevel'];
   
        echo"   </td>";
       echo"    <td class=\"input1\">";
           echo    $donnees['graduation'];
        echo"   </td>";
        echo"   <td class=\"input1\" align=\"center\">";
       echo"        <input type=\"checkbox\" name=\"aeffacer[]\" value=\"".$donnees['auto']."\" >";
	       echo"     </td>";
    echo"   </tr>";
      echo" </tr>";	
	echo"</form>";
	$effacer = (isset($_POST['aeffacer']))?$_POST['aeffacer']:null; 
if (!empty($effacer)) { 
foreach($effacer as $cle => $valeur) { 
    $sql2 = mysql_query("DELETE FROM education WHERE auto=".$valeur.""); 
	echo "DELETE FROM education WHERE auto=".$valeur."";}}
   } 
  } 
 
?>
mais ca ne marche pas plus...