Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1320 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Supprimer une ligne via un formulaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Supprimer une ligne via un formulaire

n°1895813
Profil sup​primé
Posté le 16-06-2009 à 16:55:12  answer
 

Bonjour,
 
Je suis en train de faire un scrypt php qui permet de lister mes utilisateurs via une liste déroulante qui se met à jour automatiquement. Et ce que j'aimerai arriver à faire c'est lorsque je sélectionne un utilisateur, je puisse le supprimer via un boutton.
 

<h3>Supprimer un utilisateur</h3>
<form action="admin.php?m=supprimer_util" method="POST">
<p>Sélectionnez un professeur à supprimer</p>
    <select name="liste">
        <?php
        mysql_connect('localhost','root','');
        mysql_select_db('logiciel');  
         
        $sql = "SELECT id_util,nom_util, prenom_util FROM utilisateur";
        $res = mysql_query($sql);
        while($row = mysql_fetch_array($res))
            {
            echo "<option value=$row[id_util]>$row[nom_util] $row[prenom_util]</option>";
            }
        ?>
    </select>
<input type="submit" value="Supprimer" name="supprimer"/>  
</form>
<?php
if(isset($_POST))
    {
    $rep = $_POST['liste'];
    mysql_query("DELETE * FROM utilisateur WHERE id_utilisateur = ".$rep."";);
    }
else
    {
    echo 'Erreur';
    }
?>


Pour l'instant j'ai fais ça pour voir un peu mais ça ne marche pas. Je sais que ça doit venir de mon if mais je vois pas comment réparer mon erreur.
 
ps: Je précise que je débute en php alors soyez indulgent  [:tinostar]  
 
Merci pour votre aide  ;)


Message édité par Profil supprimé le 17-06-2009 à 09:59:27
mood
Publicité
Posté le 16-06-2009 à 16:55:12  profilanswer
 

n°1895818
Yagmoth
Fanboy
Posté le 16-06-2009 à 16:59:49  profilanswer
 

Manque des guillemets autour de la valeur de tes options :o (et $_POST existe de toute façon, donc tu ferais mieux de tester directement si $_POST['liste'] existe).

 

Ensuite si tu veux bel et bien supprimer l'entrée de ta base mysql, il faudrait faire un

Code :
  1. mysql_query("DELETE * FROM utilisateur WHERE id_utilisateur='$rep'" );

Message cité 1 fois
Message édité par Yagmoth le 16-06-2009 à 17:03:42

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1895819
Profil sup​primé
Posté le 16-06-2009 à 17:01:57  answer
 

Ah tiens ça me fait penser à une chose. Quelle est la différence entre isset($_POST) et isset($_POST['liste'])
Isset vérifie si la variable existe bien vrai ? Donc autant mettre isset($_POST) qui vérifie l'ensemble des variables passant par POST non ?  [:cupra]

n°1895820
Yagmoth
Fanboy
Posté le 16-06-2009 à 17:04:33  profilanswer
 

 

Non ça va juste vérifier que le tableau $_POST existe... or il existe toujours, qu'il soit vide ou non :D


Message édité par Yagmoth le 16-06-2009 à 17:07:20

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1895829
Profil sup​primé
Posté le 16-06-2009 à 17:13:49  answer
 

J'arrive pas à placer correctement mes guillemets. A chaque fois j'ai un parse error  :sweat:

n°1895839
Yagmoth
Fanboy
Posté le 16-06-2009 à 17:21:44  profilanswer
 

Ton code et la ligne d'erreur ? :o (effectivement il manque des guillemets simple lors de l'affichage des options...)


Message édité par Yagmoth le 16-06-2009 à 17:22:41

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1895845
Profil sup​primé
Posté le 16-06-2009 à 17:23:58  answer
 

Ligne 13:
 

echo "<option value=$row[id_util]>$row[nom_util] $row[prenom_util]</option>";


Mais là dedans je vois pas trop où placer mes guillemets parce que à chaque fois ça me et un parse error à cette ligne  :??:
 
edit: guillemet ou quote ?


Message édité par Profil supprimé le 16-06-2009 à 17:24:18
n°1895851
Yagmoth
Fanboy
Posté le 16-06-2009 à 17:30:51  profilanswer
 

Essaie ça :

 
Citation :

echo "<option value=\"$row['id_util']\">$row['nom_util'] $row['prenom_util']</option>";

 

En fait autour du "value" de l'option, il faut mettre des guillemets double, sans quoi si ton nom comprend un espace, ça va devenir ininterprétable (et puis de toute façon ce ne serait pas W3C compliant). De même, il faut mettre des guillemets simple pour récupérer la valeur correspondant à la clef d'un tableau (comme tu l'avais fait pour $_POST['liste']).


Message édité par Yagmoth le 16-06-2009 à 17:33:47

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1895870
Profil sup​primé
Posté le 16-06-2009 à 18:13:50  answer
 

Yagmoth a écrit :

Manque des guillemets autour de la valeur de tes options :o (et $_POST existe de toute façon, donc tu ferais mieux de tester directement si $_POST['liste'] existe).
 
Ensuite si tu veux bel et bien supprimer l'entrée de ta base mysql, il faudrait faire un

Code :
  1. mysql_query("DELETE * FROM utilisateur WHERE id_utilisateur='$rep'" );



pas de "*" pour delete (anéfé, mysql supprime la ligne de toute façon). Donc :

Code :
  1. DELETE FROM utilisateur WHERE id_utilisateur = '$rep'


n°1895885
Profil sup​primé
Posté le 16-06-2009 à 18:35:05  answer
 

Je test ça demain et je vous tiendrai au courant  :jap:
 
Au lycée on nous faisait toujours écrire le * dans nos requête à la main  :sweat: ²


Message édité par Profil supprimé le 16-06-2009 à 18:38:48
mood
Publicité
Posté le 16-06-2009 à 18:35:05  profilanswer
 

n°1895887
Profil sup​primé
Posté le 16-06-2009 à 18:42:47  answer
 

un * dans un delete [:mlc2]


Message édité par Profil supprimé le 16-06-2009 à 18:42:54
n°1895890
Profil sup​primé
Posté le 16-06-2009 à 18:49:32  answer
 

Ben ouais, pour dire de tout sélectionner pour détruire  :sweat:

n°1895900
Yagmoth
Fanboy
Posté le 16-06-2009 à 19:10:43  profilanswer
 


 
Mea culpa  :jap: Je ne l'avais pas mis au départ, puis j'ai édité... en regardant un forum où il y avait une ânerie.


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1896020
Profil sup​primé
Posté le 17-06-2009 à 08:41:34  answer
 

J'ai toujours un parse error pour ma ligne 13
 

echo "<option value="$row['id_util']">$row['nom_util'] $row['prenom_util']</option>";


J'vais trifouiller un peu histoire de voir d'où ça vient  :D

Message cité 1 fois
Message édité par Profil supprimé le 17-06-2009 à 09:03:44
n°1896024
Deamon
Posté le 17-06-2009 à 08:55:42  profilanswer
 

T'as essayé la solution de Yagmoth ?
 

Citation :

echo "<option value=\"$row['id_util']\">$row['nom_util'] $row['prenom_util']</option>";

n°1896027
Profil sup​primé
Posté le 17-06-2009 à 09:03:06  answer
 

Oui, c'est celle que j'avais testé d'ailleurs

n°1896034
Deamon
Posté le 17-06-2009 à 09:23:10  profilanswer
 

Essaye avec la concaténation alors :
 
echo "<option value=\"" . $row['id_util'] . "\">" . $row['nom_util'] . " " . $row['prenom_util'] . "</option>";

n°1896036
macgawel
Posté le 17-06-2009 à 09:27:33  profilanswer
 


Ca doit venir des quotes/doubles quotes  :D  
 
Solution qui devrait marcher :

Code :
  1. echo '<option value="'.$row['id_util'].'">'.$row['nom_util'].' '.$row['prenom_util'].'</option>';


En règle général, quand j'ai ce genre de problème :
- Je procède par concaténation plutôt qu'avec des guillemets - même si ça fait perdre un peu de perf'
- Je décompose en plusieurs lignes.
 
[Edit]Grilled  :cry:


Message édité par macgawel le 17-06-2009 à 09:28:41
n°1896056
Profil sup​primé
Posté le 17-06-2009 à 09:55:52  answer
 

héhé merci plus de parse error maintenant  :D  
 
Par contre toujours impossible de supprimer l'utilisateur sélectionné  :(

n°1896057
Yagmoth
Fanboy
Posté le 17-06-2009 à 09:56:04  profilanswer
 


 
Heu t'avais bien placé les backslashs devant les " entourant la valeur de ton option ? Parce que ce n'est pas le cas dans le quote que tu fais juste au dessus...
 
laisse moi deviner... id_utilisateur != id_util ? :D
 

Code :
  1. mysql_query("SELECT * FROM utilisateur WHERE id_utilisateur = ".$rep."";);


 
>>
 

Code :
  1. mysql_query("DELETE FROM utilisateur WHERE id_util='$rep' " );



Message édité par Yagmoth le 17-06-2009 à 09:57:50

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1896063
Profil sup​primé
Posté le 17-06-2009 à 10:03:33  answer
 

Mais pourquoi j'avais mis un select moi ?  [:transparency]  
 
Non même en corrigeant avec le DELETE ça ne marche toujours pas, qu'es-ce donc ce délire ?  [:transparency] ²

n°1896066
Yagmoth
Fanboy
Posté le 17-06-2009 à 10:05:28  profilanswer
 

Envoie ton code actuel en entier :o


---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1896073
Profil sup​primé
Posté le 17-06-2009 à 10:09:55  answer
 

Tu l'aurau voulu :o
 

<h3>Supprimer un utilisateur</h3>
<form action="admin.php?m=supprimer_util" method="POST">
<p>Sélectionnez un professeur à supprimer</p>
    <select name="liste">
        <?php
        mysql_connect('localhost','root','');
        mysql_select_db('logiciel');  
         
        $sql = "SELECT id_util,nom_util, prenom_util FROM utilisateur";
        $res = mysql_query($sql);
        while($row = mysql_fetch_array($res))
            {
            echo '<option value="'.$row['id_util'].'">'.$row['nom_util'].' '.$row['prenom_util'].'</option>';    
            }
        ?>
    </select>
<input type="submit" value="Supprimer" name="supprimer"/>  
</form>
<?php
if(isset($_POST['liste']))
    {
    $rep = $_POST['liste'];
    echo 'coucou les gens HFR';
    mysql_query("DELETE FROM utilisateur WHERE id_utili = '$rep'" );
    }
else
    {
    echo 'Erreur';
    }
?>


Tu l'as eu  :o ²
 
A noté que le message "Coucou les gens HFR" s'affiche bien. Donc c'est ma requête qui doit merder en toute logique, pourtant c'est un truc tout simple sans FK ni rien alors je vois pas où est le pb  :??:

n°1896076
Yagmoth
Fanboy
Posté le 17-06-2009 à 10:12:15  profilanswer
 

un 'i' en trop dans ta requête :o Id_util, pas id_utili, faut taper avec un doigt :o


Message édité par Yagmoth le 17-06-2009 à 10:13:04

---------------
L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui !
n°1896080
macgawel
Posté le 17-06-2009 à 10:13:37  profilanswer
 

Code :
  1. if(isset($_POST['liste']))
  2.    {
  3.    $rep = $_POST['liste'];
  4.    echo 'coucou les gens HFR';
  5. /* Debug */
  6.    $requete = "DELETE FROM utilisateur WHERE id_utili = '$rep'";
  7.    echo $requete;
  8.    mysql_query($requete) or die (mysql_error());
  9. /* Fin Debug */
  10.    }
  11. else
  12.    {
  13.    echo 'Erreur';
  14.    }
  15. ?>


n°1896081
Profil sup​primé
Posté le 17-06-2009 à 10:14:47  answer
 

La honte quoi  [:mister yoda]  
 
ça marche bien ce coup ci  :D  Merci à tous pour le coup de main et vite vite on part du topic où je vais finir dans les plus belles hontes  :D ²

n°1896219
Profil sup​primé
Posté le 17-06-2009 à 12:50:26  answer
 


Non, dans ce cas c'est :

Code :
  1. DELETE FROM ma_table
  2. # ou (je crois) :
  3. TRUNCATE TABLE `ma_table`

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Supprimer une ligne via un formulaire

 

Sujets relatifs
Formulaire dans un tableau ?[PHP] Intégration de texte avec sauts de ligne dans une image
lire et modifier une ligne préciseprobleme validation de formulaire javascript
Problème d'envoi de formulaire malgré une erreur js[Spring 2.5] Passer les données d'un formulaire au controleur
Conversion des données séparées par ; en ligneTransmission de valeur depuis formulaire vers BDD
[Shell] Supprimer les répétitions de caractère[Resolu]Controle de saisie Adresse IP sur un formulaire
Plus de sujets relatifs à : Supprimer une ligne via un formulaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR