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 -
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 .
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:
- Base de données avec php
- Fuite données maif - Guide
- Base de registre - Guide
- Supprimer les données de navigation - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- Easy php - Télécharger - Divers Web & Internet
7 réponses
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.
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.
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 :)
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 :)
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
<?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
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 ''
ensuite il ne faut pas mettre $var dans la requette, mais simplement vide ''
$sql = 'INSERT INTO professeur(num, nompr, poste) VALUES('',"'.$var2.'","'.$var3.'")';
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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???
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???
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
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