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

Langage PHP Discussion :

Supprimer une ligne d'une base de données


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut Supprimer une ligne d'une base de données
    J’ai un formulaire, les gens remplissent les champs, on met les informations dans le BD (mysql)... Ensuite on affiche ces informations dans un autre écran si les utilisateurs veuillent visualiser les résultats...

    Dans la page où on affiche ces enregistrement, je vais mettre un chekBox pour chaque ligne (chaque enregistrement). L’utilisateur peut sélectionner cette checkbox et ensuite il peut cliquer sur le bouton valider. Lles lignes (chaque enregistrement) qui ont été sélectionne par checkBock seront supprimé dans la bd.


    En fait mes questions sont suivantes :

    Si je mets mon checkBox dans mon code php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while ($row = mysql_fetch_array($result)) {
     
               echo " <tr><td  class=\"numero\">"  ;
     
    		   echo $row['numero'] ."</td><td>"  ;
               echo $row['bd_nom'] ."</td><td>"  ;
               echo $row['bd_ecole'] ."</td><td>"  ;
               echo $row['bd_telephone'] ."</td><td>"  ;
    		   echo $row['bd_courriel'] ."</td><td><input type=\"checkbox\" name=\"checkbox\" id=\"checkbox\" /></td></tr>"  ;

    Alors à chaque nouvel ligne, il va y avoir un checbox avec le même id.
    • Comment PHP peut savoir que 1er checkbox qui se trouve dans la 1er ligne peut correcpondre dans la 1er engresistrement dans bd ?
    • Comment je peux numeroter à chaque checbok ?
    • Est-ce que peut on mettre les checkbok dans mysql ?
    • Commnet on peut suprimer ce engresistrement par cet chexkbox ? avec un script ? comment il peut connecter à mysql ?

  2. #2
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    pour le nom de la case à cocher, construit le comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
               echo $row['bd_courriel'] ."</td><td><input type=\"checkbox\" name=\"checkbox[{$row['numero']}]\" id=\"checkbox\" /></td></tr>"  ;
    et tu auras un tableau avec les cases cochées

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir, pourquoi ne pas utiliser une des clé par exemple pour des articles de magasin ce serait le nom d'article comme cela

    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
     
     
            $Flag1=mysql_connect($Serveur,$User,$Mdp);
            $Flag2=mysql_select_db($MaBase);
            $result=mysql_query("select * from mesarticles
            WHERE  NomArticle >= ' ' and NomArticle <= 'zzzz'
            ORDER BY NomArticle ");
            while ($row=mysql_fetch_array($result)) 
             {
              $IndexArticle= stripslashes($row['IndexArticle']);
              $NomArticle= stripslashes($row['NomArticle']);
              echo "<BR><input type='radio' name='NomArticle'  value='".$NomArticle."'>";
              echo " <strong>Index: </strong>";
              echo   $IndexArticle;
              echo " <strong> Nom: </strong>";
              echo $NomArticle." ";
             }
            mysql_close();
            echo "<BR>
    <input type='submit' value='ok'></form>
    Tout simplement !

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut
    Bonjour nosferapti et mauriser,

    Merci pour vos aides...

    J'ai avancé pas mal mais je suis bloqué un peu.

    Je n'arrive pas affecter les valeurs de mes checkbox dans table (array)... c'est toujours mon variable est ($i) zéro même si mes checkbox sont sélectionnés...

    À vos avis je fais les bêtise où ?

    Voici mon code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
    //traitement de la suppressioin au debut du scrtipt : réaffichera ceux qui restent après la suppression
     
    //il faut supprime si le bouton a été cliqué
    if(isset($_POST['btn_supprimer'])){
    //récupération des checkbox cochées dans un array --------nomme ------->  table_array
    	$table_array=$_POST['table_array']; 
    	 $i = 0;
    	while ( $i < count( $table_array)){
    		//Mon id de l'enregistrement dans bd se nommé  numero !!!!
    		$sup= " DELETE  FROM tb_test_checkbox WHERE numero= '$table_array[$i]' "; 
    					//CEst pour tester si mon chekcbox marche
    					//echo $i; 
    					//	exit();
    					// !!!!!!!!!!!!pour le moment c'est toujour zero meme si les checkbox sont selectionne!!!!!!!!!!!!!!!!!!!!
     
    		$supp =  mysql_query($sup, $cnx) or die( mysql_error() ) ;
    		$i++;
    	}
    }
    ?>
    <form method="post">
     <table width="685" align="center">
         <tr align="center" bgcolor="#aacc19">
    	     <td width="20%"><font face="comic sans ms"><b>Numéro</b></font></td>
    		<td width="20%"><font face="comic sans ms"><b>Nom</b></font></td>
    	    <td width="35%"><font face="comic sans ms"><b>telephone(s)</b></font> </td>
    	    <td><font face="comic sans ms"><b>Supprimer</b></font></td>
    	 </tr>
    	 <?php
     
        //connection au serveur
      $cnx = mysql_connect( "localhost", "***admin", "totto***" ) ;
     
      //sélection de la base de données:
      $db  = mysql_select_db( "bedeidentite" ) ;
     
       $req=  " select numero,bd_nom,bd_telephone from tb_test_checkbox  ";
    	$rep =  mysql_query($req, $cnx) or die( mysql_error() ) ;
    	//affichage :
     
    	while($row=mysql_fetch_row($rep)){
    		$numero=$row[0];
    		$nomP=$row[1];
    		$bd_telephoneP=$row[2];
     
     
    		echo " <tr align='center' bgcolor=#92BCOB>
    				<td>$numero </td><td>$nomP</td><td>$bd_telephoneP</td><td><input type='checkbox' name='table_array[$numero]' value='$numero'></td></tr>" ;
    	}
    			// on affiche ainsi mes checkbox : <input type='checkbox' name='table_array[1]' value='1'> <input type='checkbox' name='table_array[2]' value='2'>
     
    	 ?>
    	 </table>
    	 <br>
    	 <div align="center"><input type="submit" name="btn_supprimer" value="Supprimer"></div>
      </form>
    Si j’active mon echo (décommanté) :
    voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Notice: Undefined offset: 0 in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 11
     
    0
    En fait, lorsque je sélectionne 2 check box voici les message erreur après avoir cliqué sur le bouton supprimer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Notice: Undefined offset: 0 in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 11
     
    Notice: Undefined variable: cnx in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 16
     
    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 16

    Et si je ne décoche aucun chexbox voici le message erreur après avoir cliqué sur le bouton supprimer…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined index: table_array in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 7

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,
    $supp = mysql_query($sup, $cnx) or die( mysql_error() ) ;
    Tu as lancé la requête avant la connection à la base.
    $table_array=$_POST['table_array'];
    Un checkbox n'est pas envoyé au serveur s'il n'est pas coché, tu dois le tester aussi avec isset.

  6. #6
    Futur Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut
    Merci Andry
    Merci pour le tuyau…

    En fait, j’ai déplacé mon variable de connexion au début de mon fichier (au 1er bloc)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //connection au serveur
    $cnx = mysql_connect( "localhost", "root", "4x3rabab" ) ;
    //traitement de la suppressioin au debut du scrtipt : réaffichera ceux qui restent après la suppression
    Alors, j’ai moins d’erreurs

    Ensuite, j’ai fait la recherche dans mon tableau par print_r()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $test_table = array ($table_array);
    	print_r($test_table);
    	exit();
    En fait, ma table contient de valeur…
    Voici quelques tests :
    Quand je sélectionne 1er et 3em check box :
    Array ( [0] => Array ( [1] => 1 [3] => 3 ) )

    Quand je sélectionne 1er, 3e, 6e et 8e chexkbox :
    Array ( [0] => Array ( [1] => 1 [3] => 3 [6] => 6 [8] => 8 ) )

    Alors donc mon tableau marche…

    voila mon nouveau code :
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    <?php
    //connection au serveur
    $cnx = mysql_connect( "localhost", "***admin", "totto***" ) ;
     
     
    //traitement de la suppressioin au debut du scrtipt : réaffichera ceux qui restent après la suppression
    //il faut supprime si le bouton a été cliqué
    if(isset($_POST['btn_supprimer'])){
    //récupération des checkbox cochées dans un array --------nomme ------->  table_array
    	$table_array=$_POST['table_array']; 
    	 $i = 0;
    	while ( $i < count( $table_array)){
    			//sélection de la base de données:
    			db  = mysql_select_db( "bedeidentite" ) ;
     
    		//Mon id de l'enregistrement dans bd se nommé  numero !!!!
    		$sup= " DELETE  FROM tb_test_checkbox WHERE numero= '$table_array[$i]' "; 
    					//CEst pour tester si mon chekcbox marche
    					//echo $i; 
    					//	exit();
    					// !!!!!!!!!!!!pour le moment c'est toujour zero meme si les checkbox sont selectionne!!!!!!!!!!!!!!!!!!!!
    					//****************CEst pour recherche ce qui'il y a dans mon table
    				  	$test_table = array ($table_array);
      					print_r($test_table);
         				exit();
    					// !!!!!!!!!!!!ca marche exemple : Quand je sélectionne 1er et 3em check box : message Array ( [0] => Array ( [1] => 1 [3] => 3 ) )!!!!!!!!!!!!!!!!!!!!
     
    		$supp =  mysql_query($sup, $cnx) or die( mysql_error() ) ;
    		$i++;
    	}
    }
    ?>
    <form method="post">
     <table width="685" align="center">
         <tr align="center" bgcolor="#aacc19">
    	     <td width="20%"><font face="comic sans ms"><b>Numéro</b></font></td>
    		<td width="20%"><font face="comic sans ms"><b>Nom</b></font></td>
    	    <td width="35%"><font face="comic sans ms"><b>telephone(s)</b></font> </td>
    	    <td><font face="comic sans ms"><b>Supprimer</b></font></td>
    	 </tr>
    	 <?php
     
     
      //sélection de la base de données:
      $db  = mysql_select_db( "bedeidentite" ) ;
     
       $req=  " select numero,bd_nom,bd_telephone from tb_test_checkbox  ";
    	$rep =  mysql_query($req, $cnx) or die( mysql_error() ) ;
    	//affichage :
     
    	while($row=mysql_fetch_row($rep)){
    		$numero=$row[0];
    		$nomP=$row[1];
    		$bd_telephoneP=$row[2];
     
     
    		echo " <tr align='center' bgcolor=#92BCOB>
    				<td>$numero </td><td>$nomP</td><td>$bd_telephoneP</td><td><input type='checkbox' name='table_array[$numero]' value='$numero'></td></tr>" ;
    	}
    			// on affiche ainsi mes checkbox : <input type='checkbox' name='table_array[1]' value='1'> <input type='checkbox' name='table_array[2]' value='2'>
     
    	 ?>
    	 </table>
    	 <br>
    	 <div align="center"><input type="submit" name="btn_supprimer" value="Supprimer"></div>
      </form>
    Si je clique sur le bouton Supprimer sans sélectionner un checkbox :
    Notice: Undefined index: table_array in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 8

    Et si je clique sur le bouton supprimer après avoir sélectionné 1er et 3e check box :
    Notice: Undefined offset: 0 in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 14

    Notice: Undefined offset: 1 in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 14

    Tu me demande de faire un isset…
    Mais j’en ai déjà un pour mon bouton…

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if(isset($_POST['btn_supprimer']))
    	{
    		$table_array=$_POST['table_array']; 
    		 $i = 0;
    		while ( $i < count( $table_array))
    			{
     
    				db  = mysql_select_db( "bedeidentite" ) ;
     
    				$sup= " DELETE  FROM tb_test_checkbox WHERE numero= '$table_array[$i]' "; 
    				$supp =  mysql_query($sup, $cnx) or die( mysql_error() ) ;
    				$i++;
    			}
    	}
    Où je dois le faire ? et comment ? Comment je peux faire un isset pour un tableau ?

    pas comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset($_POST['table_array'])) 
    	{
    	$table_array=$_POST['table_array[$numero]'];
    	}
    else {
    		$table_array=='';
    	}
    ni comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (isset($_POST['table_array'])) 
    	{
    	$table_array=$_POST['table_array[$numero]'];
    	}
    else {
    		$table_array='null';
    	}
    En fait, mes check box name sont comme cela "table_array[$numero]"
    Mais comment ?

  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
    $_POST['table_array'][$numero]
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Futur Membre du Club
    Inscrit en
    Décembre 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 4
    Par défaut
    Salut sabotage????????????

    Je ne comprends pas ce que tu dis ???

    $_POST['table_array'][$numero];
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $table_array=$_POST['table_array'];
    Mais pourquoi ? tu veux faire des sabotages ?


    Notice: Undefined variable: numero in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 9

    Notice: Undefined index: in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 9

    Notice: Undefined variable: table_array in C:\Inetpub\wwwroot\service_clientele\unautretest.php on line 11

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2015, 18h30
  2. [SQLite] Cacher une ligne de la base de données
    Par TZoaldiek dans le forum Android
    Réponses: 4
    Dernier message: 25/02/2014, 16h12
  3. [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
  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