Inrémentation (j'suisi perdu)

Fermé
bip - 2 mars 2009 à 12:14
 bip - 3 mars 2009 à 14:37
Bonjour,
VOila je voudrais savoir comment est-ce que je peut incrémenter en PHP ma variable "num"
enfaite c'est un petit form que le client rempli puis les infos sont enregistrer dans la bdd
il ne rempli pas le num(il est en hidden), car il lui sera attribué automatiquement
voila donc je voudrais seulement le code qui pourrait incrémenter ce num (pas la méthode d'auto-incrément qui est fourni par MYSQL)

merci

voila mon code

en html

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

<input type="submit" value="Envoyer" name="envoyer">
</center>
</form>

en php:

<for ($i =0; $i <= 5; $i++)
{

$num = $i;

$sql = "INSERT INTO infos_tbl(nom, prenom,email, titre, url, num) VALUES('$nom','$prenom','$email','$titre','$url','$num')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

}

là enfaite sa enregistre 5 fois un client avec un num de 1 A 5 a chaque fois

merci de votre aide
A voir également:

18 réponses

????????????????????????????????
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
2 mars 2009 à 12:44
Bonjour,
Il faut que tu récupère dans ta BDD la dernière valeur incrémenté (dernier num de client enregistrer) et que tu lui ajoute 1.

Cordialement
0
merci de ta rep djkent
juste si tu pourrait me donner un pti bout de code stp ^^
j'ai l'idée mais par tro le code

je commence par la requete de recherche
mysql_query ("select max(num) from infos_tbl");
puis la modification
mysql_query ("UPDATE infos_tbl SET num = num + 1");

est-ce que c'est un ca???

merci
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
2 mars 2009 à 13:03
Pour la recherche ça me semble bon
Par contre pas de update sinon tu vas écraser ce qui existe déjà.
De ce que j'ai compris tu cherches à ajouter des clients?
Utilise un INSERT INTO VALUES après avoir stocké le resultat de ta recherche (+1) dans une variable
0
ok merci jvai test
0

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

Posez votre question
voila ce que j'ai fai

mysql_query ("SELECT max(num) FROM infos_tbl");

// 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());

sauf qu'il me dit aucune valeur défini par défaut sur NUM , donc j'ai mi par défaut '1' mais sa n'enregistre rien le champ est vide
0
??????
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
3 mars 2009 à 10:39
Re:
il faut que tu mettes le résultat de :
mysql_query ("SELECT max(num) FROM infos_tbl");
dans une variable
Ensuite tu ajoute 1 a cette variable
Pour finir tu insert cette variable dans ta BDD

Petite question, pourquoi ne pas utiliser l'auto-incrément de MySQL?
0
j'ai bien voulu utiliser l'auto incrémentation de MYSQL mais ya pas moyen de mettre des lettres
faire du style P001, P002
0
est-ce que c'est ca :
voila ce que j'ai fais :

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

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

$sql2 = "SELECT max(num) FROM infos_tbl";
mysql_query ($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());

$sql2++;


mysql_query ("INSERT INTO infos_tbl(num) VALUES('$sql2')");


pour l'instant sa ajoute 1 pour tous
0
et il me dit

Erreur SQL !INSERT INTO infos_tbl(nom, prenom,email, titre, url) VALUES('nom','prenom','email','titre du site','url du site')
Field 'num' doesn't have a default value

donc j'ai mis une valeur par défaut dans num , j'ai mis "1" mais ya que le 1 pour tt le monde après
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
3 mars 2009 à 11:12
//Tu récupère le dernier numéros inséré et le met dans la variable num
$num = "SELECT max(num) FROM infos_tbl";
mysql_query ($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());

//Tu incrémente cette variable de 1
$num ++;

//Tu insère tes données et le num avec pour créer un nouvel enregistrement.
mysql_query ("INSERT INTO infos_tbl(num,nom, prenom,email, titre, url) VALUES('$num','$nom','$prenom','$email','$titre','$url')");
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());


Je pense que comme ça c'est mieux mais je n'ai pas pus le tester, dsl
0
merci de la rep
j'ai essayé il me dit erreur
Erreur SQL !INSERT INTO infos_tbl(nom, prenom,email, titre, url) VALUES('hj','prenom','email','titre du site','url du site')
Field 'num' doesn't have a default value

et si je met une valeur par défaut ( exemple 1) cé le num 1 pour tt le monde
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
3 mars 2009 à 11:59
As tu vérifié ta requete select (SELECT max(num) FROM infos_tbl) dans MySQL?
Sinon je t'avous que je vois pas vraiment, en plus je peux meme pas testersur ce PC.
Je continus de regardé, je te tiens au courant
0
ok merci ! et je vais essayé la requete
0
voila ba je vien d'essayé la requete , alors quand le NUM 9 est enregistrer, pour la requete le MAX est 9 alors qu'il ya 78 ou 98 etc ... et donc j'ai supprimé 9 là il trouve bien le MAX 98
mais ce que je ne comprend pas c'est pourquoi la requete répond ainsi "Field 'num' doesn't have a default value"
je suis obligé de mettre un défault pour testé :(
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
3 mars 2009 à 12:17
Je pense pas, faudrait que je vérifie, mais pourquoi te compliquer la tache en incrémentant toi même num?
0
parce que le reponsable veut un num de style P001, P002 etc ... :( et si ya un autre moyen je suis preneur
0
sayè la moitié du souci est réglé
il fallai pas séparé le NUM de cette requete
$sql = "INSERT INTO infos_tbl(nom, prenom,email, titre, url, num) VALUES('$nom','$prenom','$email','$titre','$url','$nb')";

là il n'y a plu de message d'erreur mais lors de l'enregistrement il enregistre "T" dans le num pour tous les client
0
pourquoi il veut affiché absolument "T" dans la bdd pour num
enfaite num est en VARCHAR je fais l'inscription et tt et il ajoute T pour num
j'ai changé VARCHAR PAR INT voila skil di
Erreur SQL !INSERT INTO infos_tbl(nom, prenom,email, titre, url, num) VALUES('nom','prenom','email','titre du site','url du site','T')
Incorrect integer value: 'T' for column 'num' at row 1

voila le code

$sql2 = "SELECT max(num) FROM infos_tbl";
mysql_query ($sql2) or die('Erreur SQL !'.$sql2.'<br>'.mysql_error());

$nb = $sql2['num'];
$nb++;

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

// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
0
djkent1 Messages postés 363 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 20 mai 2015 48
3 mars 2009 à 14:13
Ah oui exact, num est un varchar c'est pour ça qu'on peut pas faire le num+1. Je t'avous que la je sais pas trop comment faire.
Comme le num est de la forme P000, il faut peu etre concaténer la lettre dans une variable avec un nombre que tu incrémente dans une autre. Mais sa signifie qu'il faut convertir a un moment ton nombre en varchar je pense et sa, j'ai l'idée mais je sais pas le faire en php ( je suis encore débutant en php)
0
ok merci
jvais essayé

l'idée de la convertion a l'air bonne ;)
merci
0