Base de données avec php

salut tous le monde,
Dans une table (phpmyadmin) j'ai créé le champs "num" comme clé primaire. Je vais remplir cette table à partir d'un formulaire ou j'insere les informations des tous les champs (sauf "num").Car je veux utiliser une variable qui s'incrémente pour remplir ce champs, de cette façon avec la suppression d'un enregistrement (n°3 par exemple), l'enregistrement numero 4 va prendre la valeur 3 dans le champs "num".

Voici le code que j'utilise:
$var2=$_POST['nom'];
$var3=$_POST['job'];
$sql = "INSERT INTO professeur(num, nompr, poste) VALUES ($var,'$var2','$var3')";

Et pour $var j'ai utilisé des boucles, des incrémentation ... mais sans résultat.
J'ai besoin de votre aide. J'espere ke je me suis bien expliquée.
Merci d'avance .
Configuration: Windows XP Internet Explorer 7.0

7 réponses

  1. ok Alain_42 merci infiniment :)
    Je vais essayer

    merciiii
    1. même sans auto increment quand tu supprimera la ligne deux tu ne l'aura plus .

      et même si tu mets $var à global elle reste global que le temps du script

      hors a l'enregistrement suivant ce n'est plus le même script

      si tu veux qu'ils soient absolument consécutifs qd tu en supprimes un il faut lire toute ta table, stocker ça dans un array, vider ta table et l'enregister à nouveau par une boucle sur cet array en incémentant ta $var

      pas besoin de global et d'autoincrement dans ce cas
      1. Mais avec l'auto-incrément c'est un autre problème :s . Car il y a la suppression de lignes , qui avec lauto-incrément me donne un résultat non voulus, je veux si par exemple mon tableau est:
        num1,info1
        num2,info2
        num3,info3
        num4,info4
        c'est que la suppression de la 2ème ligne: "num2,info2" implique:
        num1,info1
        num2,info3
        num3,info4

        Mais avec l'auto-incrément cela va donner :
        num1,info1
        num3,info3
        num4,info4

        Quel malheur :(
        une idée???
        1. il faut que tu définisses ton champ num en INT, autoincrement, Cle primaire (surtout pas de valeur par defaut)
          ensuite il ne faut pas mettre $var dans la requette, mais simplement vide ''

          $sql = 'INSERT INTO professeur(num, nompr, poste) VALUES('',"'.$var2.'","'.$var3.'")';
          1. J'ai même déclaré $var comme global :
            <?php
            global $var;
            $var=1;
            ?>

            Et je l'ai incrémenté dans la fonction if avec $var++ ,$var+=1 et $var=$var+1 , mais la meme erreur :s :s
            1. Je pense que le problème est dans $var (initialistaion et incrémentation). J'ai initialisé $var à 1 et fait ce que vous avez demandé avec ce code:
              if(!empty($_POST['nom']))
              { $var=1;
              $var2=$_POST['nom'];
              $var3=$_POST['spec'];
              $sql = 'INSERT INTO professeur(num, nompr, poste) VALUES('.$var.',"'.$var2.'","'.$var3.'")';
              mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
              $var++; //pr incrementer $var
              }

              et l'erreur:
              Erreur SQL !INSERT INTO professeur(num, nompr, poste) VALUES(1,"kGH","BVCR")
              Duplicate entry '1' for key 'PRIMARY


              Je pense que c'est par ce que $var prend la valeur 1 à chaque fois. Mais où puis-je la placer pour éviter ça?? avez vous une idée??

              Merci :)
              1. Salut

                Essaye avec ça :
                $sql = 'INSERT INTO professeur(num, nompr, poste) VALUES('.$var.',"'.$var2.'","'.$var3.'")';

                Si PHP te renvois une erreur, fait un copier/coller ici.