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. 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
  2. bon oublions la lettre P
    donnez moi juste le code pour pouvoir incrémenter des chiffres de 1 en 1 svp
    merci
    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. 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 $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. 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. 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. 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. Alain ta technique (je croi) en concaténan le P sa marchai ossi
              mai enregistrai pour tous P00
              1. 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
              2. 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
              3. 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,

                  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. 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,

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

                    Ciao!
                    1. jvai essayé et j'te di
                      merci de la rep