IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

supprimer une ligne d'une base de données via un checkbox [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut supprimer une ligne d'une base de données via un checkbox
    Bonjour,
    mon idée consiste à télécharger une table d'une base de données et générer un checkbox pour chaque ligne qui me permettra en premier lieu de supprimer la ligne cochée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <form  name="form" method="post">
    			<?php
    				$link = mysql_connect("localhost","root");
    				mysql_select_db("GestionClients",$link)or die(mysql_error());
    				$query = "select * from Client";
    				$result = mysql_query($query, $link)or die($query . " - " . mysql_error());
    				$nbreResultats = mysql_num_rows($result);
    				echo "nombre d'enregistrement: ". $nbreResultats;
    				echo "</br>";
     
    				echo '<table bgcolor="#FFFFFF">
    		             <tr>
    			               <td bgcolor="#669999"><b><u>id</u></b></td>
    					       <td bgcolor="#669999"><b><u>nom</u></b></td>
    					       <td bgcolor="#669999"><b><u>prenom</u></b></td>
    					       <td bgcolor="#669999"><b><u>adresse</u></b></td>
    				      </tr>
    				</table>';
     
    				while ($tab= mysql_fetch_array($result)) {
    					echo $tab[id]." ".$tab[nom]." ".$tab[prenom]." ".$tab[adresse];
    					echo '<input type="checkbox" name=$tab[id]>';echo $tab[id];
    					echo "</br>";
    				}
    			?>
    ceci me permettra de permettre à mon bouton de supprimer les cases choisies:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    					if(isset($_POST['submit'])){echo'je ss a foreach';
    						foreach($_POST[tab] as $tab[id]){
    							$link = mysql_connect("localhost","root");	
    							mysql_select_db("GestionClients",$link)or die((mysql_error()));
    							$query = "delete from client where id ='{$_POST[$tab[id]]}'";echo'$query';
    							mysql_query($query)or die('Error, delete query faileed');	
    						}
    					}
    			    ?>
    				</form>
    					<form action="<?=$_SERVER['PHP_SELF'];?>" method="post">
    					<input type="submit" value="supprimer">
    				</form>
    voila mon idée qui ne marche pas malheureusement sachant que la liste s'affiche et que mes tests montrent que le navigateur n'entre même pas à la boucle foreach

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    il faut que ton bouton "submit" est l'attribut name="submit" si tu veux valider $_POST['submit']
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    je viens de rectifier mais ca n'entre meme pas encore a la boucle foreanch

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 199
    Par défaut
    if(isset($_POST['submit'])) je pense pas que ce soit ca.
    Mets plutot le nom du champ ke lon renseigne.

    Pour passer le id des infos, tu peux aussi utiliser un get : tu crées un input, et dans le form tu mets action="monadress.php?id='.$id.'"
    et tu recuperes ca

  5. #5
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    bon voila j'ai essayé de me simplifier la tâche et de modifier un client au lieu de supprimer plusieurs afin d'échaper à cette maudite boucle foreach
    alors j'ai fait cela pour générer ma table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <form method="post" action="ModifierClient.php">
    			<?php
    				$link = mysql_connect("localhost","root");
    				mysql_select_db("GestionClients",$link)or die(mysql_error());
    				$query = "select * from Client";
    				$result = mysql_query($query, $link)or die($query . " - " . mysql_error());
    				$nbreResultats = mysql_num_rows($result);
    				echo "nombre d'enregistrement: ". $nbreResultats;
    				echo "</br>";
     
    				while ($tab= mysql_fetch_array($result)) {
    					echo $tab[id]." ".$tab[nom]." ".$tab[prenom]." ".$tab[adresse];
    					echo '<input type="checkbox" name="erease" value=$tab[id]';
    					echo $tab[id];
    					echo "</br>";
    				}
    				echo '<a href="ModifierClient.php"><input type="submit" value="modifier" name="submit"></a>';
    			?>
    			</form>
    une fois je suis à la page modifier je fais ce petit test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <body>
    		    <?php echo 'hello';
    		    	if($_POST){
    		    		$asupprimer=htmlentities($_POST['erase']);
    		    		echo $asupprimer;
    		    	}
    		    	else echo 'rien';
    		    ?>
    		</body>
    ce qu'on m'affiche c'est hello qui fait signe qu'on est au début et "rien" qui fait signe que la page n'a rien reçu

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 199
    Par défaut
    if($_POST){
    ....

    Il manque le quelque chose je crois.
    $_POST['tiensyaunchampla']

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Les variables PHP ne sont pas interpretés dans les guillemets simples.
    Les valeurs HTML sont encadrés par des guillements doubles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input type="checkbox" name="erease" value=$tab[id]';
    ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input type="checkbox" name="erease" value="' . $tab[id] . '"  />';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    merci pour votre aide,
    en ce qui concerne le guiellements je viens de couriger,
    pour la methode if($_POST) je crois qu'il me manquait l'attribut if($_POST['erease']) ou erease et le nom commun que j'ai donne a mes textbox
    ces deux rectifications n'ont pas n'ont pas aboutit a aucun resultat et toujours on m'aafiche rien pour faire signe que la page fille a recu quelque choses
    merci encore pour votre aide

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Est-ce qu'on pourrait avoir l'ensemble du code refait ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    ok voila tout le code:
    la form:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <form method="post" action="modifierClient.php">
    			<?php
    				$link = mysql_connect("localhost","root");
    				mysql_select_db("GestionClients",$link)or die(mysql_error());
    				$query = "select * from Client";
    				$result = mysql_query($query, $link)or die($query . " - " . mysql_error());
    				$nbreResultats = mysql_num_rows($result);
    				echo "nombre d'enregistrement: ". $nbreResultats;
    				echo "</br>";
     
    				while ($tab= mysql_fetch_array($result)) {
    					echo $tab[id]." ".$tab[nom]." ".$tab[prenom]." ".$tab[adresse];
    					echo '<input type="checkbox" name="erease" value="'.$tab[id].'">';
    					echo $tab[id];
    					echo "</br>";
    				}
    				echo '<a href="modifierClient.php"><input type="submit" value="modifier" name="submit"></a>';
    le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ?php 
    		    	echo 'hello';
    		    	if($_POST['erease']){
    		    		echo $_POST['erease'];echo $_POST[$nbreResultats];
    		    		$asupprimer=htmlentities($_POST['erase']);
    		    		echo $asupprimer;
    		    	}
    		    	else echo 'rien';
    		    ?>
    toujours on m affiche un hello pour faire signe du début et un "rien" qui veut dire "rien recu"

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    - Pourquoi ton bouton submit est dans un lien html ?
    - tu ecris parfois "erase" et parfois "erease" il faut être cohérent dans le nom des élements
    - les clefs de tableau doivent être encadré par des guillements lorsqu'elles ne sont pas numeriques : $tab['id'], $tab['nom'] etc.

    si on corrige tout ca ton code a l'air de fonctionner.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    en ce qui concerne le boutton submit il est dans un lien pour permettre d'aller la page modifierClient.php, je viens meme de le refaire avc en un simple boutton <button>modifier</button> sans aucune difference

    pour l'ecriture du met erease c rectifier

    j ai aussi bien mis les cotes

    vous avez raison de dire que ca doit marcher mais c po encore le cas, il doi y avior un astuce qui s'echape quelque part
    en tout cas merci pour ton aide

  13. #13
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le bouton submit n'a pas besoin et ne doit pas etre dans un lien, il envoit naturellement vers l'"action" du formulaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  14. #14
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    merci pour l'information, j ai omis le lien et laissé le bouton submit seul, sauf que ca rien changé

  15. #15
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Est-ce qu'il existe bien un champ "id" dans ta table Client ?
    Est-ce que dans le code HTML final tes checkbox ont bien une "value" correcte ?

    Et sinon redonne moi ton code actuel - parce que chez moi en test ca marchait.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #16
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    en ce qui concerne l'id il existe dans la table et je l'afffiche même sur ma page,
    mai pour la valeur du checkbox je lui donne l'id du client,
    pour plus de précision voila le code
    voici ma page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    				$link = mysql_connect("localhost","root");
    				mysql_select_db("GestionClients",$link)or die(mysql_error());
    				$query = "select * from Client";
    				$result = mysql_query($query, $link)or die($query . " - " . mysql_error());
    				$nbreResultats = mysql_num_rows($result);
    				echo "nombre d'enregistrement: ". $nbreResultats;
    				echo "</br>";
     
    				while ($tab= mysql_fetch_array($result)) {
    					echo $tab['id']." ".$tab['nom']." ".$tab['prenom']." ".$tab['adresse'];
    					echo '<input type="checkbox" name="erease" value="'.$tab[id].'">';
    					echo $tab[id];
    					echo "</br>";
    				}echo'<input type="submit" value="supprimer">';
    et voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    		    	echo 'hello';
    		    		if($_POST['erease']){
    		    		echo $_POST['erease'];
    		    		$asupprimer=htmlentities($_POST['erase']);
    		    		echo $asupprimer;
    		    	}
    		    	else echo 'rien';
    		    ?>

  17. #17
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pourquoi ton code est en deux bouts au fait et ou est passé le <form> ?
    on va tourner longtemps si a chaque fois que tu corriges un truc tu fais une faute ailleurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  18. #18
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    en fait ma <form> est la, elle s'est juste echapée du copier coller, elle juste avant la balise php
    <form method="post" action="modifierClient.php">
    <?php
    ?>
    </form>
    et ceci dzns le code entier que jai postulé la derniere fois
    en tout cas tu peux m'envoyer le code que tu as essaye et que tu as dit qu il marche, comme ca je pourrai faire une comparaison bit par bit,
    ca commence a enervé par ce que le principe est bien clair et ca marche pas encore
    encore une fois merci pour ton suivant si on fini par faire on laissera une tres bonne lecon sur notre cher site pour les nouveaux php-developpeurs

  19. #19
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    ah mais moi dans mon test je n'ai qu'une seul checkbox.
    Toi tu dois faire un tableau (et je repete aussi on met des guillemets aux clefs de tableau) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<input type="checkbox" name="erease[]" value="'.$tab['id'].'">';
    et en reception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($_POST['erease']) {
                  foreach ($_POST['erease'] as $id) {
                        echo 'supprimer ligne ' . $id;
                  }
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  20. #20
    Membre averti
    Inscrit en
    Août 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 40
    Par défaut
    je veux bien te remercier sabotage ta boucle a bien fonctionné et je suis hyper content maintenant, c'était un long séjour avec ces maudits checkbox mais bon voila ça marchait enfin
    merci encore une fois
    merci sabotage tu es le meilleur:

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. supprimer des donnees dans une base de données via des checkbox dans un tableau
    Par nourchéne dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 03/04/2013, 18h01
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. [phpMyAdmin] question sur une ligne à ajouter à ma base de données
    Par jsdar dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 14/04/2007, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo