Base de données avec php

birdsfly Messages postés 240 Date d'inscription   Statut Membre Dernière intervention   -  
birdsfly Messages postés 240 Date d'inscription   Statut Membre Dernière intervention   -
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 .
A voir également:

7 réponses

avion-f16 Messages postés 19252 Date d'inscription   Statut Contributeur Dernière intervention   4 507
 
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.
0
birdsfly Messages postés 240 Date d'inscription   Statut Membre Dernière intervention   15
 
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 :)
0
birdsfly Messages postés 240 Date d'inscription   Statut Membre Dernière intervention   15
 
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
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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.'")';
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
birdsfly Messages postés 240 Date d'inscription   Statut Membre Dernière intervention   15
 
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???
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
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
0
birdsfly Messages postés 240 Date d'inscription   Statut Membre Dernière intervention   15
 
ok Alain_42 merci infiniment :)
Je vais essayer

merciiii
0