L'enregistrement exist-il ?

Bonjour,

Je souhaiterai savoir si mon code est juste svp.
Je souhaiterai qu'au submit il me dise si oui ou non la clé que j'ai mis dans la zone de texte existe ou pas dans mase mysql

Voici ma page au complet :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

<body>

<?php
$Valid =  $_POST["Validation"];
mysql_connect("127.0.0.1", "root", ""); // Connexion à MySQL
mysql_select_db("computracekey");  
 
$req=mysql_query("select * from clevalidation where Validation='$Valid'"); 
$nb= mysql_num_rows($req);
echo $nb;
if ( $nb > 0 )
{echo ' en table';}
else
{echo ' non connu';}
?>
<form id="form1" name="form1" method="post" action="">
  <input name="Valid" type="text" id="Valid" value="J9JBK9BQT997JYXJC8MGCMHQG" size="35" maxlength="25" />
  <br />
  <label>
  <input type="submit" name="button" id="button" value="Envoyer" />
  </label>
</form>
</body>
</html>


Pouvez-vous m'aider svp ?

12 réponses

  1. Bonjour

    Désolé, il y a un petit problème.

    Tu commences par $Valid = $_POST["Validation"];, mais, la première fois que tu lances ce script, le formulaire n'a pas encore été posté. donc $_POST["Validation"] n'existe pas.

    Quand on traite le formulaire dans la page même où on le définit, il faut faire if (isset($_POST["Validation"])) { au début pour ne traiter le formulaire que si les variables correspondantes existent vraiment.

    Pour le reste, je ne vois pas d'erreur évidente.
    0
    1. Voilà ce que j'ai fais :
      <?php
      if (isset($_POST["Validation"])) {
      $Valid =  $_POST["Validation"];
      
      mysql_connect("127.0.0.1", "root", ""); // Connexion à MySQL
      mysql_select_db("computracekey");  
      
      $req=mysql_query("select * from clevalidation where Validation='$Valid'"); 
      $nb= mysql_num_rows($req);
      echo $nb;
      if ( $nb > 0 )
      {echo ' en table';}
      else
      {echo ' non connu';}}
      ?>
      <form id="form1" name="form1" method="post" action="">
        <input name="Valid" type="text" id="Valid" value="J9JBK9BQT997JYXJC8MGCMHQG" size="35" maxlength="25" />
        <br />
        <label>
        <input type="submit" name="button" id="button" value="Envoyer" />
        </label>
      </form>


      Mais je n'ai aucun message me disant que l'enregistrement existe ou pas.
      Pouvez-vous m'aider d'avantage svp ?
      0
      1. salut,

        dans ton formulaire tu dis que name = valid

         <input name="Valid" type="text" id="Valid" value="J9JBK9BQT997JYXJC8MGCMHQG" size="35" maxlength="25" />


        Donc $_POST['Valid'] et non $_POST["Validation"]
        0
    2. Tu appelles le champ "Valid" dans ton formulaire, la variable que tu récupères s'appelle donc $_POST["Valid"] et non pas $_POST["Validation"]
      0
      1. <?php
        if (isset($_POST["Valid"])) {
        $Valid = $_POST["Valid"];

        $link = mysql_connect("127.0.0.1", "root", ""); // Connexion à MySQL
        mysql_select_db("computracekey", $link);

        $req = mysql_query("select * from clevalidation where Validation = ' . $Valid . '", $link);
        $nb = mysql_num_rows($req);

        if ( $nb == 1 )
        echo 'La clé "' . $Valid .'" existe en table';
        else
        echo 'La clé "' . $Valid .'" n\'est pas connu en table';

        exit();
        }
        ?>
        <form id="form1" name="form1" method="post" action="">
        <input name="Valid" type="text" id="Valid" value="J9JBK9BQT997JYXJC8MGCMHQG" size="35" maxlength="25" />
        <br />
        <br />
        <input type="submit" name="button" id="button" value="Envoyer" />
        </form>

        voila avec quelque corrections/améliorations...
        0
        1. tu peux améliorer le script en ajoutant mysql_real_escape_string pour le post ;)
          ceci permettra d'éviter les injection SQL

          $Valid = mysql_real_escape_string(trim($_POST["Valid"]));
          0
          1. Oula, je suis perdu avec tout ça moi !
            Merci à tous en tout cas les gars.

            Donc voilà, lorsque j'actualise la page, j'ai ce message :
            Pour afficher cette page, les informations précédemment transmises par Firefox doivent être renvoyées. Ceci répétera toute action (telle qu'une recherche ou un ordre d'achat) entreprise précédemment.

            Et là j'ai l'écho qui se met en marche.
            Comment je peux sauter cette erreur ?
            0
            1. Ce message n'est pas une erreur.
              Quand tu réactualises une page qui contient un formulaire, tu renvoies ton formulaire. Le message que tu vois, c'est simplement ton navigateur qui te prévient que tu es en train de renvoyer le même formulaire.

              En effet, de nombreux scripts trop simples ne tiennent pas compte de la réactualisation et vont refaire une deuxième fois les actions associées au formulaire, ce qui peut être très gênant.
              0
              1. Il a t-il un moyen de remédier à ça ?
                0
                1. Remédier à quoi ? Tu ne veux pas que ton navigateur te prévienne quand tu es sur le point de faire une bêtise ?
                  0
                  1. Heuu ça si :D mais éviter qu'au refresh de la page il lance le submit :$ ?
                    Qu'il se submit seulement au clique du bouton quoi !
                    0
                    1. Il semblerait qu'il y ait moyen d'éviter ça.
                      http://www.siteduzero.com/tutoriel-3-38553-eviter-le-renvoi-repetitif-d-un-formulaire-en-rafraichissant.html
                      Je ne connaissais pas, je vais essayer et l'utiliser moi aussi
                      0
                      1. Merci à tous pour votre aide.

                        Voici maintenant l'étape 2 du projet et j'espère le dernier.

                        <?php
                        if (isset($_POST["Valid"])) {
                        $Valid =  $_POST["Valid"];
                        
                        mysql_connect("127.0.0.1", "root", ""); // Connexion à MySQL
                        mysql_select_db("computracekey");  
                        
                        $req=mysql_query("select * from clevalidation where Validation='$Valid'"); 
                        $nb= mysql_num_rows($req);
                        echo $nb;
                        if ( $nb > 0 )
                        header('Location: Validite.php');
                        else
                        header('Location: Invalidite.php');
                        }
                        ?>
                        
                        <table width="800" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                        <td height="592" align="center" valign="middle" background="Ecran.jpg">
                        <form id="form1" name="form1" method="post" action="">
                        <input name="Valid" type="text" id="Valid" size="35" maxlength="25" />
                        <br /><br />
                        <input type="submit" name="button" id="button" value="Installer" />
                        <a href="#" class="Verif"></a>
                        </form>


                        Ici j'ai le bouton submit que je souhaiterai remplacer par mon lien hypertexte.
                        <input type="submit" name="button" id="button" value="Installer" />
                        <a href="#" class="Verif"></a>


                        Pourriez-vous svp me guider encore une fois ?
                        0