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

Langage PHP Discussion :

Passage infos en $_post et $_GET [PHP 5.6]


Sujet :

Langage PHP

  1. #1
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 171
    Points
    17 171
    Par défaut Passage infos en $_post et $_GET
    Salut

    Je débute en PHP (en cours d'apprentissage pour le plaisir), je connais moyennement HTML, JavaScript et CSS.

    Mon code PHP page Index.php
    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
    41
    42
    43
    44
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Mini-Blog</title>
    		<link href="style.css" rel="stylesheet" /> 
        </head>
        <body class="index">
            <h1>Mon premier blog !</h1>
            <p><a href="Ajout_Modif_Supp_billet.php?id=0" >Ajouter un billet</a></p>
            <p>Derniers billets du blog :</p>
    		<?php
                    // Connexion à la base de données
                    try{$bdd = new PDO('mysql:host=localhost;dbname=bdtest;charset=utf8', 'root', '');}
                    catch(Exception $e){die('Erreur : '.$e->getMessage());}
                    // On récupère les 5 derniers billets
                    $req = $bdd->query('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr
                            FROM billets ORDER BY date_creation DESC LIMIT 0, 5');
                    while ($donnees = $req->fetch())
                    {
                    ?>
    		<form action="Ajout_Modif_Supp_billet.php" method="post" class="news">
    			<!-- pour passer id du billet -->
    			<input type="text" name="id" value="<?php echo $donnees['id']; ?>" style="display:none" />
    			<h3>
    				<?php echo htmlspecialchars($donnees['titre']); ?>
    				<em>le <?php echo $donnees['date_creation_fr']; ?></em>
    				<input type="submit" style="position:relative; left:5%;" value="Modif/Supp" />
    			</h3>
    			<p>
    				<?php
                                            // On affiche le contenu du billet, nl2br() permet de convertir les retours à la ligne en balises HTML<br />. 
                                            echo nl2br(htmlspecialchars($donnees['contenu']));
                                    ?>
    				<br />
    				<em><a href="commentaires.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
    			</p>
    		</form>
    		<?php
                    } // Fin de la boucle des billets
                    $req->closeCursor();
                    ?>
    	</body>
    </html>
    Mon code PHP page Ajout_Modif_Supp_billet.php
    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
    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
    <!DOCTYPE html>
    <html><!-- Ajout_Modif_Supp_billet.php -->
        <head>
            <meta charset="utf-8" />
            <title>Mini-Blog</title>
    	<link href="style.css" rel="stylesheet" /> 
        </head>
     
        <body>
    		<?php
                    if ($_GET['id'] == '0')
                    {
                            //$ajout = true;
                            $donnees['id'] = '';
                            $donnees['date_creation'] = date('Y-m-d H:i:s');
                            $donnees['date_creation_fr'] = '';
                            $donnees['titre'] = '';
                            $donnees['contenu'] = '';
                            ?>
    				<h1>Ajouter billet</h1>
    				<p><a href="index.php">Retour à la liste des billets</a></p>
    				<script> ajout=true </script>
    			<?php
                    }else{
                            ?>
    				<h1>Modifier ou supprimer un billet</h1>
    				<p><a href="index.php">Retour à la liste des billets</a></p>
    			<?php
                    //Connexion à la base de données
                    try{$bdd = new PDO('mysql:host=localhost;dbname=bdtest;charset=utf8', 'root', '');}
                    catch(Exception $e){die('Erreur : '.$e->getMessage());}
                    //recuperation de la ligne d'enregistrement
                    $req = $bdd->prepare('SELECT id, titre, contenu, date_creation, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr
                                                    FROM billets where id= ?');
                    $req->execute(array($_POST['id']));
                    $donnees = $req->fetch();
                    $req->closeCursor();// Important : on libère le curseur pour la prochaine requête
                    } ?>
    		<form action="Enr_Ajout_Modif_Supp_billet.php" method="post" class="CntQuest">
    			<strong>N° id du billet </strong><input type="text" name="id" id="id" style="width:25px" value="<?php echo $donnees['id']; ?>"/>
    			<strong>Date </strong><input type="text" name="date_creation" id = "date_creation" value="<?php echo $donnees['date_creation']; ?>"/>
    			<span> <?php echo $donnees['date_creation_fr']; ?></span>
    			<br />
    			<strong>titre </strong><input type="text" name="titre" style="width:460px" value="<?php echo $donnees['titre']; ?>"/>
    			<br />
    			<strong>Contenu du billet</strong><br /><textarea id="quoi" name="contenu" class="quoi"><?php echo $donnees['contenu']; ?></textarea>
     
    			<input type="radio" name="typeaction" value="Suppr" id="Suppr"/><label for="Suppr" id="LSuppr">Supprimer</label>
    			<input type="radio" name="typeaction" value="Modif" id="Modif" checked /><label for="Modif" id="LModif">Modifier</label>
    			<input type="radio" name="typeaction" value="Ajout" id="Ajout" /><label for="Ajout" id="LAjout">Ajouter</label>
    			<input type="submit" value="Valider mon action" />
    			<script>                        
                                    if (ajout === true)
                                    {
                                            document.getElementById('id').disabled = 'disabled';
                                            document.getElementById('date_creation').disabled = 'disabled';
                                            document.getElementById('Suppr').style.display = 'none';
                                            document.getElementById('Modif').style.display = 'none';
                                            document.getElementById('Ajout').style.display = 'none';
                                            document.getElementById('Ajout').setAttribute("checked", "checked");
                                            document.getElementById('LSuppr').style.display = 'none';
                                            document.getElementById('LModif').style.display = 'none';
                                            document.getElementById('id').value = 'Auto';
                                    }
                            </script>
    		</form>
     
     
    	</body>
    </html>
    Ma problématique:
    l'appel de la page Ajout_Modif_Supp_billet.php par la ligne 10 dans la page index.php
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <p><a href="Ajout_Modif_Supp_billet.php?id=0" >Ajouter un billet</a></p>
    fonctionne correctement ainsi que la page d'enregistrement Enr_Ajout_Modif_Supp_billet.php qui suit.
    MAIS ................. ben quand je fait appel en cliquant sur un bouton Modif/Supp ligne 28 de la page index.php
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" style="position:relative; left:5%;" value="Modif/Supp" />
    , j'ai un message d'erreur dans la page Ajout_Modif_Supp_billet.php à la ligne 11
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_GET['id'] == '0')
    erreur signalée
    Notice: Undefined index: id in C:\wamp64\www\tests1\Ajout_Modif_Supp_billet.php on line 11
    Cette ligne j'ai essayé une condition if isset($_GET) et/ou isset($_POST) toujours une ou plusieurs erreurs.

    Toutes ses erreurs ne plantent pas le programme, la suite modification ajout suppression fonctionne.
    Ma question, comment traiter la différence d'appel (par $_GET et $_POST) en arrivant dans la page Ajout_Modif_Supp_billet.php

    Merci
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Bonjour.
    Je relis au fur et à mesure et j'édite.
    Tu as mis ta balise form dans ta boucle. J'imagine que c'est une erreur, et que tu veux 5 paragraphes, pas 5 formulaires.
    Si tu veux 5 formulaires dans tous les cas, il faudra que tu individualises le form, et tous les input en ajoutant un compteur (genre "id_<?php echo $i; ?>")
    car chaque input produit ensuite une variable du type $_POST['id4'], selon ce que tu as choisi pour le nom de l'input.
    Sinon, en les nommant tous 'id' tout court, ils s'écrasent mutuellement.

    Pour la même raison :
    Il faut que tu mettes un nom, sur ton submit, ainsi tu sauras comment dire dans ta condition, quelqu'un a cliqué sur submit
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" name="modsup" style="position:relative; left:5%;" value="Modif/Supp" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_POST['modsup'])){
       //traitement
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 171
    Points
    17 171
    Par défaut
    Salut

    Merci d'avoir passé du temps pour me répondre.

    ligne 24 de la page Index.php j'ai un type input caché <input type="text" name="id" value="<?php echo $donnees['id']; ?>" style="display:none" />, value=$donnees['id'] se qui me semble bien me permetre d'avoir l'indexage lié à ma BDs et d'appeler par $_POST['id'] la bonne ligne d'enregistrement.
    La BDs devant évoluer je crois ne pas m'être trompé à se stade.

    Je continu mes essais surtout sur la ligne 10 <p><a href="Ajout_Modif_Supp_billet.php?id=0" >Ajouter un billet</a></p>,
    l'idéale pour moi serai de passer un method="post" mais nada cela ne fonctionne pas.

    Peut être est il impossible de passer par method="post" dans une balise <a>...</a>.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 627
    Points
    3 627
    Billets dans le blog
    8
    Par défaut
    Oui, mais relis mon message précédent, je l'ai complété.

    Pour ton lien, oui, c'est $_GET['id'] qui passe par l'url.
    Et oui, passer une variable par GET, c'est écrire directement l'url OU passer par un form avec method GET, qui est d'ailleurs la méthode par défaut si tu oubliais de préciser ta method.
    Tandis qu'une variable par POST, c'est forcément un formulaire, et ça ne concerne pas l'url.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 171
    Points
    17 171
    Par défaut
    Merci beaucoup, j'ai compris et mis en œuvre ta proposition
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" name="modsup" style="position:relative; left:0px; top:32px; height:18px; font-size: 10px;" value="Modif/Supp" />
    dans le fichier Index.php, et
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['modsup'])== false)
    dans le fichier Ajout_Modif_Supp_billet.php

    Merci encore Dendrite, je vais pouvoir dormir tranquille
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

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

Discussions similaires

  1. [MySQL] Problème de passage d'infos avec $_POST
    Par Sekigawa dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 07/02/2012, 16h55
  2. [PHP 5.3] Variable $_POST et $_GET vide
    Par blastafarie dans le forum Langage
    Réponses: 7
    Dernier message: 19/03/2011, 11h29
  3. $_POST ou $_GET et le nom des champs
    Par Calambo dans le forum Langage
    Réponses: 7
    Dernier message: 05/02/2008, 11h10
  4. Réponses: 3
    Dernier message: 25/03/2007, 19h42
  5. [Cookies] $_POST[] ou $_GET[] ou $_SESSION[] ?
    Par psychoBob dans le forum Langage
    Réponses: 4
    Dernier message: 12/05/2006, 14h42

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