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 :

UPDATE…SET…WHERE


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de soledad_001
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Points : 53
    Points
    53
    Par défaut UPDATE…SET…WHERE
    Bonjour à tous.
    (Toujours sur ma galère avec PHP MYSQL - ça avance, mais doucement)

    Je ne sais pas où je fais une erreur avec UPADE SET WHERE.
    Pour corriger des données dans une table, j’ai fait un formulaire qui récupère un nom sélectionné dans un menu déroulant, tiré de ma_table.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name='nom'>	
    <option value>Choix du nom</option>
    <option value'choix'></option>
    </select>
    <input type='submit' name='choix'/>

    Un deuxième fichier récupère les données (nom et prenom) dans mon_formulaire.
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form name ="mon_formulaire" method="post" action="maj.php"   enctype="multipart/form-data">
    <table>
    <tr><td > Nom </td><td><TEXTAREA type="text"  name= "nom" ></textarea></td>	</tr>
    <tr><td > Prénom </td><td><TEXTAREA type="text"  name= "prenom" ></textarea></td></table>

    Jusqu’ici tout va bien, je récupère bien les données de la table dans le formulaire.
    En revanche une fois corrigé dans le formulaire, l’action de maj.php (qui suit) ne fonctionne pas ;
    Mon fichier maj.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    < ?php
    if(isset($_POST['mon_formulaire'])){
    $nom=$_GET['choix'];	 
    $cornom= $_POST['nom'];
    $corprenom= $_POST['prenom'];
    $query = "UPDATE ma_table  SET nom='$cornom',  prenom='$corprenom'  WHERE nom ='$nom'"; 
    mysql_query($query) or die ("Erreur MySQL");	
    mysql_close($connexion);
    echo "ok";
    ?php
    Je pense que je définis mal la récupération de la value 'choix' pour la mettre en condition sur l'UPDATE.
    Merci pour votre aide
    Soledad

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    la requete est bonne.

    Pour la partie php c'est pas le bon forum, allez faire un tour ici : http://www.developpez.net/forums/f62...gbd/php-mysql/

  3. #3
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Fait un :

    Pour visualiser concrètement la requête qui tente d'être exécutée.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  4. #4
    Membre du Club Avatar de soledad_001
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Points : 53
    Points
    53
    Par défaut Merci pour vos retours
    En faisant un echo query
    j'obtiens :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE ma_table SET nom='', prenom='', WHERE nom =''

    Il ne reconnait pas effectivement les variables $nom et $ prenom à moins que ce soit la récupération des valeurs

    Je précise que dans mon formulaire, je récupère les données de ma table avec :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <td> Nom :</td><td><textarea type="text"  name="nom">{NOM}</textarea></td>

    (à ce niveau la récupération fonctionne bien, c'est le passage vers la mise à jour avec Update que je ne maîtrise pas.
    Faut il ajouter une value dans le formulaire à exploiter ?
    Merci

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Il faut revoir certaines bases essentielles...

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <textarea type="text"  name="nom">
    Un textarea de type texte, c'est pour les différencier des type bouton ?
    Un textarea est une zone de saisie multiligne et ne possède pas de type !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['mon_formulaire']))
    mon_formulaire, c'est le nom de ton formulaire, pas d'un champ de celui-ci... Il ne possède donc pas de valeur (et d'ailleurs, l'attribut name est déprécié pour un formulaire car précisément, ça ne sert à rien) et n'est donc pas envoyé à la soumission, tu ne peux donc jamais rentrer dans la condition.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre du Club Avatar de soledad_001
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Points : 53
    Points
    53
    Par défaut Merci Bovino, Bonjour
    Le Textarea me permet dans d'autres champs d'avoir des textes plus long (dans la base en LONGTEXT). Je me suis arrêtée qu'à "nom" et "prenom" pour faire plus court.

    En revanche si je supprime
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['mon_formulaire'])){
    , maj.php me retourne erreur mysql.
    Donc effectivement le nom n'a pas d'incidence. Mais j'ai besoin d'une condition (semble-t-il) pour activer l'UPDATE.

    Car en fait, ce formulaire est à l'identique de celui que j'utiliser pour créer une fiche, avec un code PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO ma_table (nom, prenom, etc.) VALUES ($nom, $prenom, $etc)
    et qui fonctionne très bien sans condition.

    Je tourne en rond http://www.developpez.net/forums/ima...s/icon_eek.gif

    Cordialement
    Soledad

  7. #7
    Membre du Club Avatar de soledad_001
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Points : 53
    Points
    53
    Par défaut Suite et re-bonjour
    Tout d'abord merci pour vos réponses, car sans elles, je n'aurais pas repris à zéro mon code.
    En détaillant petit bout par petit bout (chaque champ, chaque variable) et testées une par une, j'ai pu faire fonctionner l'ensemble.
    Globalement le raisonnement tenait, mais dans le détail cela fourmillait d'erreur d'écriture.

    Merci !
    A la prochaine, car j'ai loin d'avoir fini.

    (C'est un petit site en amateur). http://www.developpez.net/forums/ima.../icon_razz.gif

  8. #8
    Membre du Club Avatar de soledad_001
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 101
    Points : 53
    Points
    53
    Par défaut Soledad perdue dans le labyrinthe PHP Mysql
    Bonjour

    Depuis la dernière fois (Merci encore pour le coup de main), cette fois j'essaie de récupérer la "variable" de la fiche du "nom" dont la mise à jour a été faite.

    Nous avions au départ un menu déroulant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<form action='#' method='POST'> nom<select name='nom'>";
    après validation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='submit' name='selection'/>
    avec la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="SELECT nom FROM ma_table  ";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     if(isset($_POST['nom'])){
    	echo 'NOM : '.$_POST['selection'];
    Je souhaiterai passer au nom qui suit 'sélection' pour afficher la fiche suivante, mais je coince.

    Merci si vous pouviez me donner une piste à suivre.

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