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 :

Suppression non réalisée


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut Suppression non réalisée
    Je dois développer un script de suppression d'utilisateurs stockés dans une table (ici table1).
    Je pense qu'il me manque quelque chose au niveau du IF, mais je ne sais pas trop comment faire.

    Voici mon code pour la suppression :

    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
    <html>
    <?php
    $connex = mysql_connect ("localhost", "root","") or die ("erreur de connexion");
    mysql_select_db ("test1");
    $req="delete from table1";
    If ($_POST['TSUPP[]'] == 'on')
    {
    $resultat=mysql_query($req) or  die($req);
    }
    ?>
    <FORM method="POST" action="">
    <table border='1'>
    	<tr>
    		<td>Suppression</td>
    		<td>Numéro</td>
    		<td>Login</td>
    		<td>Mot de passe</td>
    	</tr>
     
    <?php
    $sql="select * from table1";
    $id=mysql_query($sql);
    while ($tab = mysql_fetch_array($id))
    {
    ?>
    	<tr>
    		<td><input type="checkbox" name="TSUPP[]" value="<?php echo $_POST['num']; ?>"</td>
    		<td><?php echo $tab['num']; ?></td>
    		<td><?php echo $tab['nom']; ?></td>
    		<td><?php echo $tab['pass']; ?></td>
    	</tr>
     
    <?php
    }
    ?>
    </table>
    	<br>	<br>
    <input type="submit" name="supprimer" value="Supprimer">
    </form>
    </body>
    </html>

  2. #2
    Membre éprouvé Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Par défaut
    Faut lui dire quel ligne supprimer !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $req="delete from table1";
    //remplacer par
    $req="delete from table1 WHERE champ=valeurduchampdel\'enregistrementvoulu";
    //exemple
    $req="delete from table1 WHERE id='$monid'";
    Cordialement.

  3. #3
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    essaye quelque chose comme ça :
    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
    <html>
    <?php
    $connex = mysql_connect ("localhost", "root","") or die ("erreur de connexion");
    mysql_select_db ("test1");
    if(isset($_POST['TSUPP'])){
            // J'ai inséré la requête dans le if, c'est mieux et j'ai rajouté le where qu'il devait manquer pour savoir quelle entrée de la table il fallait supprimer
    	$req="delete from table1 where num=".$_POST['TSUPP']."";
    	$resultat=mysql_query($req) or  die($req);
    }
    ?>
    <FORM method="POST" action="">
    <table border='1'>
    	<tr>
    		<td>Suppression</td>
    		<td>Numéro</td>
    		<td>Login</td>
    		<td>Mot de passe</td>
    	</tr>
     
    <?php
    $sql="select * from table1";
    $id=mysql_query($sql);
    while ($tab = mysql_fetch_array($id))
    {
    ?>
    	<tr>
                    // j'ai modifié le name en TSUPP sans les [], je préfère et j'ai modifié la value de $_POST en $tab, je pense que c'était une erreur de ta part
    		<td><input type="checkbox" name="TSUPP" value="<?php echo $tab['num']; ?>"</td>
    		<td><?php echo $tab['num']; ?></td>
    		<td><?php echo $tab['nom']; ?></td>
    		<td><?php echo $tab['pass']; ?></td>
    	</tr>
     
    <?php
    }
    ?>
    </table>
    	<br>	<br>
    <input type="submit" name="supprimer" value="Supprimer">
    </form>
    </body>
    </html>

  4. #4
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    Rah, ça marche ! Merci beaucoup sacricri

    Juste une petite correction à ton code, vu que // ne marche que dans les balises PHP

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    <!--j'ai modifié le name en TSUPP sans les [], je préfère et j'ai modifié la value de $_POST en $tab, je pense que c'était une erreur de ta part-->
    Donc le isset correspond au fait que la case est remplie/cochée ?!
    !isset fonctionne-t-il ?

  5. #5
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    Petite précision par rapport au code fournit par sacricri, il faut bien mettre des "[]" dans le nom d ta checkbox , comme tu généres ta liste dynamiquement tu aurais le même nom pour l'ensemble de tes checkbox ce qui poserait problème pour exécuter ensuite ta requête (si tu sélectionnes plusieurs checkbox).

    Tu peux également t'aider de la fonction foreach() au niveau de ta requête de suppression ...

  6. #6
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    Du coup, avec TSUPP[], ma suppression ne marche plus...

    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
    <?php
    $connex = mysql_connect ("localhost", "root","") or die ("erreur de connexion");
    mysql_select_db ("test1");
    if(isset($_POST['TSUPP[]'])){
    	$req="delete from table1 where num=".$_POST['TSUPP[]']."";
    	$resultat=mysql_query($req) or  die($req);
    }
    ?>
    <FORM method="POST" action="">
    <table border='1'>
    	<tr>
    		<td>Suppression</td>
    		<td>Numéro</td>
    		<td>Login</td>
    		<td>Mot de passe</td>
    	</tr>
     
    <?php
    $sql="select * from table1";
    $id=mysql_query($sql);
    while ($tab = mysql_fetch_array($id))
    {
    ?>
    	<tr>
    		<td><input type="checkbox" name="TSUPP[]" value="<?php echo $tab['num']; ?>"</td>
    		<td><?php echo $tab['num']; ?></td>
    		<td><?php echo $tab['nom']; ?></td>
    		<td><?php echo $tab['pass']; ?></td>
    	</tr>
     
    <?php
    }
    ?>

  7. #7
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Tu ajoutes des [] au nom de ta checkbox et tu récupère avec $_POST['TSUPP']

  8. #8
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    oui, j'ai tapé vite fais pour donner une idée de l'erreur

    'isset' permet de vérifier si une variable ou une donnée existe et donc si tu fais un if(isset($blabla)) tu vérifies si la variable $blabla existe.
    le '!isset' permet de vérifier si la variable n'existe pas, c'est l'opposé de isset mais il fonctionne de la même manière.

    edit : autant pour moi

  9. #9
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    J'ai tenté ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_POST['TSUPP'])){
    	$req="delete from table1 where num=".$_POST['TSUPP']."";
    	$resultat=mysql_query($req) or  die($req);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><input type="checkbox" name="TSUPP[]" value="<?php echo $tab['num']; ?>"</td>
    Mais une erreur de requete s'affiche :
    delete from table1 where num=Array
    Avec les [] sur chaque variable, le tableau s'affiche mais la suppression ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_POST['TSUPP[]'])){
    	$req="delete from table1 where num=".$_POST['TSUPP[]']."";
    	$resultat=mysql_query($req) or  die($req);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><input type="checkbox" name="TSUPP[]" value="<?php echo $tab['num']; ?>"</td>

  10. #10
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Essaye ce code avec la fonction foreach() qui te permettra de supprimer un ou plusieurs utilisateurs en même temps :
    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
    <?php
    $connex = mysql_connect ("localhost", "root","dzlyon") or die ("erreur de connexion");
    mysql_select_db ("test1");
     
    if(isset($_POST['TSUPP'])){
    $tab_tsupp = $_POST['TSUPP'];
    foreach($tab_tsupp as $tsupp){
    	$req="delete from table1 where num=".$tsupp."";
    	$resultat=mysql_query($req) or  die($req);
    }
    }
    ?>
    <FORM method="POST" action="">
    <table border='1'>
    	<tr>
    		<td>Suppression</td>
    		<td>Numéro</td>
    		<td>Login</td>
    		<td>Mot de passe</td>
    	</tr>
     
    <?php
    $sql="select * from table1";
    $id=mysql_query($sql);
    while ($tab = mysql_fetch_array($id))
    {
    ?>
    	<tr>
     
    		<td><input type="checkbox" name="TSUPP[]" value="<?php echo $tab['num']; ?>" /></td>
    		<td><?php echo $tab['num']; ?></td>
    		<td><?php echo $tab['nom']; ?></td>
    		<td><?php echo $tab['pass']; ?></td>
    	</tr>
     
    <?php
    }
    ?>
    </table>
    	<br>	<br>
    <input type="submit" name="supprimer" value="Supprimer">
    </form>

  11. #11
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    en fait, si tu ne souhaites pas supprimer plusieurs utilisateurs en même temps, tu peux enlever les []

    dans le cas où tu souhaites supprimer plusieurs users en mm temps, moi je feinte à chaque fois :

    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
    <html>
    <?php
    $connex = mysql_connect ("localhost", "root","") or die ("erreur de connexion");
    mysql_select_db ("test1");
    if(isset($_POST['nbr_TSSUP'])){
     for($i=0;$i<=$_POST['nbr_TSUPP'];$i++){
      if(isset($_POST['TSUPP.$i'])){
            // J'ai inséré la requête dans le if, c'est mieux et j'ai rajouté le where qu'il devait manquer pour savoir quelle entrée de la table il fallait supprimer
    	$req="delete from table1 where num=".$_POST['TSUPP.$i']."";
    	$resultat=mysql_query($req) or  die($req);
      }
     }
    }
    ?>
    <FORM method="POST" action="">
    <table border='1'>
    	<tr>
    		<td>Suppression</td>
    		<td>Numéro</td>
    		<td>Login</td>
    		<td>Mot de passe</td>
    	</tr>
     
    <?php
    $sql="select * from table1";
    $id=mysql_query($sql);
    $a=0;
    while ($tab = mysql_fetch_array($id))
    {
    ?>
    	<tr>
                    // j'ai modifié le name en TSUPP sans les [], je préfère et j'ai modifié la value de $_POST en $tab, je pense que c'était une erreur de ta part
    		<td><input type="checkbox" name="TSUPP<?=$a?>" value="<?php echo $tab['num']; ?>"></td>
    		<td><?php echo $tab['num']; ?></td>
    		<td><?php echo $tab['nom']; ?></td>
    		<td><?php echo $tab['pass']; ?></td>
    	</tr>
     
    <?php
    $a++;
    }
    echo '<input type="hidden" name="nbr_TSUPP" value="<?=$a?>">';
    ?>
    </table>
    	<br>	<br>
    <input type="submit" name="supprimer" value="Supprimer">
    </form>
    </body>
    </html>

  12. #12
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    Ca marche, pour un seul ou plusieurs à la fois, merci bien !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_POST['nbr_TSSUP'])){
     for($i=0;$i<=$_POST['nbr_TSUPP'];$i++){
      if(isset($_POST['TSUPP.$i'])){
    Alors là, je suis plus qu'embrouillé !

    Un For de 0 à nbr ?

    Quelle est la différence vis à vis de la méthode avec foreach() ?

  13. #13
    Membre chevronné Avatar de sacricri
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 324
    Par défaut
    Comme je l'ai dis, c'est une méthode perso parce que je n'ai jamais réellement compris le fonctionnement de foreach()

    après, il semble que ce soit plus light à mettre ne place donc je te le conseille

  14. #14
    Membre confirmé Avatar de razorlok
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 211
    Par défaut
    Merci bien pour l'aide apportée en tout cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Layout 2 colonnes semi fluides non réalisable ?
    Par LEK dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 24/09/2010, 12h06
  2. Condition IF non réalisée
    Par pierre50 dans le forum Langage
    Réponses: 4
    Dernier message: 31/01/2009, 20h19
  3. noeud réalisable et non réalisable
    Par chris_013 dans le forum JSF
    Réponses: 2
    Dernier message: 27/01/2009, 11h04
  4. Suppression non autorisée.
    Par Deallyra dans le forum WinDev
    Réponses: 20
    Dernier message: 18/03/2008, 09h12
  5. [File] delete suppression non contrôlée
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/11/2006, 18h42

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