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 :

Formulaire qui doit se renvoyer le résultat de sa requête dans ses propres champs input type = text [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Formulaire qui doit se renvoyer le résultat de sa requête dans ses propres champs input type = text
    Bonjour!

    Tout d'abord un grand merci à tous les intervenants de ce site qui m'ont permis d'aborder php depuis une semaine à la suite de la lecture de leurs messages sur le forum (après un long séjour passé avec vb et vb.net).

    Ma préoccupation se présente comme suit:

    Après avoir codé un simple formulaire php servant à enregistrer les voyageurs dans une bdd en ligne (chose réussit modestement), je veux maintenant créer un second (formulaire) qui servira à la vérification: on entre le numéro du billet d'un voyageur dans le champs correspondant (du dit formulaire) et lorsqu'on appuie sur le bouton vérifier, le reste d'informations relatives au numéro renseigné apparaissent dans le reste des champs du même formulaire à savoir: nom, sexe, date, provenance et destination. Sur le forum suis le plus tombé sur les posts ayant trait à des requêtes renvoyant des tableaux et surtout vers d'autres formulaires que l'initial. Comment puis-je réussir ce pari s'il vous plaît ? Vos apports m'aideront à grandir.

    Mes codes se présentent comme suit:

    fichier: connexion.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php 
     
    $mysql_host = 'monserveur.fr';
    $mysql_login = 'utilisateur';
    $mysql_pass = 'motdepasse';
    $mysql_db = 'nomdelabdd';
     
    //(données fictives s.v.p.)
     
    $link = mysqli_connect($mysql_host, $mysql_login, $mysql_pass, $mysql_db) or die('Erreur de connexion à la base');
     
    ?>
    fichier: formulaire.php
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"><head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>VERIFICATION BILLET DE VOYAGE</title>
    <style type="text/css">
     
    <!--
     
      //mes css
     
    -->
     
    </style>
    </head>
     
    <?php
     
    if (isset($_POST['verifier']));
     
      {	 
     
            include("connexion.php");
     
            $sql="select*from tbvoyage where numero ='" .$numero. "'";
     
            $requete=mysqli_query($link,$sql); 
     
        if($requete)
     
        { 
           while ($resultatt = mysqli_fetch_assoc($requete) or die("Il y a un souci"));
              {
                $nom=$resultatt['nomb'];
                $sexe=$resultatt['sexeb'];
                $provenance=$resultatt['provenance'];
                $destination=$resultatt['destination'];
                $date=$resultatt['date']   
              }
     
         }
     
        else
     
        {
            echo ("Recherche infructueuse!");
         }
     }
    ?>
     
     
    <body>
    <div id = "connexion">
    <form name=formulaire.php action = "<?= $_SERVER["PHP_SELF"] ?>" enctype = "multipart/form&#8208 ; data" method ="POST">
     
    <h1>VERIFICATION DU BILLET</h1>
     
    <p><label for = "numero">Numéro du billet : </label><input type="text" name="numero" id="numero" value= "<?php echo $numero ?>"/></p>
    <p><label for = "nom">Nom : </label><input type="text" name="nom" id="nom" value= "<?php echo $nom ?>"/></p>
    <p><label for = "sexe">Sexe : </label><input type="text" name="sexe" id="sexe" value= "<?php echo $sexe ?>"/></p>
    <p><label for = "provenance">Provenance : </label><input type="text" name="provenance" id="provenance" value= "<?php echo $provenance ?>"/></p>
    <p><label for = "destination">Destination : </label><input type="text" name="destination" id="destination" value= "<?php echo $destination ?>"/></p>
    <p><label for = date">Date : </label><input type="text" name="date" id="date" value= "<?php echo $date ?>"/></p>
    <p><input type="submit" value="Vérifier" id = "verifier" /></p>
    <p><input type="submit" value="Fermer" id = "fermer" /></p>
    </form>
    <p id = "message"><?php if(isset($message)) echo $message ?></p>
    </div>
    </body>
    </html>

    Lorsque je lance la recherche sur formulaire.php en appuyant le submit verifier après avoir renseigné le numero du billet dans le champs correspondant, je vois apparaître le message "Il y a un souci" que j'avais prévu dans le boucle while, mais je n'arrive pas à dénicher le souci en question.

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Enlève le or die() de ta boucle while.
    La condition dans ta boucle while finira par être fausse (sinon la boucle tournerait à l'infini) ; dans ton cas c'est quand il n'y a plus de résultats à lire.

    Dans ton code, $numero n'est pas défini, donc ta requête ne retourne rien.
    Par contre il faut utiliser une requête préparée et non pas mettre directement la valeur dans la requête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Formulaire qui doit se renvoyer le résultat de sa requête dans ses propres champs input type = text
    Bonjour Sabotage!

    Merci pour la réponse.

    Suivant votre orientation, j'ai modifier la boucle qui posait problème en ceci (j'ai effacer or die()) ainsi que le ;:

    while ($resultatt = mysqli_fetch_assoc($requete))

    Résultat: tout à bien marché avec la première requête!
    Merci beaucoup pour votre aide.

    A présent, c'est l'adoption de la requête préparée qui me reste; après lecture sur le net, j'ai modifier la requête comme suit:


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            SET @numero = $_POST['numero'];
            /* la préparation */
            $sql = $mysqli->prepare("select*from tbvoyage where numero=?");
            $sql->bind_param("i", @numero);
            $sql->execute()

    Mais voilà qu'immédiatement après l'exécution, j'ai l'erreur "Parse error: syntax error, unexpected '@' in ..." sur la ligne de la variable utilisateur @numero. Est-ce que cette façon de déclarer est incorrecte où ne se trouve pas au bon endroit (sachant que numero est une valeur numérique qui s'auto incrémente dans la BDD) ? Je vous prie de m'envoyer un exemple de code adapté à mon cas, s.v.p!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET @numero = $_POST['numero'];
    Mais d'où sort cette syntaxe ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Formulaire qui doit se renvoyer le résultat de sa requête dans ses propres champs input type = text
    Bonjour jreaux62!

    ... mais suis tout honteux de t'entendre t’exclamer ainsi. Vraiment, il peut être possible à ce que je me sois égaré, suis novice. Comme dit la charte du forum, je prend le temps de lire, de chercher la solution parmi les réponses d'autres personnes avant de poser ma question au forum. mais hélas! certainement là, j'ai retiré le mauvais jeton.
    Alors dis-moi un peu, parce que les post que j'ai lu sur la requête préparée faisait allusion à l'emploi du variable utilisateur dont la définition se présentait malheureusement de cette manière là. Il se pourrait aussi que j'aie mal compris la réponse... Dites - moi la meilleure façon de faire dans ce cas s.v.p.?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Requête préparée :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    // préparation
        $req = "SELECT * FROM tbvoyage WHERE numero = ? ;";
        $sql = $mysqli->prepare($req);
    // affectation des variables et execution
        $sql->bind_param( 'i', $_POST['numero'] );
        $sql->execute();
    Voir : mysqli - bind_param()
    • i : variable de type entier
    • d : variable de type nombre décimal
    • s : variable de type chaîne de caractères
    • b : variable de type BLOB, qui sera envoyé par paquets

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,

    Requête préparée :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    // préparation
        $req = "SELECT * FROM tbvoyage WHERE numero = ? ;";
        $sql = $mysqli->prepare($req);
    // affectation des variables et execution
        $sql->bind_param( 'i', $_POST['numero'] );
        $sql->execute();
    Voir : mysqli - bind_param()
    • i : variable de type entier
    • d : variable de type nombre décimal
    • s : variable de type chaîne de caractères
    • b : variable de type BLOB, qui sera envoyé par paquets
    -------------------------------------------------------

    Bonjour JReaux62 !

    Grand merci à vous. A la suite de vos orientations, suis dépanné. Ensemble nous devenons plus forts que nos limites. Merci à tout le monde, je crois que ce problème est résolu.

    Suis dépanné.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/07/2010, 17h31
  2. Réponses: 2
    Dernier message: 02/02/2009, 13h53
  3. Réponses: 16
    Dernier message: 21/06/2006, 19h45
  4. Réponses: 1
    Dernier message: 29/09/2005, 12h05
  5. formulaire qui doit appeler plusieurs pages
    Par rohel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/01/2005, 08h59

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