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 :

Variable dans une condition where [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut Variable dans une condition where
    bonjour à tous,

    avant tout, je debute donc ma demande peut paraitre bizarre, mais bon.
    j'ai une table qui s'appelle produit donc il y a 3 colonnes
    n° qui est en clé primaire
    articles
    prix

    je desire modifier le prix en fonction du n° de ma table,donc voila ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if  (isset($_POST['valide'])){
    $id = $_POST['n°'];	
    $articles=$_POST['articles'];
    $prix=$_POST['prix'];
    $res=$pdo->prepare("UPDATE produit SET articles =:articles ,prix=:prix  WHERE n°=  '$id'  ");
    $res->execute(array(
        ':articles'=>$articles,
        ':prix'=>$prix    )) ;
    }
    quand je desire appliquer le code j'ai un message d'erreur
    Undefined index: N_ID in C:\wamp\www\projets\agro.php on line 25
    si j'enleve '$id' et je le remplace par un numero ex:6 effectivement ma mise à jour prend effet.
    pouvez vous m'aider à resoudre ce soucis?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1/Existe-il un champ de formulaire avec comme name "" ???
    A ta place, j'éviterais les caractères spéciaux (de même que les espaces !) dans les noms de variables et de champs de tables.

    2/ Tu as raté une étape dans la compréhension du concept de "requête préparée" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $res=$pdo->prepare("UPDATE produit SET articles =:articles ,prix=:prix  WHERE n°=  '$id'  ");
    $res->execute(array(
                        ':articles'=>$articles,
                          ':prix'=>$prix    )) ;
    s'écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $res=$pdo->prepare("UPDATE produit SET articles =:articles, prix=:prix WHERE num = :id  ");
    $res->execute(array(
                        ':articles'=>$articles, 
                        ':prix'=>$prix,
                        ':id'=>$id
                        )) ;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    merci pour ta réponse rapide, pour répondre à ta première question ,non je n'ai pas ce champ dans mon formulaire.
    si j'ai bien compris il faut qu'il exite une zone correspondant à mon numéro de ma table sur le formulaire?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Il faut bien sélectionner le bon article, non ?

    Donc, (par exemple) avec une liste déroulante (construite à partir de la BdD) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <select name="num">
       // requete "SELECT....... 
       // pour chaque ligne de la table :
       <option value="<?php echo $row['num']; ?>"><?php echo $row['articles']; ?></option>
     
    </select>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    j'ai éssayé de faire une autre façon que la tienne car a vrai dire le fait d'avoir une liste déroulante ne me plait pas trop
    voici ce que j' ai fait:

    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
    if  (isset($_POST['valide']))
     
    {
    $sql=$pdo->query( "SELECT num FROM produit " );			
    while( $data = $sql->fetch())
    echo $data['num']."<br/>"	;
    {
     
    $id=$data['num'];	
    $articles=$_POST['articles'];
    $prix=$_POST['prix'];
    $res=$pdo->prepare("UPDATE produit SET articles =:articles, prix=:prix WHERE num = :id  ");
    $res->execute(array(
                                 ':articles'=>$articles, 
                                 ':prix'=>$prix,
                                 ':id'=>$id
                                                              )) ;
    }			
     
    }
    une petite precision que je n'ai pas faites valide est un bouton qui se trouve dans le tableau.
    pour le moment j'arrive bien a lire tout mes ID ,mais quand l'update s'effectue ,il s'effectue sur tout mes enregistrements.
    est ce qu'en rajoutant une condition dans mon select cela pourrait m'aider qu'a garder l'ID qui m'interesse.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Montre ton formulaire.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    voici mon formulaire:

    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
    67
    68
    69
    70
    71
    <?php
    $pdo = new PDO( 'mysql:host=localhost;dbname=produit', 'root','');
    ?>
     
    <?php
    if  (isset($_POST['valide']))
     
    {
    $sql=$pdo->query( "SELECT num FROM produit " );			
    while( $data = $sql->fetch())
    echo $data['num']."<br/>"	;
    {
     
    $id=$data['num'];	
    $articles=$_POST['articles'];
    $prix=$_POST['prix'];
    $res=$pdo->prepare("UPDATE produit SET articles =:articles, prix=:prix WHERE num = :id  ");
    $res->execute(array(
                                 ':articles'=>$articles, 
                                 ':prix'=>$prix,
                                 ':id'=>$id
                                                              )) ;
    }			
     
    }
     
    ?>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>gestion </title>
    </head>
     
    <body>
    <a href="test2.php?Logout=ok" >Deconnexion</a>
    <br/>
     
    <table width="1200" border="1" cellspacing="1" cellpadding="8">
     
    <tr>
                  <td>Numéro</td>	
                  <td>article</td>	
    	<td>prix</td>	
     
    </tr>
    <?php	
    $requete=$pdo->query( "SELECT * FROM produit " );	
     while($affiche =$requete->fetch())   { ?>	
     
    <tr>
    	<td><?php echo $affiche['num']; ?></td> 	
    	<td><?php echo $affiche['articles']; ?></td>
                  <td><?php echo $affiche['prix']; ?></td>
    	<td><input type="submit" name="valide" id="valide"value="valider" /></td>
     
    </tr>	
    <?php	}?>
     
    </table>
          <label>
          <input type="submit" name="bouton"  value="Envoyer" />
          </label>
    <?php
     
    $requete->closeCursor();
     
    ?>
    </body>
    </html>

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bon.
    Ce que tu montres n'est pas un formulaire...


  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    et voila correction faites:

    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
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>gestion </title>
    </head>
     
    <body>
    <form id="monform" name="form1" method="post" action="">
    <a href="test2.php?Logout=ok" >Deconnexion</a>
    <br/>
     
    <table width="800" border="1" cellspacing="1" cellpadding="8">
     
    <tr>
                  <td>Numéro</td>	
                  <td>article</td>	
    	<td>prix</td>	
     
    </tr>
    <?php	
    $requete=$pdo->query( "SELECT * FROM produit " );	
     while($affiche =$requete->fetch())   { ?>	
     
    <tr>
    	<td><?php echo $affiche['num']; ?></td> 	
    	<td><?php echo $affiche['articles']; ?></td>
                  <td><?php echo $affiche['prix']; ?></td>
    	<td><input type="submit" name="valide" id="valide"value="valider" /></td>
     
    </tr>	
    <?php	}?>
     
    </table>
          <label>
          <input type="submit" name="bouton"  value="Envoyer" />
          </label>
    <?php
     
    $requete->closeCursor();
     
    ?>
    </form>
    </body>
    </html>

  10. #10
    Invité
    Invité(e)
    Par défaut
    Lis le tutoriel attentivement

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    merci pour le lien, si j'ai bien compris le tutoriel dans un formulaire il n'y a pas de requete??
    donc si c'est le cas j'ai tout a refaire .
    excusez moi pour la perte de temps que je vous ai occasioné

  12. #12
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while( $data = $sql->fetch())
    echo $data['num']."<br/>"	;
    {
    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

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    bonjour bovino,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while( $data = $sql->fetch())
    echo $data['num']."<br/>"	;
    {
    je voulais juste verifier que ma requete me renvoyer mes ID de la table, car je desirai qu'il me renvoi seulement l'id que je selectionne via un bouton dans mon tableau

    si non j' arrive a faire une mise à jour sur seulement le dernier enregistrement qui a été éffectué mais je ne peux rien faire sur les précedents.toutes les modifications que j'apporte sur les précédents affecte le dernier.

    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
    if  (isset($_POST['valide']))
     
    {
    $sql=$pdo->query( "SELECT num FROM produit " );			
    while( $data = $sql->fetch())
    $id=$data['num'];	
    $articles=$_POST['articles'];
    $prix=$_POST['prix'];	
    {
     
     
    $res=$pdo->prepare("UPDATE produit SET articles =:articles, prix=:prix WHERE num = :id  ");
    $res->execute(array(
                                 ':articles'=>$articles, 
                                 ':prix'=>$prix,
                                 ':id'=>$id
                                                              )) ;
    }			
     
    }

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    j'ai mis au clair ma page en esperant que cela convient:
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>gestion articles</title>
    </head>
     
    <body>
     
    <form id="monform" name="gestion" method="post" action="gestion.php">
     
    <table width="400" border="1" cellspacing="1" cellpadding="8">
     
    <tr>
        <td>Numéro</td>	
        <td>Articles</td>	
    	<td>Prix</td>
    	<td>Modif Prix</td>
     
    </tr>
    <?php
     
     	$id = ( !empty($_POST['num'])) ? $_POST['num'] : '';
    	$articles = ( !empty($_POST['articles'])) ? $_POST['articles'] : '';
    	$prix = ( !empty($_POST['prix'])) ? $_POST['prix'] : '';
    	$modification = ( !empty($_POST['modification'])) ? $_POST['modification'] : '';
     
    $requete=$pdo->query( "SELECT * FROM produit " );	
     while($affiche =$requete->fetch()) {?>
     
    <tr>
    	<td><?php echo  $affiche['num']; ?></td> 	
    	<td><?php echo $affiche['articles']; ?></td> 
        <td><?php echo $affiche['prix']; ?></td> 
    	<td> <textarea name="modification"  rows="1" cols="10"></textarea></td>
    	<td><input type="checkbox" name="valide" value="modifier"/></td>
     
    </tr>	
    <?php
    }
     
    $requete=("UPDATE produit SET prix=:prix  WHERE num =  :id  ");
    $res=$pdo->prepare($requete);
    $res->execute(array(
     
    					':prix'=>$prix,
    					':id'=>$id
     
    		                   )) ;
    ?>
    </table>
     
        <label>
          <input type="submit" name="bouton"  value="Envoyer" />
        </label>
     
    </form>
    </body>
    </html>

  15. #15
    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
    On va dire que syntaxiquement, ça semble correct, mais ensuite il n'y a aucune logique dans ton code...

    Tout d'abord, tu ferais bien de revoir tes connaissances en HTML qui semblent assez anciennes et dépassées.
    Ensuite, tu définis des champs de formulaire et des variables qui ne servent à rien.
    Pour finir, tu affiches des informations produit (enfin, j'imagine que c'est ça) et ensuite, tu mets à jour ta base, ce qui signifie que l'affichage de l'article que tu vas modifier ensuite est faux pour l'utilisateur.

    Enfin, il est fortement déconseillé de mélanger comme tu le fais le traitement PHP et l'affichage HTML.
    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

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    merci pour tes remarques, comme je l'avais spécifié sur mon premier message ,je suis débutant et il est vrai que pour les requetes préparées pour pour ces un nouveauté.

    il est vrai que ma logique n'étant pas bonne j'ai réctifié en demandant une mise a jour puis l'affichage,mais cependant quand je coche la case mon changement de prix ne s'éffectue pas .aurrais tu une piste car là je sèche complétement

    merci encore

    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
    <?php
     
     	$id = ( !empty($_POST['num'])) ? $_POST['num'] : '';
    	$prix = ( !empty($_POST['prix'])) ? $_POST['prix'] : '';
     
    $requete=("UPDATE produit SET prix=:prix  WHERE num =  :id  ");
    $res=$pdo->prepare($requete);
    $res->execute(array(
                        ':prix'=>$prix,
    	      ':id'=>$id
     
    		                   )) ;
     
     
    $res=$pdo->query( "SELECT * FROM produit " );	
     while($affiche =$res->fetch()) {?>
     
    <tr>
    	<td><?php echo  $affiche['num']; ?></td> 	
    	<td><?php echo $affiche['articles']; ?></td> 
        <td><?php echo $affiche['prix']; ?></td> 
    	<td> <textarea name="modification"  rows="1" cols="10"></textarea></td>
    	<td><input type="checkbox" name="valide" value="modifier"/></td>
     
    </tr>
    <?php
     }?>

  17. #17
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Voici comment le fichier doit commencer :
    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
    <?php if( session_id()=='' ){ session_start(); }
    header('Content-type:text/html; charset=UTF-8');	// encodage UTF-8
    error_reporting(E_ALL); 	// affichage des erreurs, en phase de TEST
    // -----------------------------------------------------
    // ICI, on va faire le TRAITEMENT DU FORMULAIRE, si recu
    if(isset($_POST['submit']))
    {
    	// 1- récupération des données
    	//.........
    	// 2- gestion des erreurs
    	//.........
    	// 3- Traitement si OK
    	//.........
    }
    // -----------------------------------------------------
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8" />
    	<meta name="robots" content="noindex,nofollow" /> <!-- ICI, on fait de la gestion de données (admin) : INUTILE d'indexer la page par les moteurs de recherche -->
     
    	<meta name="keywords" content="quelques mots clé significatifs, séparés par des virgules" />
    	<meta name="description" content="description de la page" />
     
    	<title>gestion articles</title>
    </head>
    MAIS AVANT TOUT, il faut bien penser à la LOGIQUE des évènements, pour une bonne CONCEPTION !
    Sinon... intutile de coder...

    Voilà un exemple de gestion :

    N.B. Accroche-toi, ça va piquer les yeux...

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    je te remercie pour les liens ,mais pour moi c'est trop complexe.(tu mas mélanger plusieurs language, et moi j'essaie juste de comprendre le php avec le PDO
    je vais éssayer de m'organiser comme tu me l'a indiquer, mais peux tu me donner une piste ou un lien pour que je puisse essayer de résoudre mon soucis?

    merci

  19. #19

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Points : 65
    Points
    65
    Par défaut
    éffectivement ,je comprends mieux le principe ,est ce que je pourrais te soumettre mon formulaire une fois qui sera établi?car il est vrai que ce que j'essai de faire c'est un exercice que je m'impose.
    d'autre part quand je te parlait d'un lien c'etait pour mon problème initial concernant de faire un update en fonction de l'ID,aurrais tu lien pouvant m'explique cela ?

    merci encore pour toutes ces préciseuse information

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/01/2017, 16h07
  2. [MySQL] Introduire une variable dans la clause where
    Par ledisciple dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/08/2009, 12h39
  3. acceder à une variable qui est dans une condition
    Par Snipy dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2009, 12h39
  4. variable dans la condition d'une requete
    Par .TKrD. dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 30/04/2009, 11h22
  5. Fonction MAX dans une condition WHERE
    Par borgfabr dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 16h06

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