Page 1 sur 1
upload et nom d'image
Posté : 14 déc. 2005, 03:49
par romo
Salut à tous,
suite a mon dernier post pas très comprehensif je trouve... je vous pose la même question mais en plus simple :
Est-il possible lors d'un upload d'image, de lui attribuer comme nom, son numéro d'id + son extension... genre id.".jpg"; afin d'obtenir comme résultat:
1.jpg, 2.jpg, 3.jpg ...
merci d'avance

Posté : 14 déc. 2005, 05:12
par romo
personne pour m'aider ....??
Posté : 14 déc. 2005, 10:21
par Cyrano
C'est possible à la condition de connaître cet identifiant au moment de l'enregistrement: ce qui te force dont à une première requête pour déterminer quel est le dernier identifiant avec quelque chose du style
Ensuite, tu incrémentes le résultat et tu fais ton enregistrement.
Posté : 14 déc. 2005, 10:29
par romo
J'suis d'accord avec toi le problème c'est que si je supprime un champ le MAX(id) est faussé....?
Du coup j'ai fais comme sa :
$sql = mysql_query("INSERT INTO $table(photos) Values('')");
$id = mysql_insert_id();
$name = mysql_insert_id().".jpg";
$file = mysql_query("UPDATE $table SET photos='$name' WHERE id='$id'");
je sais c'est pas beau mais sa marche
Si quelqu'un à une meilheure solution??
Le but étant t'attribuer comme nom à l'image son numéro d'id,
merci d'avance!
Posté : 14 déc. 2005, 10:36
par Cyrano
Alors il y a une chose qu'il me semble important de préciser: il faut éviter d'utiliser une clé primaire pour autre chose que l'indexation d'un champ. La clé primaire ne sert (et ne doit servir) qu'à repérer précisément une ligne dans une table et à faire des liens avec des données dans une autre table si besoin est via un système de clés étrangères.
La suggestion que je ferais est donc d'avoir un système de nommage de fichiers indépendants de la clé primaire. Je soupçonne que tu cherches à éviter d'avoir des "trous" dans la suite des identifiants, mais ça ne sert strictement à rien en plus de risquer de te poser des problèmes sérieux à terme.
Posté : 14 déc. 2005, 10:40
par romo
Ben en fait je cherche tout simplement à nommer mais image 1.jpg, 2.jpg etc...
donc vu que l'id s'autoIncremente .... j'me suis dis...
comment je peux faire sinon?
Posté : 14 déc. 2005, 10:52
par Cyrano
Un truc que j'utilise personnellement, c'est la génération automatique d'un nom de fichier basé sur la date et l'heure courante : de cette manière, il y a fort peu de chances pour que j'aie deux fois le même nom de fichier. En supposant que deux personnes fassent un upload simultané, alors ajoute un autre élément distinctif pour assurer le coup.
Ceci dit, je te signale également que mysql_insert_id ne fonctionne qu'après un insert, pas avant. Si le précédent fichier a été insérer la veille, la fonction ne retournera rien ou une erreur.
Posté : 14 déc. 2005, 10:55
par romo
A oui ???!!!
Tu fais bien de me le préciser!!!
Sinon je c bien que c'est pas terrible ce systeme pour nommer les images mais on me demande de faire comme sa ....
Comment je peut faire alors??
Posté : 14 déc. 2005, 11:01
par Cyrano
Je te l'ai indiqué dès le départ : pour récupérer le dernier index généré par une insertion, utilise la fonction SQL MAX() qui va te retourner la plus grande valeur de la colonne.
Posté : 14 déc. 2005, 11:25
par romo
Jsuis désolé d'être bennet mais j'arrive pas à récuperer le MAX(id) ....
Tu pourrais me montrer un exemple?? svp
Posté : 14 déc. 2005, 11:34
par Cyrano
Je t'ai montré un exemple précisément :
Remplace le nom de la table par son véritable nom et le nom du champ identifiant par son vrai nom : essaye ça directement dans phpMyAdmin pour commencer, ça te donnera une première idée.
Posté : 14 déc. 2005, 11:36
par romo

c bon j'ai remis mes lunettes et sa marche !!
merci de ton aide c'est gentil !!!
Posté : 14 déc. 2005, 12:06
par Cyrano
[Résolu]
