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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 8
    Points
    8
    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 confirmé
    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
    Points : 631
    Points
    631
    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 habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

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

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

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 8
    Points
    8
    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 habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 8
    Points
    8
    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 habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 8
    Points
    8
    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 habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 8
    Points
    8
    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 habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 8
    Points
    8
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 8
    Points
    8
    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 confirmé
    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
    Points : 631
    Points
    631
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 8
    Points
    8
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 8
    Points
    8
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 19
    Points : 8
    Points
    8
    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