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 :

récupération id méthode get


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut récupération id méthode get
    Je suis entrain de réaliser un site et dedans j'ai un formulaire pour mettre des données à jours. Le problème c'est que la requête ne veut pas s'éxécuter pour mettre à jours l'enregistrement.

    voici l'erreur:
    Notice: Undefined variable: sejour in C:\wamp\www\site\sejourModCtlUpdate.php on line 66
    script modif: script qui affiche la liste des pays puis un tableua avec les sejour correpondant au pays:

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <?php
        session_start();
        if (isset($_SESSION["pseudo"]) == false)
        {
            header("Location:index.php");
    }
    ?>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <meta http-equiv="Content-Language" content="fr" />
        <link rel="stylesheet" href="css/stylesMiseEnPage.css" type="text/css" />
        <title>Formulaire de Modification de séjour</title>
        <script></script>
    </head>
    <?php
    include("includes/accesBDD.php");
    include("includes/utilitaires.php");
    ?>
    <body>
        <?php
        // début de page et bandeau
        include("includes/debutPageEtBandeau.php");
        // ajout menu
        include("includes/menuAdmin.php");
        // ajout actualités
        include("includes/actualite.php");
        ?>
     
        <div id="corps">
            <h1 class="titrecentre">Modification des caractéristiques des séjours</h1>
            <?php
            if(count($_POST)>0)
            {
                // récupération du pays sélectionné
                $pays = $_POST["pays"];
            }
            else
            {
                // cas de l'appel du script à partir du menu
                $pays="";
            }
            ?>
     
            <form id="sejourajout" action="" method="POST">
                <table class="centre">
                    <tr>
                        <td>Sélectionnez le pays pour lequel vous souhaitez visualiser les séjours : </td>
                        <td>
                            <select name="pays" id="pays" onchange="this.form.submit();">
                                <option value="">Choisissez le pays</option>
                                <?php
                                $requete = "select distinct pays from sejour";
                                $result = $db->query($requete);
                                $ligne = $result->fetch_object();
     
                                while($ligne != false)
                                {
                                    $cle = $ligne->pays;
                                    $valeur = $ligne->pays;
                                    if($cle == $pays)
                                        echo"<option value=$cle selected='selected'>$valeur</option>";
                                    else
                                        echo"<option value=$cle>$valeur</option>";
     
                                        $ligne = $result->fetch_object();
                                }
                                ?>
                            </select>
                        </td>
                    </tr>
                </table>
                <br /><br />
                <?php
                if(isset($_POST['pays']) && $_POST['pays']!="")
                {
                    $requete = "select * from sejour where pays='$pays'";
                    $result = $db->query($requete);
                    $nbLigne = $result->num_rows;
     
                    if($nbLigne == 0)
                    {
                        Echo "<script language='Javascript'>";
                        Echo "<!--\n"; // le "\n" permet de passer une ligne en Javascript
                        Echo "alert('Il n'y a pas de séjour pour le pays sélectionné !');\n";
                        Echo "// -->\n";
                        Echo "</script\n>";
                    }
                    else
                    {
                        ?>
                        <table class="quadrille">
                            <tr>
                                <th>Intitulé</th>
                                <th>Pays</th>
                                <th>Prix</th>
                                <th>Votre choix</th>
                            </tr>
                            <?php
                                $ligne = $result->fetch_object();
                                while($ligne!= false)
                                {
                                    $intitule = $ligne->intitule;
                                    $prix = $ligne->prix;
                                    $id = $ligne->id;
     
                                    // on affiche le contenu de l'enregistrement obtenu
                                    Echo "<tr><td>".$intitule."</td>";
                                    Echo "<td>".$pays."</td>";
                                    Echo "<td>".$prix."</td>";
                                    Echo "<td><a href='sejourModCtlUpdate.php?id=$id'>Cliquer ici pour modifier le séjour</td></tr>";
     
                                    $ligne= $result->fetch_object();
                                }
                            ?>  
                        </table>
                        <?php
                    }
                }
                ?>
        </div>
        <?php
        // pied de page
        include("includes/piedPage.php");
        ?>
        </body>
    </html>
    script contrôle update: script qui affiche le formulaire avec les caractérisitque du séjour:
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    <?xml version="1.0" encoding="UTF-8"?>
    <!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" xml:lang="fr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <meta http-equiv="Content-Language" content="fr" />
        <link rel="stylesheet" href="css/stylesMiseEnPage.css" type="text/css" />
        <title>Formulaire de modification de séjour</title>
        <script></script>
    </head>
    <body>
        <?php
        include("includes/accesBDD.php");
        include("includes/utilitaires.php");
        // début de page et bandeau
        include("includes/debutPageEtBandeau.php");
        // ajout menu
        include("includes/menuAdmin.php");
        // ajout actualités
        include("includes/actualite.php"); 
        ?>
        <div id="corps">
            <?php
            if (count($_GET) >0)
            {
                // --------------------------------------------------------------
                // le script est appelé par le script sejourModificationParPays
                // --------------------------------------------------------------
                // on récupère le n° du séjour passé dans l'url (?id=valeur)
                $sejour = $_GET['id'];
     
                // mise en forme de la requête 
                $requete = "select * from sejour where id=".$sejour;
                // appel de la fonction qui permet d’exécuter la requête contenue dans $requete
                $result =$db ->query($requete);
                // num_rows permet d'obtenir le nombre d'enregistrements retournés par la requête
                $nbLigne= $result->num_rows;
     
                // s'il n'y a pas de séjour, on affiche un message d'erreur
                if ($nbLigne == 0)
                    echo ("<script>alert('le séjour n'existe pas ! ')</script>");
                else
                {
                    $ligne = $result->fetch_object() ;
                    $intitule = $ligne->intitule;
                    $prix = $ligne->prix;
                    $pays = $ligne->pays;
                }
            }
            if (isset($_POST["valider"]))
            {
            // -------------------------------------------------------------------------------------------------------------------------
            // l'utilisateur a appuyé sur le bouton valider : les données modifiées sont contrôlées et l' enregistrement est mis à jour
            //--------------------------------------------------------------------------------------------------------------------------
                // création du tableau qui va contenir les erreurs de validité
                $tableauErreurs = array();
     
                // appel de la fonction php supEspaceDebutFin 
                supEspaceDebutFin($_POST);
                var_dump($_POST);
                // appel de la fonction extract 
                extract ($_POST);
     
                // Appel de la fonction qui vérifie les valeurs du formulaire
                verifierSejour($intitule, $pays, $prix, $tableauErreurs);
                if (nbErreurs($tableauErreurs)==0)
                {
                    // mise à jour du séjour si les données sont correctes
                    $requete = "update sejour set intitule ='$intitule', prix=$prix, pays='$pays' where id=$sejour";
                    echo $requete;
                    $result =$db ->query($requete);
                    // $result contient le nombre d'enregistrements mis à jour
                    if ($result == 1)
                    {
                        // on affiche un message indiquant que la mise à jour a bien été effectuée
                        echo ("<script>alert('Le séjour a été mis à jour ! ')</script>");
                        ?>
                        <!-- affichage des boutons pour réaliser une autre modification -->
                        <p class="centre">
                            <a href="sejourModificationMenu.php" >
                                <input type="button" value="Retourner au menu de modification des séjours"/>
                            </a><br/><br/>
                            <a href="sejourModificationParPays.php" >
                                <input type="button" value="Revenir au formulaire de sélection d'un pays"/>
                            </a>
                        </p>
                        <?php
                    }
                    else
                    {
                        // si la requête ne retourne aucune ligne, on affiche un message d'erreur
                        echo ("<script>alert('problème de mise à jour : accès au séjour impossible!')</script>");
                    }
                }
            }
            if (count($_GET) >0 || (isset($tableauErreurs) && nbErreurs($tableauErreurs)>0))
            {
                // affichage du formulaire avec les caractéristiques du séjour
                // clic sur le séjour ou erreur de modification
                // ------------------------------------------------------------
                ?>
                <h1 class="titrecentre">Modification des caractéristiques des séjours</h1>
                <form id="sejourmodif" action="sejourModCtlUpdate.php" method="POST" onSubmit="return verifierSejour();">
     
                    <?php
                    include("sejourFormulaire.php");
                    ?>
                    <!-- le numéro du séjour doit être passé pour la mise à jour : il est passé en champ caché -->
                    <input type="hidden" name="sejour" id="sejour" size= "30" value="<?php echo ($sejour) ;?>"/>
                </form>
                <?php
            }
            ?>
            <?php
                // gestion des erreurs s'il y a lieu
                //------------------------------------
                if (isset($tableauErreurs) && nbErreurs($tableauErreurs)>0)
                {
                    // affichage d'un message contenant les erreurs rencontrées 
                    $lstErr = listeErreurs($tableauErreurs);
                    echo("<span class='erreur'>".$lstErr."</span>");
                }
            ?>
    </div>
     
    <?php
    // pied de page 
    include("includes/piedPage.php");
    ?>
     
    </body>
    </html>
    l'erreur se trouve dans le second script dans la requete update. elle ne récupère pas l'identifiant du sejour à modifier qui est en mode get

    merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ton code est un sacré bric à brac.
    Bref, l'erreur se produit dans la section if (isset($_POST["valider"])) ; je ne sais pas dans quel code il y a ce champs "valider" mais en tout cas il faut que soit fourni également l'id.

    Également :
    PAS BON
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (count($_GET) >0)
            {
               $sejour = $_GET['id'];
               $requete = "select * from sejour where id=".$sejour;
               $result =$db ->query($requete);
    MIEUX (test précis, requête préparée protégée des injections SQL)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset($_GET['id']))
            {
               $requete = "select * from sejour where id= :id";
               $sth = $db->prepare($requete);
               $sth->execute(array(':id'=>$_GET['id']));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Voici le code du formulaire et pour l'id sa y est dans un des deux scripts:

    Code html : 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
    	<form id="ajoutsejour" action="" method="post" onsubmit="return verifSejour()">
    	    <table>
    		<tr>
    		    <td colspan="2">
    			<p>Attention: Ne pas mettre une virgule pour le prix mais un point!<br/><br /></p>
    		    </td>
    		</tr>
    	        <tr>
    	            <td>
    	                <label for="intitule">Intitulé : </label><br /><br />
    	            </td>
    	            <td>
    	                <input type="text" name="intitule" id="intitule" value="<?php echo ($intitule) ;?>"/><br /><br />
    	            </td>
    	        </tr>
    	        <tr>
    	            <td>
    	                <label for="pays">Pays :</label><br /><br />
    	            </td>
    	            <td>
    	                <input type="text" name="pays" id="pays" value="<?php echo ($pays) ;?>" cols="30" rows="4"/><br /><br />
    	            </td>
    	        </tr>
    	        <tr>
    	            <td>
    	                <label for="prix">Prix :</label><br /><br />
    	            </td>
    	            <td>
    	                <input type="text" name="prix" id="prix" value="<?php echo ($prix) ;?>"/><br /><br />
    	            </td>
    	        </tr>
    	        <tr>
    	            <td colspan="2">
    	                <div id="bouton">
    	                    <input type ="submit" name="valider" id="valider" value= "Ajouter le séjour"/>
    	                </div>
    	            </td>
    	        </tr> 
    	    </table>
    	</form>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il n'y a pas l'id dans ce formulaire.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Il est en hidden dans le script update entre les balises form

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par totot Voir le message
    Il est en hidden dans le script update entre les balises form
    Tu peux nous mettre en évidence où il se trouve?
    Car il n'y a pas d'input hidden avec un name="id" dans ton formulaire.

    A+.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    ligne 109 script 2
    c la séjour qui a reçu l"id

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut revoir les bases :

    - avec un lien page.php?id=4444 tu recois $_GET['id]

    - avec un input name="sejour"dans un formulaire method="post", tu reçois $_POST['sejour']
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2013
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 225
    Par défaut
    Je dois faire comment alors car je veut garder le get

  10. #10
    Invité
    Invité(e)
    Par défaut
    method="post" à remplacer par method="get" ainsi que les modifications proposées avant

Discussions similaires

  1. Méthode GET > Récupération avec des variables dynamiques
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 30/03/2007, 15h28
  2. Variable Session et méthode GET
    Par nizarsm dans le forum ASP
    Réponses: 1
    Dernier message: 06/04/2006, 16h42
  3. [Tkinter] Méthode get() dans une boucle while
    Par Thundie dans le forum Tkinter
    Réponses: 2
    Dernier message: 04/02/2006, 00h06
  4. Pb de récupération de $_POST/GET
    Par Herode dans le forum Langage
    Réponses: 11
    Dernier message: 07/11/2005, 16h21
  5. [Servlet] Méthode Get : récupérer données de l'url
    Par david71 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 01/02/2005, 11h52

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