Récupération Valeur autoincrement de MySQL 4.1

Eléphant du PHP | 70 Messages

29 avr. 2006, 17:21

Bonjour à tous,

Je vous fais part de mon petit souci...
Je cherche à stocker le nom d'une image quelconque dans ma BDD.
La table qui permet de faire cela est construite comme suit :
ID => autoincrement
Nom => vchar contenant le nom du fichier
Label => vchar contenant pour l'instant le nom du fichier ou un label autre défini pat l'utilisateur

Mon souci, pour retrouver plus facilement mes fichiers, j'aimerai faire précéder le nom du fichier par son ID d'enregistrement (quelque chose comme : "21_monfichier.jpg", "22_monautrefichier.jpg").

J'ai bien utilisé la valeur "mysql_last_insert", mais la valeur n'est valable qu'une fois l'enregistrement terminé, et donc inutile dans mon cas !

Y-a-t-il un moyen de récupérer l'ID pendant la phase d'enregistrement ????

Merci d'avance de vos réponses, voire solutions... :D :lol:

Mammouth du PHP | 19672 Messages

29 avr. 2006, 17:54

Pendant, ce n'est pas possible, donc tu as deux solutions :
- soit récupérer l'identifiant précédent, l'incrémenter, contruire le nom du nouveau et insérer tes données;
- soit insérer le nom sans le préfixer, récupérer le last_insert_id et ensuite faure un update sur le nom.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 avr. 2006, 22:35

Il existe une fonction interne au SGBD MySQL : LAST_INSERT_ID()
D'ailleurs, la fonction PHP mysql_insert_id() est basée sur cette fonction

par contre, dans l'aide, j'ai pas réussi à comprendre si tu utilise cette fonction DANS la requete, si tu as bien la valeur actuelle de l'auto_increment ou la précédente :-k
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 2144 Messages

29 avr. 2006, 23:03

Tu peux ne pas stoker l'id dans le champ contenant le nom du fichier.
Il suffira de concaténer l'id et le champ fichier pour obtenir le nom du fichier.

Eléphant du PHP | 70 Messages

30 avr. 2006, 13:37

Merci bien à vous tous pour votre aide.

Aux vues de tout ce que vous m'avez dit, je crois que le plus simple dans mon cas, ce sera l'astuce de Cyrano ; Je ferais donc l'enregistrement en 2 temps :
1- J'enregistre l'image dans la BDD
2- Je restructure le nom du fichier, je fais un update du champ nom et j'upload l'image avec ce nom.

Merci encore.

Eléphant du PHP | 353 Messages

01 mai 2006, 21:05

Bonjour , n'y a t'il pas moyen avec une requete sql de voir la prochaine valeur id qui va etre créé sans la créer ?

Merci d'avance

Mammouth du PHP | 19672 Messages

01 mai 2006, 21:58

avec le last_insert_id du dernier enregistrement, il te suffit de l'incrémenter pour connaître le prochain... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 2144 Messages

01 mai 2006, 23:26

Comme je l'ai mis plus haut : tu vas récupérer l'id unique de l'enregistrement, pour pouvoir construire le nom du fichier à stocker, jusque là, c'est bon, mais après tu vas faire un update sur le contenu du champ fichier pour ajouter devant celui-ci l'id (qui se trouve déja dans l'enregistrement (dans un autre champ, je te l'accord) mais je ne vois pas où est le problême de concaténer le champ id et le champ fichier pour obtenir le nom complêt du fichier. Ca évite une redondance d'information, et un update inutile.

Eléphant du PHP | 70 Messages

02 mai 2006, 13:05

C'est ce que j'ai fait.
Ca marche...
Merci :D