Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer les données de mon formulaire

Sujet résolu
    24 septembre 2021 à 7:54:06

    Bonjour,

    Je suis les cours de PHP et j'en suis à l'interrogation des données d'une table

    Je travaille à partir de la base de données téléchargée sur le cours.

    J'ai créé une requête préparée et par l'intermédiaire d'un formulaire je souhaite interroger ma base.

    Voici le code de mon formulaire :

    <form action="RequetePreparee.php" method="post">
    		<p><input type="text" name='possesseur' /></p>
    		<p><input type="text" name='prix_max' /></p>
    		<p><input type="submit" name="valider" /></p>
    </form>


    Lorsque j'envoie les données, j'ai l'erreur suivante :

    Parse error: syntax error, unexpected '$req' (T_VARIABLE) in I:\MAMP\htdocs\Tests\RequetePreparee.php on line 13

    Ci-dessous le code du traitement du formulaire :

    <?php
    	try
    	{
    		$bdd =new PDO('mysql:host=localhost;dbname=test;charset=utf8','root','root');
    	}
    	catch (Exception $e)
    	{
    		die('Erreur : ' . $e->getMessage());
    	}
    
    // Preparation de la requête
    	$req = $bdd->prepare('SELECT nom, prix FROM jeux_video WHERE possesseur = ? AND prix <= ? ORDER BY prix')
    	$req->execute(array($_GET['possesseur'], $_GET['prix_max']));
    
    // Lecture des données
    	echo '<ul>';
    	while ($donnees = $req->fetch())
    	{
    		echo '<liv>' . $donnees['nom'] . '(' . $donnees(['prix'] . ' €)</liv>';
    	}
    echo '\ul>';
    
    $req->closeCursor();
    ?>

    J'avoue être "un peu perdu" ...

    Il me semble avoir bien repris les noms de mes controles de formulaires.

    Y a-t-il conflit entre la méthode "POST" du formulaire et l'utilisation de array($_GET[..]) ?

    Je vous remercie pour vos idées.

    -
    Edité par JeanBallat 24 septembre 2021 à 7:57:44

    • Partager sur Facebook
    • Partager sur Twitter
    Jean
      24 septembre 2021 à 8:56:18

      Bonjour,

      regarde bien ta ligne 12, surtout la fin. Ne manque-t-il pas quelque chose ;) ?

      (par contre, une fois que ça sera corrigé, change tes $_GET en $_POST, puisque tu envoies ton formulaire en POST)

      -
      Edité par Lamecarlate 24 septembre 2021 à 8:57:13

      • Partager sur Facebook
      • Partager sur Twitter

      Pas d'aide concernant le code par MP, le forum est là pour ça :) (en plus je n'y connais rien en C)

        25 septembre 2021 à 8:11:25

        Bonjour Lamecarlate,

        Merci beaucoup pour ton coup de pouce. ;)

        Il est vrai que j'ai souvent le souci avec ce fameux ";" en fin d'instruction. J'aurais du y penser ... c'est le début  :honte:

        Ca marche très bien avec la méthode GET par contre si j'utilise la méthode POST (en corrigeant bien sur dans la fonction execute() - voir ci-dessous :

        $req->execute(array($_POST['possesseur'], $_POST['prix_max']));

        J'ai deux erreurs :

        Notice: Undefined index: possesseur in I:\MAMP\htdocs\Tests\RequetePreparee.php on line 13

        Notice: Undefined index: prix_max in I:\MAMP\htdocs\Tests\RequetePreparee.php on line 13

        Aurais-tu une idée du problème ?

        -
        Edité par JeanBallat 25 septembre 2021 à 8:11:44

        • Partager sur Facebook
        • Partager sur Twitter
        Jean
          25 septembre 2021 à 8:28:51

          Bonjour,

          On est d'accord que tu as deux pages ? (un html qui contient le formulaire et un php qui contient le traitement)

          Montre-nous les deux pages complètes

          En mode développement, active les erreurs PDO (cf signature)

          • Partager sur Facebook
          • Partager sur Twitter
            26 septembre 2021 à 7:38:57

            Bonjour Aurelien10,

            J'ai en effet deux pages et à la lecture de ton message, j'ai compris mon erreur.

            En effet, j'avais fait deux pages php. Le fait de modifier l'extension de la page contenant le formulaire a corrigé l'erreur.

            Pou verif, voici ci-dessous le code la page html (FormConsultBdd.html)

            <!DOCTYPE html>
            <html>
            <head>
            	<meta charset="utf-8">
            	<title>Consultation Jeux Vidéo</title>
            </head>
            <body>
            	<form action="RequetePreparee.php" method="POST">
            		<p><input type="text" name='possesseur' /></p>
            		<p><input type="text" name='prix_max' /></p>
            		<p><input type="submit" name="valider" /></p>
            	</form>
            </body>
            </html>

            Et voici maintenant le code concernant la page PHP (RequetePreparee.php)

            <!DOCTYPE html>
            <html>
            	<head>
            		<meta charset="utf-8">
            		<title>Requête préparée</title>
            	</head>
            	<body>
            	<?php
            		try
            		{
            			// Ouverture d'une nouvelle instanciation avec gestion de l'erreur
            			$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8','root','root',array(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION));
            		}
            		catch (Exception $e)
            		{
            			die('Erreur : ' . $e->getMessage());
            		}
            
            	// Preparation de la requête
            		$req = $bdd->prepare('SELECT nom, prix FROM jeux_video WHERE possesseur = ? AND prix <= ? ORDER BY prix');
            	// Récupération des parametres issus de la page html contenant le formulaire
            		$req->execute(array($_POST['possesseur'], $_POST['prix_max']));
            
            	// Lecture des données
            	echo '<ul>';
            		while ($donnees = $req->fetch())
            		{
            			echo '<liv>' . $donnees['nom'] . '(' . $donnees['prix'] . ' €)</liv><br />';
            		}
            
            	// Fermeture du jeu d'enregistrements
            	$req->closeCursor();
            	?>
            	</body>
            </html>

            Merci beaucoup pour tes conseils


            • Partager sur Facebook
            • Partager sur Twitter
            Jean
              26 septembre 2021 à 19:21:52

              je pense plus a du cache qu'autre chose car que le formulaire soit sur une page html ou php, cela ne change rien

              Si le sujet est résolu mettre de le mettre en cliquant en haut a droite de ton 1er message

              • Partager sur Facebook
              • Partager sur Twitter
                27 septembre 2021 à 8:41:34

                Ok, c'est fait

                Bonne journée

                • Partager sur Facebook
                • Partager sur Twitter
                Jean

                Récupérer les données de mon formulaire

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown