Est-ce normal que sa n'enregistre pas (enPHP)

Bonjour,
dans ma table client, je voudrais enregistrer les infos du client saisi dans un form et un NUM doit s'enregistrer automatiquement du style P001, P002, P003... mais le NUM sa enregistre P00 pour tous

voila ma page form

<form method="POST" action="add.php">
<center>
<input type="hidden" name="num" size="10" />
<input type="text" name="nom" size="20" value="nom" maxlength="35" onClick="if (this.value=='nom') this.value=''">
...
<input type="submit" value="Envoyer" name="envoyer">
</center>

et la page add.php

<?php

$num = $_POST['num'];

for ($num = 'P00'; $num <= 'PP'; $num ++)
{
echo $num;
}

$sql = "INSERT INTO infos_tbl(nom, prenom,email, titre, url, num) VALUES('$nom','$prenom','$email','$titre','$url','$num')";

?>

merci de votre aide
Configuration: Windows Vista
Internet Explorer 7.0

15 réponses

  1. Bonjour,

    Ton insert into ne devrait pas plutot etre dans la boucle for...?

    Ciao!
    1. jvai essayé et j'te di
      merci de la rep
  2. voila je vien de faire et ca

    for ($num = 'P00'; $num <= 'PP'; $num ++)
    {
    echo $num;

    // on écrit la requête sql
    $sql = "INSERT INTO infos_tbl(nom, prenom,email, titre, url, num) VALUES('$nom','$prenom','$email','$titre','$url','$num')";

    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    }

    et lolll sa a enreistrer 100 clients avec chaqu'un P01, P02 ... P99

    je pense qu'on est pas loin de la solution ^^
    1. Bonjour,

      Je croyais que c'est ce que tu voulais^^.
      En supposant que tu veuilles que P00 etc... soientt tous enregistrer dans l'attribut NUM du même client. Tu peux créer une variable $TOTAL_NUM qui à l'intérieur de la boucle ferait $TOTAL_NUM.=$NUM (cette commande est équivalent à
      $TOTAL_NUM = $TOTAL_NUM . $NUM).

      Mais bon j'ai peut etre mal compris ce que tu voulais...

      Ciao!
      1. loll ok jvai essayé ca
    2. je fai ca
      for ($num = 'P0'; $num <= 'PP'; $num ++)
      {

      $TOTAL_NUM.=$num;

      // on écrit la requête sql
      $sql = "INSERT INTO infos_tbl(nom, prenom,email, titre, url, num) VALUES('$nom','$prenom','$email','$titre','$url','$num')";

      // on insère les informations du formulaire dans la table
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
      }

      et ca fair la mm chose :(
      sa enregistre encore 10 fois le mm clients avec P0, P1, P2
      1. Bonjour,

        Ma réponse était incomplète. désolé. Le insert into tu le sors de la boucle for.
        Et avant la boucle, tu fais $TOTAL_NUM = "";
        Et dans le insert, tu remplaces $NUM par $TOTAL_NUM.

        Désolé d'avoir été un peu rapide en explication.

        Ciao!
        1. o pa grav ;)
          jvai test ca
      2. Cela s'appelle être têtu !

        Dans un autre post on ta dit mille fois que tu ne peux pas faire ++ sur une chaine mais seulement sur un nombre et on retrouve encore ce code, c'est normal que ça ne marche pas.
        1. chui pa tetu
          sa semble marché si sa enregistre P0, P1 , P2 ...
        2. chui pa tetu
          sa semble marché si sa enregistre P0, P1 , P2 ...
          i faut juste le moyen pour que sa enregistre pour un client
          un par un c tt
      3. Alain ta technique (je croi) en concaténan le P sa marchai ossi
        mai enregistrai pour tous P00
        1. jvien de faire ca

          for ($num = '000'; $num <= '5'; $num ++)
          {

          $num = 'p'.$num;

          // on écrit la requête sql
          $sql = "INSERT INTO infos_tbl(nom, prenom,email, titre, url, num) VALUES('$nom','$prenom','$email','$titre','$url','$num')";

          // on insère les informations du formulaire dans la table
          mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
          }

          sa enregistre un par un mais chak client a P000, P000, P000
          1. le fait de mettre '0' transforme en chaine

            il faut:

            for ($i =0; $i <= 5; $i ++)
            {
            
            $num = ${'p'.$i};
            
            // on écrit la requête sql
            $sql = "INSERT INTO infos_tbl(nom, prenom,email, titre, url, num) VALUES('$nom','$prenom','$email','$titre','$url','$num')";
            
            // on insère les informations du formulaire dans la table
            mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
            } 
            
            1. ok mai le i d'où il sort ??? c'est le compteur ?
              jle déclare comment ??
          2. car il me dit

            Notice: Undefined variable: p0 in D:\EasyPHP 3.0\www\SiteAirQualite\add.php on line 55

            Notice: Undefined variable: p1 in D:\EasyPHP 3.0\www\SiteAirQualite\add.php on line 55

            Notice: Undefined variable: p2 in D:\EasyPHP 3.0\www\SiteAirQualite\add.php on line 55

            Notice: Undefined variable: p3 in D:\EasyPHP 3.0\www\SiteAirQualite\add.php on line 55

            Notice: Undefined variable: p4 in D:\EasyPHP 3.0\www\SiteAirQualite\add.php on line 55

            Notice: Undefined variable: p5 in D:\EasyPHP 3.0\www\SiteAirQualite\add.php on line 55
            1. oui $i c'est le compteur, tu n'as pas besoin de le déclarer, c'est juste une variable de travail por la boucle for, tu peux la baptiser comme tu veux

              for ($i =0; $i <= 5; $i ++)
              {
              
              $num = 'p'.$i;
              
              // on écrit la requête sql
              $sql = "INSERT INTO infos_tbl(nom, prenom,email, titre, url, num) VALUES('$nom','$prenom','$email','$titre','$url','$num')";
              
              // on insère les informations du formulaire dans la table
              mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
              } 
              
              1. alors là cé bon ya plus d'erreur sauf que sa ajoute 5 fois le mm client avec P0, P1, P2 P3 P4 P5
            2. Ben c'est normal, d'après ton code, tu fais un petit formulaire ou tu saisis un client et par une boucle for

              de 5 pas tu fais l'enregistrement de ce même client

              <form method="POST" action="add.php">
              <center>
              <input type="hidden" name="num" size="10" /> // la un champ caché sans valeur ça ne sert à rien
              <input type="text" name="nom" size="20" value="nom" maxlength="35" onClick="if (this.value=='nom') this.value=''">
              ...
              <input type="submit" value="Envoyer" name="envoyer">
              </center>

              et la page add.php

              <?php

              $num = $_POST['num']; //comme tu n'as pas mis de value= dans ton champ caché num tu ne récupéres rien



              Je crois comprendre que tu veux enregister un client et que chaque client ait dans ta table une reférence num P01 P02 etc.. qui s'incremente automatiquement ?
              1. oui c'est exactement ca je veux enregister un client et que chaque client a dans la table une reférence num P01 P02 etc.. qui s'incremente automatiquement
                1. bon oublions la lettre P
                  donnez moi juste le code pour pouvoir incrémenter des chiffres de 1 en 1 svp
                  merci
                  1. Ben alors la c'est encore plus simple:

                    dans ta table "info_tbl" tu mets le champ num en INT , Autoincrement, primary Key

                    et ta requette devient:

                    $sql = "INSERT INTO infos_tbl(nom, prenom,email, titre, url, num) VALUES('$nom','$prenom','$email','$titre','$url','')";
                    


                    pas de valeur pour num, mysql fera le boulot tout seul il incrementera de 1 à chaque enregistrement
                    1. ok merci sa marche !
                      ya un algo en php pour ca ??? si oui donnez le moi svp