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 :

Passage de valeurs entre 2 pages [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut Passage de valeurs entre 2 pages
    Bonjour,

    Je n'arrive pas à passer des valeurs d'une page à une autre.

    Voici le code de la page 1.

    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
    <?php
    // le formulaire
    $x = '';
    $x .= '<form action="update.php" method="post">
             <tr><td colspan="7">Modèle du produit&nbsp;<input type="text" name="modele" size="5"><input name="executer" type="submit" value="Exécuter">
    	 <input type="hidden" name="id"><input type="hidden" name="description"></td></tr></form>';
    echo $x;
     
    if(!empty($_POST['modele'])){
      $cnx = mysql_connect("localhost", "root", "") ;   //connection au serveur
      $db  = mysql_select_db("ma_base") ;  //sélection de la base de données
     
      //je cherche le produit sélectionné
      $req_prod = "select * from " . TABLE_PRODUCTS . " where products_model='$modele'";
      $req = mysql_query($req_prod, $cnx) or die('Erreur SQL !<br>'.$req_prod.'<br>'.mysql_error());
      $data = mysql_fetch_array($req);
      $id = $data['products_id'];
     
      //je cherche la description du produit sélectionné
      $req_desc = "select * from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id ='$id' and language_id='2'";
      $req1 = mysql_query($req_desc, $cnx) or die('Erreur SQL !<br>'.$req_desc.'<br>'.mysql_error());
      $data1 = mysql_fetch_array($req1);
      $description = $data1['products_description']; 
     
      mysql_close();
    }
     
    ?>
    Quand je teste $id et $description dans la page 2 (update.php) les 2 variables sont vides.

    Voici le code de la page 2.

    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
    <?php
     
    //test de passage de var
    $id= $_POST['id'];
    $description = $_POST['description'];
    echo ' ID : '.$id;
     
    if (!empty($_POST) && !empty($_POST['executer'])) {
     	mysql_query('UPDATE "' . TABLE_PRODUCTS_DESCRIPTION .'" SET products_description="'.$description.'" WHERE products_id = "'.$id.'"') or die('Erreur sql ligne ' . __LINE__ . '<br />'.mysql_error());  
        $mess = "<h2>Mise à jour effectuée!</h2>"; 
        echo $description;
    }
     
      $cnx = mysql_connect("localhost", "root", "") ; //connection au serveur 
      $db  = mysql_select_db("ma_base") ;  //sélection de la base de données
     
      //je cherche le produit sélectionné
    if(!empty($_POST['modele'])){ 
      //je charge l'enregistrement à updater
      $req_desc = "select * from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id ='$id' and language_id='2'";
      $req1 = mysql_query($req_desc, $cnx) or die('Erreur SQL !<br>'.$req_desc.'<br>'.mysql_error());
      $data1 = mysql_fetch_array($req1);
      $description = $data1['products_description'];  
    }
     
    // le formulaire
    $x = '';
    $x = '<form action="bdd_mod_description.php" method="post">
             <tr class="texte_tb"><td colspan="7" style="border: 0px solid silver;" class="texte_tb" align="center">MODIFIER DANS LE CATALOGUE LA DESCRIPTION D\'UN PRODUIT</td></tr>
    	 <tr class="texte_tb"><td colspan="7">&nbsp;</td></tr>
    	 <tr><td colspan="7" style="border: 0px solid silver;" class="texte_tb" align="center">Nouvelle description&nbsp;<textarea name="description" cols="70" rows="20" style="overflow:auto">'.$description.'</textarea></td></tr>		 
             <tr><td colspan="7" align="center"><input name="executer" type="submit" value="Exécuter"></td></tr>
    	 <tr><td colspan="7" align="center">&nbsp;</td></tr></form>';
    echo $x; 
    mysql_close();
      ?>
    Dans page 2, j'obtiens l'erreur suivante ID : Erreur sql ligne 92 Erreur de syntaxe près de '='' WHERE products_id =' à la ligne 1 (c'est la ligne de l'UPDATE).Probablement parce que $id est vide...

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonjour,
    déjà, vous n'indiquez aucune valeur dans vos balises hidden.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <input name="id" type="hidden" value="'.$id.'" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <input name="description" type="hidden" value="'.$description.'" />
    De plus, votre partie du code concernant la variable $x doit être située en dessous du résultat de la requête MySQL. Sinon, la variable $id et la variable $description ne sont définies et retournent FALSE.

    Cordialement,
    DaRiaN.

    PS: vous n'avez pas saisi le concept de programmation en PHP.

  3. #3
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut
    Bonjour,

    En faite, votre soucis vient du faite que vous lancez votre requête sql dans la mauvaise page.

    Ce vous devriez faire c'est mettre dans votre page 1 ceci seulement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    // le formulaire
    $x = '';
    $x .= '<form action="update.php" method="post">
             <tr><td colspan="7">Modèle du produit&nbsp;<input type="text" name="modele" size="5"><input name="executer" type="submit" value="Exécuter"></td></tr></form>';
    echo $x;
    ?>
    Et dans votre page update.php mettre l'appel de votre requete sql :

    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
    <?php
    // Votre requete sql de la premiere page
    if(!empty($_POST['modele'])){
    $modele = $_POST['modele'];
      $cnx = mysql_connect("localhost", "root", "") ;   //connection au serveur
      $db  = mysql_select_db("ma_base") ;  //sélection de la base de données
     
      //je cherche le produit sélectionné
      $req_prod = "select * from " . TABLE_PRODUCTS . " where products_model='$modele'";
      $req = mysql_query($req_prod, $cnx) or die('Erreur SQL !<br>'.$req_prod.'<br>'.mysql_error());
      $data = mysql_fetch_array($req);
      $id = $data['products_id'];
     
      //je cherche la description du produit sélectionné
      $req_desc = "select * from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id ='$id' and language_id='2'";
      $req1 = mysql_query($req_desc, $cnx) or die('Erreur SQL !<br>'.$req_desc.'<br>'.mysql_error());
      $data1 = mysql_fetch_array($req1);
      $description = $data1['products_description']; 
     
     
    // le reste de votre deuxieme page
     
    echo ' ID : '.$id;
     
    if (!empty($_POST) && !empty($_POST['executer'])) {
     	mysql_query('UPDATE "' . TABLE_PRODUCTS_DESCRIPTION .'" SET products_description="'.$description.'" WHERE products_id = "'.$id.'"') or die('Erreur sql ligne ' . __LINE__ . '<br />'.mysql_error());  
        $mess = "<h2>Mise à jour effectuée!</h2>"; 
        echo $description;
    }
     
      $cnx = mysql_connect("localhost", "root", "") ; //connection au serveur 
      $db  = mysql_select_db("ma_base") ;  //sélection de la base de données
     
      //je cherche le produit sélectionné
    if(!empty($_POST['modele'])){ 
      //je charge l'enregistrement à updater
      $req_desc = "select * from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id ='$id' and language_id='2'";
      $req1 = mysql_query($req_desc, $cnx) or die('Erreur SQL !<br>'.$req_desc.'<br>'.mysql_error());
      $data1 = mysql_fetch_array($req1);
      $description = $data1['products_description'];  
    }
     
    // le formulaire
    $x = '';
    $x = '<form action="bdd_mod_description.php" method="post">
             <tr class="texte_tb"><td colspan="7" style="border: 0px solid silver;" class="texte_tb" align="center">MODIFIER DANS LE CATALOGUE LA DESCRIPTION D\'UN PRODUIT</td></tr>
    	 <tr class="texte_tb"><td colspan="7">&nbsp;</td></tr>
    	 <tr><td colspan="7" style="border: 0px solid silver;" class="texte_tb" align="center">Nouvelle description&nbsp;<textarea name="description" cols="70" rows="20" style="overflow:auto">'.$description.'</textarea></td></tr>		 
             <tr><td colspan="7" align="center"><input name="executer" type="submit" value="Exécuter"></td></tr>
    	 <tr><td colspan="7" align="center">&nbsp;</td></tr></form>';
    echo $x; 
    mysql_close();
      ?>
    Ps : Darian, je crois que justement, s'il poste c'est bien pour être aidé et non être cassé.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Merci Andalor, vous m'avez sauvé la vie

  5. #5
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut
    De rien, mais n'oubliez pas le petit tag résolu.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Euh...juste un petit problème de syntaxe, j'ai une erreur sur la ligne de l'update et je me mélange les crayons avec les simples et doubles quotes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     mysql_query('UPDATE "' . TABLE_PRODUCTS_DESCRIPTION .'" SET products_description="'.$description.'" WHERE products_id = "'.$idprod.'"')

  7. #7
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE [".TABLE_PRODUCTS_DESCRIPTION."] SET products_description='".$description."' WHERE products_id = ".$idprod);
    Essayez ça pour voir.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Idem...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur sql ligne 115
    Erreur de syntaxe près de '[zen_products_description] SET products_description='Flacon de 5' à la ligne 1

  9. #9
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut
    Essayez sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE [".TABLE_PRODUCTS_DESCRIPTION."] SET [products_description]='".$description."' WHERE products_id = ".$idprod);

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Idem.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Erreur sql ligne 115
    Erreur de syntaxe près de '[zen_products_description] SET [products_description]='Flacon de' à la ligne 1

  11. #11
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut
    Bon, ba on va changer de méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $Requete = "UPDATE ".TABLE_PRODUCTS_DESCRIPTION." SET products_description='$description' WHERE products_id = ".$idprod);
     
    $query =  mysql_query($Requete) or die (echo mysql_error());

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error in c:\program files\easyphp1-8\www\zencart\admin\bdd_mod_description_update.php on line 116
    La ligne 116 est la ligne $Requete.

  13. #13
    Membre éprouvé
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $Requete = "UPDATE ".TABLE_PRODUCTS_DESCRIPTION." SET products_description='$description' WHERE products_id = ".$idprod;
     
    $query =  mysql_query($Requete) or die (echo mysql_error());
    Désolé j'avais oublié de retirer une paranthèse à la fin.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error in c:\program files\easyphp1-8\www\zencart\admin\bdd_mod_description_update.php on line 117
    La ligne 117 est la ligne $query.

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Curieux, j'ai l'erreur au chargement de la page 2 donc avant d'avoir cliqué sur le submit...

  16. #16
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Citation Envoyé par Andalor Voir le message
    Ps : Darian, je crois que justement, s'il poste c'est bien pour être aidé et non être cassé.
    Bonjour,
    vous ne comprenez pas le sens de mes interventions et si vous pensez qu'il n'y a aucune once d'aide dans mon précédent message, vous vous trompez lourdement.

    Proverbe chinois : Si tu donnes un poisson à un homme, il se nourrira une fois. Si tu lui apprends à pêcher, il se nourrira toute sa vie.

    Cordialement,
    DaRiaN.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Pour vérifier la syntaxe SQL, j'ai modifié la requête comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $products_id = 1;
       $Requete = "UPDATE ".TABLE_PRODUCTS_DESCRIPTION." SET products_description='$description' WHERE products_id = '" .(int)$products_id. "' and language_id = '" .(int)$language_id. "'";
       echo 'Requete : '.$Requete;
       //$query =  mysql_query($Requete, $cnx) or die (echo mysql_error());
    J'ai copié la requête retournée par l'echo et je l'ai balancée dans PhpMyadmin.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE zen_products_description SET products_description='Flacon de 500 ml.
    Additif pour rigidifier le plastileurre, toutes versions.
    jhbjhb' WHERE products_id = '1' and language_id = '2'
    L'update s'est bien déroulé, ma modif(jhbjhb) a été convenablement stockée. La requête est donc correcte, reste à trouver pourquoi le mysql_query plante...

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    Bon en fait j'ai trouvé une erreur, quand on valide la modif on n'a plus de connexion à la bdd. En ajoutant les 2 lignes $cnx et $db ça fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (!empty($_POST) && !empty($_POST['executer1'])) {
     
       $cnx = mysql_connect("localhost", "root", "") ;   //connection au serveur
       $db  = mysql_select_db("zencart") ;  //sélection de la base de données
     
       $products_id = 1;// à ce stade $products_id est vide, je le met à 1 pour tester la requête qui suit
       $Requete = "UPDATE ".TABLE_PRODUCTS_DESCRIPTION." SET products_description='$description' WHERE products_id = '" .(int)$products_id. "' and language_id = '" .(int)$language_id. "'";
       $query =  mysql_query($Requete, $cnx) or die('Erreur SQL !<br>'.$Requete.'<br>'.mysql_error());
       $mess = "<h2>Mise à jour effectuée!</h2>"; 
     
    }
    Le problème est que $products_id est vide. Si je me remet sur l'enregistrement, la modif de mon textarea est écrasée par le contenu du champ texte.
    Donc là je patine

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Par défaut
    J'ai réglé mon pb en ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="products_id" type="hidden" value="'.$products_id.'" />
    dans mon formulaire.

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

Discussions similaires

  1. passage de valeur entre deux pages avec a href
    Par phenix1988 dans le forum Langage
    Réponses: 9
    Dernier message: 14/03/2011, 16h52
  2. Passage de valeurs entre 2 pages.
    Par fontaine_rousse dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/06/2007, 09h58
  3. Passage de données entre deux pages
    Par spica92 dans le forum ASP
    Réponses: 2
    Dernier message: 08/09/2005, 14h38
  4. passage de parametre entre deux page asp
    Par tomtom25 dans le forum ASP
    Réponses: 4
    Dernier message: 01/04/2005, 16h16
  5. Passage de valeurs entre fenêtres différentes
    Par Amnesiak dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2005, 15h10

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