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 les données selon un choix réalisé dans un formulaire [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Points : 31
    Points
    31
    Par défaut Supprimer les données selon un choix réalisé dans un formulaire
    Bonjour,

    actuellement je cherche à réaliser un programme qui permette de supprimer des données de ma base de données en fonction d'un choix réalisé par un utilisateur dans une liste déroulante.

    L'utilisateur a accès à une liste déroulante avec le listage d'un (ou plusieurs) champ(s) de ma base de données grâce à cette page :

    Code php : 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
     
    	<body>
    		<?php 
    		include 'connectionbdd.php'; // permet la connection à la base de données grâce au fichier connectionbdd.php
    		?>	
    		<h1> Supprimer une association </h1>
     
    		<form action="traitementsupprimassociation.php" method="post"> 
     
    		<label for="LIBELLE"> Nom de l'association : </label> 
    		<select name="LIBELLE" id="LIBELLE">
    		<?php
    		$reponse = $bdd->query('SELECT LIBELLE FROM association');
     
    		while ($donnees = $reponse->fetch())
    		{
    			?>
    			<option value="<?php echo $donnees['LIBELLE']; ?>"> <?php echo $donnees['LIBELLE']; ?> </option>
    			<?php
    		}
    		?>	
    		</select>
    		</br>
    		<label for="TAG"> TAG de l'association : </label>
    		<select name="TAG" id="TAG">
    		<?php 
    		$reponse2 = $bdd->query('SELECT TAG FROM association');
     
    		while ($donnees2 = $reponse2->fetch())
    		{
    			?>
    			<option value="<?php echo $donnees2['TAG']; ?>"> <?php echo $donnees2['TAG']; ?> </option>
    			<?php
    		}		
    		?>		
    		</select>
    		</br>
    	<input type= "submit" value= "Supprimer"> </br>
    	</form>
    	</body>
    </html>

    Le but de la page "traitementsupprimassociation.php" est de supprimer de la bdd les données sélectionnées dans la liste par l'utilisateur.

    J'ai réalisé la page :

    Code php : 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
    include 'connectionbdd.php'; // permet la connection à la base de données grâce au fichier connectionbdd.php
    if (isset($_POST['LIBELLE'])) {
     
    	// on recherche l'id de l'association à supprimer
    	$sql = 'SELECT ID FROM association WHERE LIBELLE = "'.$_POST['LIBELLE'].'"';
     
    	// on lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas bien (or die)
    	$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    	// on recupere le resultat sous forme d'un tableau
    	$data = mysql_fetch_array($req);
     
    	// on recupere la valeur qui nous intersse
    	$id_association = $data['ID'];
     
    	// on libère l'espace mémoire alloué pour cette interrogation de la base
    	mysql_free_result ($req);
     
    	// lancement de la requête pour effacer notre association
    	$sql ='DELETE from association WHERE LIBELLE="'.$_POST['LIBELLE'].'"';
     
    	// on exécute la requête (mysql_query) et on affiche un message au cas où la requête ne se passait pas bien (or die)
    	mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
     
    	// un petit message afin de voir ce qui s'est passé
    	echo 'Nous venons de supprimer '.$_POST['LIBELLE'].' de la base';
    }
    else {
    	echo 'La variable de notre formulaire n\'est pas initialisée.';
    }
    ?>

    Mon problème est que je reçois ce message d'erreur : Deprecated: mysql_query() et je n'arrive pas à trouver de solutions.

    PS : J'ai mis deux valeurs à choisir dans la liste lors de la première page mais pour mes tests, je test avec une seule des deux valeurs.

  2. #2
    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
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    1- C'est parce que les fonctions mysql_* sont obsolètes et supprimées dans la version 7 de php. Soit tu utilises les fonctions mysqli_*, soit tu utilises PDO.

    2- Passe les id des tables directement comme valeur des options au lieu des libellés.

    A+.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Points : 31
    Points
    31
    Par défaut
    La connexion à la base de données et quelques requêtes du site sont réalisées avec la PDO faut-il absolument que je fasse cette page en PDO ? Où est-il possible de changer selon ses envies ?

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si on prend une métaphore, voilà ce que tu nous demandes :
    J'avais une charrette tirée par des chevaux, mais j'ai acheté une voiture avec un moteur.
    Est-ce que je dois tout le temps rouler avec le moteur, ou est-ce que je peux atteler mes chevaux à la voiture de temps en temps ?
    Si tu as déjà intégré PDO à une partie de ton application, autant l'utiliser partout. (ça évitera que ton appli explose le jour où ton serveur passera à PHP7)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Points : 31
    Points
    31
    Par défaut
    Je demande cela parce que ça me semble beaucoup plus simple d'utiliser Mysqli_ que PDO mais bon j'vais tester ça en PDO je reviens vers toi si besoin d'aide
    Merci de ta réponse rapide

  6. #6
    Membre régulier Avatar de monaka
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2017
    Messages : 64
    Points : 107
    Points
    107
    Par défaut
    salut a toi, je crois que t'as pas bien compris, personne ne t'as dit d'eviter mysqli, on dit plutôt mysql,

    maintenant mysqli/ pdo c'est à toi de voir

    La connexion à la base de données et quelques requêtes du site sont réalisées avec la PDO ?
    d'accord et tu comptes manipuler ta base avec mysqli après.

    ça coince dur la

    J'avais une charrette tirée par des chevaux, mais j'ai acheté une voiture avec un moteur.
    Est-ce que je dois tout le temps rouler avec le moteur, ou est-ce que je peux atteler mes chevaux à la voiture de temps en temps ?
    elle me plait bien celle la, je compte l’intégrer à ma signature
    La rigueur vient toujours à bout de l'obstacle.
    Les détails font la perfection, et la perfection n'est pas un détail.

    J'avais une charrette tirée par des chevaux, mais j'ai acheté une voiture avec un moteur.
    Est-ce que je dois tout le temps rouler avec le moteur, ou est-ce que je peux atteler mes chevaux à la voiture de temps en temps ?

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Attention à ne pas confondre l'API mysql (les fonctions mysql_xxxxx) qui est obsolète avec mysqli qui la remplace.
    Mysql - Choisir une API
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Points : 31
    Points
    31
    Par défaut
    monaka si c'est pour venir flood pas besoin de répondre ici. Je cherche de l'aide parce que je n'avais pas compris et je souhaitais des précisions.
    Si j'avais la science infuse je n'aurai pas besoin de créer un sujet d'aide...
    J'ai bien compris qu'il faut que j'utilise PDO pour réaliser mon application même si dans certains cas de figure je trouve l'utilisation de mysqli plus simple.
    smve

  9. #9
    Membre régulier Avatar de monaka
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2017
    Messages : 64
    Points : 107
    Points
    107
    Par défaut
    pas du tout mon intention, j'y gagne rien d'autant plus que la résolution aiderais tout un chacun à progresser ou encore solidifier.

    désolé j'aimerais simplement taper du code


    donc si tu pouvais nous dire ou tu en es.
    La rigueur vient toujours à bout de l'obstacle.
    Les détails font la perfection, et la perfection n'est pas un détail.

    J'avais une charrette tirée par des chevaux, mais j'ai acheté une voiture avec un moteur.
    Est-ce que je dois tout le temps rouler avec le moteur, ou est-ce que je peux atteler mes chevaux à la voiture de temps en temps ?

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Techniquement, tu peux utiliser PDO et MySQLi dans la même application, mais ce n'est pas une bonne pratique. Le mieux, c'est d'avoir un script de connexion que tu utilises systématiquement. Pour utiliser les deux API en parallèle, il faudrait avoir deux scripts de connexion et utiliser le bon script au bon endroit, et de faire attention à ne pas ouvrir plusieurs fois la connexion dans la même page. Bref, ça va vite être prise de tête.
    L'idéal, c'est donc de choisir une API et de l'utiliser partout.

    Après, si tu préfères mysqli, tu peux utiliser mysqli et si tu préfères PDO, tu peux utiliser PDO (personnellement, je préfère PDO ) juste pas les deux en même temps.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    Invité
    Invité(e)
    Par défaut
    @monaka

    Citation Envoyé par monaka Voir le message
    ...elle me plait bien celle la, je compte l’intégrer à ma signature...
    ATTENTION aux droits d'auteur !!
    Tu dois citer Celira sous peine de poursuite ! (en charrette ou en voiture )


    @smvezoo

    C'est PDO qu'il te faut.
    Point barre.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2017
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2017
    Messages : 65
    Points : 31
    Points
    31
    Par défaut
    Oui, j'ai choisi d'utilisé PDO pour me faire la main sur ce projet

    Voilà j'ai avancé un peu mon code, bon il n'est pas parfait mais fonctionne (il supprime bien l'élément souhaité dans la bdd) :

    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
     
    if (isset($_POST['LIBELLE']))
    {
            $nom_association = $_POST['LIBELLE'];
    	$req = $bdd->prepare('DELETE FROM association WHERE libelle = :libelle');
    	$req->execute(array(
    	'libelle' => $nom_association
    	));
    	echo "L'association a bien été supprimée";
    }
    else 
    {
    	echo "Erreur lors de la suppression de l'association";
    }
     
    ?>
    Donc dans un premier temps on vérifie que la valeur reçu dans le formulaire ne soit pas NULL.
    Si elle est non NULL on prépare une requête qui supprime l'association choisi grâce à son nom.

    J'ai cherché à d'abord récupérer l'id de l'association pour la supprimer mais je n'ai pas réussi... J'ai eu quelques problèmes lorsque je récupérais une valeur elle était du type array et ça posé problème pour la suite

  13. #13
    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
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par smvezoo Voir le message
    J'ai cherché à d'abord récupérer l'id de l'association pour la supprimer mais je n'ai pas réussi... J'ai eu quelques problèmes lorsque je récupérais une valeur elle était du type array et ça posé problème pour la suite
    Citation Envoyé par andry.aime Voir le message
    2- Passe les id des tables directement comme valeur des options au lieu des libellés.
    Tu récupères cet id dans $_POST pour la suppression ensuite.

    A+.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/04/2012, 10h04
  2. supprimer les donnés dans un fichier en vb
    Par rokirakat dans le forum VB.NET
    Réponses: 3
    Dernier message: 17/02/2008, 21h26
  3. Réponses: 12
    Dernier message: 14/02/2008, 04h31
  4. Réponses: 14
    Dernier message: 29/11/2007, 07h47
  5. Réponses: 1
    Dernier message: 20/12/2005, 15h56

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