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 :

Améliorer un formulaire


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Points : 66
    Points
    66
    Par défaut Améliorer un formulaire
    Bonsoir,

    Utilisant le tutoriel sur la création d'un panier, j'ai dû réaliser un formulaire dans ma page details.php pour que le client puisse indiquer la quantité qu'il désire et récupérer le résultat dans la même page pour l'intégrer avec les autres données dans un <a href... pour envoi vers le panier.

    J'ai d'abord fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="detail.php" method="post">
    <b>Quantit&eacute; :</b> <input type="text" name="qte" size="3">
    <input type="image" name="image" value="ok" src="images/panier_bleu_plein.png" align="absmiddle" border="0" height="35" width="35">
    </form>
    mais je me retrouvais avec une" Erreur SQL ! Resource id #4".

    Voici le script de la page detail.php se trouvant avant le formulaire :
    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
    <?php
    session_start();
     
    $id = $_GET['id'];
    require("configuration.php");
     
    $result = mysql_query("SELECT $sbbproduit.id, $sbbproduit.hid, $sbbproduit.sid, $sbbproduit.libelle, $sbbproduit.ancienprix, $sbbproduit.spec, $sbbproduit.photoarticle, $sbbproduit.frais, $sbbproduit.promo, $sbbproduit.prix, $sbbproduit.visu, $sbbfrs.frsid, $sbbfrs.societe FROM $sbbproduit, $sbbfrs WHERE $sbbproduit.frsid= $sbbfrs.frsid AND $sbbproduit.id='$id'");
     
    $row = mysql_fetch_row($result) or die('Erreur SQL !<br />'.$result.'<br />'.mysql_error());
    ?>
    <title>En détail...</title>
    <link href="style.css" type="text/css" rel="stylesheet" media="all">
    </head>
     
    <body>
    <div align="center">
    <div id="header"></div>
    <div id="sommaire"></div>
    <div id="corps">
    <div id="colonne_centre">
    <div id="txtcol_centre">
    <table width="100%" border="0">
    <tr><?php
     
    if ($row[6] != "nul") {
    $split = explode("../", $row[6]);
    $row[6] = $split[1];
    $img = "<img src=\"$row[6]\" width='120' height='120' target='blank'>";
    $image2 = "<a href='$row[6]' target='blank'>Photo taille réelle</font></a><br>";
    } else {
    $img = "<img src=\"$images/na.jpg\" width=100 border=0>";
    }
    echo "<td colspan='2'>$img</a><br>$image2</td>";
    ?></tr>
     
    <tr height="20">
    <td valign="top" height="20"></td>
    <td height="20"></td>
    </tr>
    <tr><?php
    $libelle = $row[3];
    ?>
    <td valign="top"><b>Article : </b></td>
    <?php echo "<td>$libelle</font></td>"; ?></tr>
    <tr>
    <td valign="top"><b>Descriptif : </b></td>
    <?
     
    $descriptif = $row[5];
    $descriptif = str_replace("[retour]","<br>",$descriptif);
    $descriptif = str_replace("[gras]","<b>",$descriptif);
    $descriptif = str_replace("[/gras]","</b>",$descriptif);
    echo "<td>$descriptif</font></td>"; ?></tr>
     
    <tr>
    <td valign="top"><b>Prix net :</b></td>
    <?
    $price = $row[9];
    $price = sprintf("%0.2f", $price);
    echo "<td><font color=\"red\"><b>$price $devises</b></font></td>";
    ?></tr>
    <?
     
    $ancienprix = $row[4];
    $ancienprix = sprintf("%0.2f", $ancienprix);?>
    <tr>
    <td valign="top">Prix public : </td>
    <?php echo "<td>$ancienprix $devises</font></td>"; 
     
     
    $gain = ($row[9] - $row[4]);
    $gain = sprintf("%0.2f", $gain);
    ?></tr>
    <tr>
    <td valign="top"><b>Economie r&eacute;alis&eacute;e : </b></td>
    <?php echo "<td><b>$gain $devises</b></font></td>"; ?></tr>
     
    <?php	
    $fournisseur = $row[12];
    ?>
    <tr><td valign="top"><b>Fournisseur : </b></td>
    <?php echo "<td>
    <b>$fournisseur</b></font></td>"; ?></tr>
    </table>
    // puis vient le formulaire
    J'ai ensuite remplacé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="detail.php" method="post">
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="#" method="post">
    et je n'ai plus eu cette erreur.
    Il me fallait récupérer le résultat pour l'insérer au milieu des autres données destinées à alimenter le panier.

    J'ai donc fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      <?php
     
    if ( isset($_POST['qte']) && !empty($_POST['qte']) ) 
    {
    $qte = $_POST['qte'];
    ?>
    <a href="panier.php?action=ajout&amp;l=<?php echo $libelle; ?>&amp;f=<?php echo $fournisseur; ?>&amp;q=<?php echo $qte; ?>&amp;p=<?php echo $price; ?>&amp;g=<?php echo $gain; ?>" onclick="window.open(this.href, '', 'toolbar=no, location=no, directories=no, status=yes, scrollbars=yes, resizable=yes, copyhistory=no, width=600, height=350'); return false;">Ajouter au panier</a>
    <?
    }
    ?>
    en insérant le <a href... à l'intérieur des parenthèses de ma condition afin que le "Ajouter au panier" n'apparaisse pas en même temps que le bouton du formulaire.
    Cela fonctionne très bien mais, oblige le visiteur du site à d'abord envoyer le formulaire après avoir rempli le champ de quantité, puis ensuite, à cliquer sur "Ajouter au panier" qui vient d'apparaître sur la page pour envoyer les données au panier (le champ de texte et son bouton étant toujours visibles).

    Je suppose qu'il doit y avoir une façon de procéder pour éviter cette double manipulation et que le simple fait, pour le client, de cliquer sur le bouton, l'amène au panier, mais j'avoue avoir cherché et ne pas l'avoir trouvée...

    Merci par avance de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Peux-tu revenir à la situation initial -> action="detail.php"

    Ensuite, pour avoir plus d'information sur tes erreurs mysql tu dois apprendre à utiliser la fonction "mysql_error()" lorsque tu te connectes, selectiones la base de données,execute une requete, récupères le resultset.

    -> tu peux déjà ajouter cette fonction à ce niveau :

    $result = mysql_query("SELECT $sbbproduit.id, $sbbproduit.hid, $sbbproduit.sid, $sbbproduit.libelle, $sbbproduit.ancienprix, $sbbproduit.spec, $sbbproduit.photoarticle, $sbbproduit.frais, $sbbproduit.promo, $sbbproduit.prix, $sbbproduit.visu, $sbbfrs.frsid, $sbbfrs.societe FROM $sbbproduit, $sbbfrs WHERE $sbbproduit.frsid= $sbbfrs.frsid AND $sbbproduit.id='$id'") or die("Erreur lors de l'execution de la requête:".mysql_error());
    Avec ceci tu auras certainement une erreur beaucoup plus explicite.

    De plus pourrais-tu afficher le contenu de ton fichier configuration.php?

  3. #3
    Membre du Club
    Femme Profil pro
    Presque retraitée
    Inscrit en
    Septembre 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Presque retraitée
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Septembre 2008
    Messages : 75
    Points : 66
    Points
    66
    Par défaut
    Merci de cette réponse.

    Je n'ai pas de problème avec la requête sql. Je suis revenue la situation initiale => action="detail.php" et n'ai pas eu le message "Erreur SQL ! Resource id #4" (je ne sais pas ce que j'avais pu faire avant), mais, je ne peux, de toutes façons, utiliser action="detail.php" car cette page est "alimentée" par la page précédente qui est une vitrine où chaque produit possède un lien vers la page detail.php.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<a href=\"detail.php?id=$row[0]\"><img src=\"$illustrations/savoir.gif\" border=\"0\" alt=\"Visualiser l'article\"></a>";
    Si je me sers de action="detail.php", la page qui "revient" après avoir cliqué sur le bouton du formulaire, ne possède plus aucune donnée. Par contre tel que je l'ai écrit =>action="#", je n'ai plus ce problème.

    Comme je l'ai exposé dans mon message précédent, ma question porte sur la réduction des manipulations, pour le visiteur, sur la page "detail.php", puisque mes connexions et liens se font bien. J'aimerais juste, si cela est réalisable, c'est qu'au lieu que le visiteur ait deux actions à effectuer :

    1 - cliquer sur le bouton du formulaire (un panier) après avoir indiqué la quantité souhaitée,
    2 - cliquer ensuite sur "Ajouter au panier" qui apparaît sur cette même page après clic sur bouton du formulaire.

    il n'en ait plus qu'une seule : cliquer sur le bouton du formulaire pour se retrouver sur le panier.

    Le plus simple est que je vous mette le lien vers la page vitrine .
    Choisissez un produit, cliquez et vous arriverez sur la page en question.
    Je précise que les produits et données de ces pages ne seront pas sur le site (d'où images qui ne correspondent pas forcément aux produits) et me servent uniquement à contrôler ce que je fais, en attendant d'avoir les données définitives qui les remplaceront.

    Je ne pense pas qu'il vous faille le fichier de configuration qui fonctionne à merveille pour m'aider à simplifier l'envoi des données vers le panier, mais si vraiment, vous le souhaitez, je vous le mets en y supprimant les données personnelles :
    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
    <?php
     
    $boutique='Admiplus';
    $votremail='secretariat@admiplus.fr';
    $url='http://admiplus/index.php';
    $chemin='/xxx/xxx/xxx/admiplus.fr/index.php';  // xxx = données personnelles
    $photos='photos';
    $devises='&euro;';
    $totalpromo='5';
    $affichecol='4';
    $images='images';
    $illustrations='illustrations';
    $message=Nous vous vous remercions de votre visite.';
    $dbroot='localhost';
    $dbuser='xxx';
    $dbpass='xxx';
    $dbname='xxx';
    $sbbadmin='sbbadmin';
    $sbbfrs='sbbfrs';
    $sbbcat='sbbcat';
    $sbbsouscat='sbbsouscat';
    $sbbproduit='sbbproduit';
    $sbbcmde='sbbcmde';
    mysql_connect("localhost","xxx","xxx");
    mysql_select_db("xxx");
    ?>

Discussions similaires

  1. amélioration validation formulaire
    Par cuddy dans le forum Débuter
    Réponses: 6
    Dernier message: 12/10/2012, 15h54
  2. Amélioration de formulaire
    Par lool44 dans le forum Langage
    Réponses: 14
    Dernier message: 15/10/2010, 22h08
  3. améliorer mon formulaire
    Par lenissart dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/08/2008, 14h55
  4. Amélioration du formulaire pour poster
    Par Space Cowboy dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 10/01/2007, 17h49
  5. Réponses: 10
    Dernier message: 10/11/2005, 16h04

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