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. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut
    bonjour,
    dans ton dernier lien tu fais réference à 3 ligne,peux tu me dire a quoielle correspondent?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $form_valid = 0;
    $form_msg_err = '';
    $form_msg_OK = '';
    si non j'ai commencé a restructurer mon code,avec une erreur sur cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req=$pdo->query( "SELECT * FROM produit WHERE num ='".$_POST['num']."' " );
    Notice: Undefined index: num in C:\wamp\www\7-Applications\gestion.php on line 26

    voici le code complet:
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    <?php
    try{
    $pdo = new PDO( 'mysql:host=localhost;dbname=messageries', 'root','');
    }
    catch(exception $e) {
    	die('erreur '.$e->getmessage());
    }
    $pdo->exec("SET CHARACTER SET utf8");
    ?>	
    <?php
     
    if (isset($_POST['valide'])) 
    {	
     	$num = ( !empty($_POST['num'])) ? $_POST['num'] : '';
    	$prix = ( !empty($_POST['prix'])) ? $_POST['prix'] : '';
     
    $requete=("UPDATE produit SET prix=:prix  WHERE num =  :num  ");
    $res=$pdo->prepare($requete);
    $res->execute(array(
                        ':prix'=>$prix,
    					':num'=>$num
     
    		                   )) ;
     
    }
    $req=$pdo->query( "SELECT * FROM produit WHERE num ='".$_POST['num']."' " );
     
    	?>	
     
    <!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>Messagerie au Support </title>
    </head>
     
    <body>
    <?php
    echo "<pre>";
    print_r($req);
    echo "</pre>";
    ?>
    <form id="monform" name="gestion" method="post" action="gestion.php">
     
    <table width="400" border="1" cellspacing="1" cellpadding="8">
     
    <?php
     
     while($affiche =$req->fetch()) {?>
     
    <form id="monform" name="form1" method="post" action="gestion.php">
     <p>
     <table  width="600 "border="1"  cellspacing="0" cellpadding="2">
     <tr>
          <td>Numéro : </td>
          <td><?php echo  $affiche['num'] ; ?> </td> 
    </tr>
     <tr>	  
          <td>Articles : </td>
          <td><?php echo $affiche['articles'] ; ?> </td>  
     </tr> 
      <tr>
    	  <td>Prix : </td>
          <td><?php echo $affiche['Prix'] ; ?> </td>  
     </tr>   
     <tr>
    	  <td>Modif Prix : </td>
    	   <td><textarea name="Modification"  rows="1" cols="10"></textarea></td>
    	  <td><input type="checkbox" name="valide" value="modifier"/></td>
    </tr>		 
      </table>
     
    <?php
     }?>
    </table>
      <label>
          <input type="submit" name="bouton"  value="Envoyer" />
        </label>
    </form>
    </body>
    </html>
    si non je n'arrive tjs pas à enclencher ma modif via une case cochée

  2. #22
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Il faut vraiment que tu revoies les bases du HTML...

    Sinon, où se trouvent les champs du formulaires dont l'attribut name vaut num ?
    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

  3. #23
    Invité
    Invité(e)
    Par défaut
    Ligne 26 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req=$pdo->query( "SELECT * FROM produit WHERE num ='".$_POST['num']."' " );
    $_POST['num'] vient de nulle part.

    Pose-toi les bonnes questions.
    • comment faire pour sélectionner LE produit a modifier ?
      -> un listing des produits (+ une case "modifier ce produit") ?
      ou une simple liste déroulante ?


    Tu parles d'une case à cocher- OK dans le cas d'un listing !
    • Où la mettre ? comment écrire le code ? quelle info transmettre ?
      -> c'est le num qu'il faut justement transmettre ICI !

    dans le cas d'une liste déroulante, il suffit que la value de chaque option soit le "num" !

    [EDIT]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <form id="monform" name="gestion" method="post" action="gestion.php">
     
    <table width="400" border="1" cellspacing="1" cellpadding="8">
    <?php
     while($affiche =$req->fetch()) {?>
     
    <form id="monform" name="form1" method="post" action="gestion.php">
    2 balises <form...> c'est trop !!

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut
    en fait j'avais fait ce rajout mais j'ai eu la meme erreur ,de ce fait je l'ai enlevé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr>
          <td>Numéro : </td> <input type="hidden" name="NUM" value="<?php echo $affiche['NUM'] ; ?>" </td>
          <td><?php echo  $affiche['num'] ; ?> </td> 
    </tr>

  5. #25
    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 : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    num != NUM !

    Ceci dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td>Numéro : </td> <input type="hidden" name="NUM" value="<?php echo $affiche['NUM'] ; ?>" </td>
    Tu n'arriveras à rien tant que tu feras des erreurs aussi flagrantes dans ton 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

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut
    est ce que dans une liste deroulante on peut avoir 2 colonnes (1 pour le num, et l'autre l'article) ?
    effectivement j'ai enlevé la balise </td> apres <td>Numéro :
    de plus j'ai tout remis en forme concernant mes minuscules -majuscule mais j'obtient toujours la meme erreur

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

    1/ écris le code de connexion dans un fichier (connexion-Bdd.php, par exemple) : ca évite de devoir le recopier de page en page !
    Il suffit alors de l'inclure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    require('./connexion-Bdd.php');
    ?>
    J'ai choisi ici d'afficher une liste déroulante, pour sélectionner l'article que je souhaite modifier :
    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
    <h4>Modifier un Article</h4>
    <form id="selNumform" method="post" action="gestion.php">
    	<p>
    		<label for="idselNum">Choisissez l'article à modifier</label>
    		<select id="idselNum" name="selNum">
    <?php
    	// requête pour sélectionner l'article à modifier :
    	$req = $pdo->query( "SELECT num, article FROM produit ORDER BY article ASC;" );
    	while($row = $req->fetch()) {
    ?>	
    		<option value="<?php echo $row['num']; ?>"><?php echo $row['article']; ?></option>
    <?php
    	}
    ?>
    		</select>
    	</p>
    	<p>
    		<label for="idselNum">&nbsp;</label>
    		<input type="submit" name="valide" value="Sélectionner"/>
    	</p>
    </form>
    Je récupère alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $selNum = $_POST['selNum'];

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut
    je te remercie pour ton aide, si j'ai bien compris de cette maniere on peux rajouter autant de colonne que l'on veux?
    est ce normal que je ne vois pas le champ num dans la liste?

  9. #29
    Invité
    Invité(e)
    Par défaut
    Si tu tiens vraiment à le voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		<option value="<?php echo $row['num']; ?>"><?php echo $row['num'].' - '.$row['article']; ?></option>
    Ah ! Et pour l'affichage, le minimum est d'utiliser htmlspecialchars() (pour les chaines de caractères) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		<option value="<?php echo $row['num']; ?>"><?php echo htmlspecialchars($row['num'].' - '.$row['article']); ?></option>

  10. #30
    Invité
    Invité(e)
    Par défaut
    AUTRE SOLUTION (la plus courante) : afficher un LISTING des articles.

    Dans ce cas, tu peux afficher autant de colonnes que tu veux :
    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
    <h4>Listing des Articles</h4>
     
    <table>
    	<thead>
    		<tr>
    			<th>num></th>
    			<th>article></th>
    			<th>Modifier></th>
    		</tr>
    	</thead>
    	<tbody>
    <?php
    	// requête pour sélectionner l'article à modifier :
    	$req = $pdo->query( "SELECT num, article FROM produit ORDER BY article ASC;" );
    	while($row = $req->fetch()) {
    ?>	
    		<tr>
    			<td><?php echo $row['num']; ?></td>
    			<td><?php echo htmlspecialchars($row['article']); ?></td>
    			<td><a href="gestion.php?selNum=<?php echo $row['num']; ?>">Modifier</a></td>
    		</tr>
    <?php
    	}
    ?>
    	</tbody>
    </table>
    Ici, un simple lien <a...> sur chaque ligne.

    On récupère num avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $selNum = $_GET['selNum'];

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

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

    excusez moi ,j'ai été trop vite dans la resolution du post


    un soucis apparait par rapport a la liste déroulante, en fait que je selectionne un article puis bouton selectionner ma liste déroulante se repositionne automatiquement sur le premier enregistrement.de ce fait mon update ce fait également sur le 1er enregistrement et non sur celui qui a été sélectionné auparavant
    d'autre part,si je desire via la liste deroulante me redirigé vers une autre page php (correspondant à l'article sélectionné), est ce que le selNum va suivre lors d'une mise a jour de la fiche de l'aticle selectioné precedement sur la page gestion?
    encore désolé, merci

  12. #32
    Invité
    Invité(e)
    Par défaut
    D'après toi, à quoi servent $_POST ou $_GET ?

    As-tu au moins essayé de faire des petits tests simples ?

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut
    je sais qu'il vaut mieux utiliser la methode post pour le transfert de données(transfert de données non visible) nous ne sommes pas limité en terme de caractères,ce qui n'est pas le cas de la méthode get(transfert visible dans l'url).

    oui,j'ai fait un test mais mon soucis et avec le selNum qui apparament n'est pas pris en compte dans ma condition de l'update.
    dans ce cas precis j'ai fais un formulaire qui me fait une fiche d'un article, mais la mise a jour ne marche pas alors que si je reste sur un formulaire comprenant ma fiche plus la liste déroulante (a part le probleme de l'affichage de la liste que je t'ai signalé auparavant)mon update fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" name="valide" value="Sélectionner" OnClick="document.forms[0].action='articles.php?'"/> </a>
    ici mon exemple:
    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
    <?php
    require_once("connexionMysql.inc.php");
    $selNum =( !empty($_POST['selNum'])) ? $_POST['selNum']:'';
    //$Num = ( !empty($_POST['NUM'])) ? $_POST['NUM'] : '';
    $Commentaires = ( !empty($_POST['Commentaires'])) ? $_POST['Commentaires'] : '';
     
     if (isset($_POST['bouton']))
     {
     
     $sql=$pdo->prepare("UPDATE produit SET COMMENTAIRES =:Commentaires  where num='".$selNum."'  " ) or die (print_r($pdo->errorinfo())) ;;
    $sql->execute(array(
                        ':Commentaires' =>$Commentaires 
          					)) ; 
     }	
     
    $req1=$pdo->query( "SELECT * FROM produit WHERE num ='".$selNum."' " )or die (print_r($pdo->errorinfo())) ;
    $donnees = $req1->fetch(); 
     
    	?>			
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    </head>
    <body>
    <form id="monform" name="articles" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
     <p>
     <table  width="600 "border="1"  cellspacing="2" cellpadding="2">
     <tr>
          <td>Numéro :  </td>
          <td><?php echo $donnees['NUM'] ; ?> </td> 
    </tr>
     <tr>	  
          <td>Articles : </td>
          <td><?php echo $donnees['articles'] ; ?> </td>  
     </tr> 
      <tr>
    	  <td>Description de l'article : </td>
          <td><?php echo $donnees['description'] ; ?> </td>  
     </tr>
      <tr>
    	  <td>Prix : </td>
          <td><?php echo $donnees['prix'] ; ?> </td>  
     </tr>
      <tr>
    	  <td>Commentaires : </td>
    	  <td><textarea name="Commentaires"  rows="10" cols="60"></textarea></td>
    </tr>
      </table>
      <p>
        <label>
          <input type="submit" name="bouton"  value="Envoyer" />
        </label>
     
      </p>
    </form>
    </body>
    </html>

  14. #34
    Invité
    Invité(e)
    Par défaut
    selNum, dans les exemples que j'ai donné, ne sert qu'à sélectionner l'article à modifier.

    Il sert alors à afficher les bonnes infos dans le formulaires de modification.
    Pour qu'il soit transmis lui-aussi via ce formulaire, il suffit d'utiliser un input caché :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="numOK" value="<?php echo $selNum; ?>" />
    N.B. J'ai mis volontairement un name différent : "numOK".
    C'est ce $_POST['numOK'] qui sera récupéré pour faire l'UPDATE.

    Lis ce bout de tuto : Formulaires : news_formulerCKeditor.php (ici avec CKeditor)
    Tu y retrouveras cet input caché.

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut
    cet input caché doit se situé dans le formulaire d'origine?
    excuse moi de mon ignorance mais pourquoi un input caché?

  16. #36
    Invité
    Invité(e)
    Par défaut
    Réfléchis...

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut
    je me doute que oui puisque que l'on recupere dans le formulaire cible une autre valeur de $_post

  18. #38
    Invité
    Invité(e)
    Par défaut
    Facile à tester, non ?

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 184
    Par défaut
    bonjourje suis rester avec la premiere solution du $selNum car en faisant un print_r je me suis aperçu effectivement que dans mon formulaire cible j'ai bien une réception de données (que je n'ai pas avec la derniere solution que tu m'a proposée). toujour est il qu'a l'envoi d'une information destiné a l'update je n'ai toujours pas d'enregistrement éffectif(avec le print_r je vois bien ma donnée ainsi que l'action sur le bouton.
    j'ai éssajé a nouveau d'enlever la condition a la requete d'update,et ma valeur s'euregistre bien mais sur tout les enregistrements.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $sql=$pdo->prepare("UPDATE produit SET COMMENTAIRES =:Commentaires  where num='".$selNum."'  " ) or die (print_r($pdo->errorinfo())) ;;
    $sql->execute(array(
                        ':Commentaires' =>$Commentaires 
          					)) ; 
    echo "<pre>";
    print_r($sql);
    echo "</pre>";
    ligne affichée par le print_r

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PDOStatement Object
    (
        [queryString] => UPDATE produit SET COMMENTAIRES =:Commentaires  where num=''  
    )

  20. #40
    Invité
    Invité(e)
    Par défaut
    Si tu ne fais pas TOI-MEME les efforts nécessaires pour APPRENDRE et COMPRENDRE, ne serait-ce que les bases élémentaires, ça va être difficile d'aller plus loin.


+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 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