Nom d'un fichier en php

Fermé
kiki - 25 févr. 2003 à 10:25
 kiki - 25 févr. 2003 à 15:53
salut !!

j'ai encore une question...
je voudrais fair un bout de script qui incrémente automatiquement les noms des fichiers au fur et a mesure qu'on les créent (mais en fait, les fichiers et leurs noms ne sont pas vus par les utilisateurs du sites et sont faient pour les stockées) . Par exemple, il a le nom c000001.doc et quand on en créé un autre il est à c000002.doc et ainsi de suite jusqu'a arriver au nieme enregistrement : c00000n.doc !!!
oulala...... je sais pas si j'ai été compréhensible !!!


en fait, je voudrais le mettre dans ce script mais je ne vois pas comment

<?php

//cnx à la bd
$bd = mysql_connect('localhost', 'login','mot de passe') or die ("erreur de connexion");
//séléction de la bd
mysql_select_db(courrier2, $bd) or die("erreur de connexion à la base");

// on récupere le no de l'expediteur
$query1 = "SELECT noexp FROM table1 WHERE nomexp = '$nomexp'";
$result1 = mysql_query($query1) or die ("La requete 1 a echoué ");
$lineexp = mysql_fetch_array($result1,MYSQL_NUM);
$noexp = $lineexp[0];
$nomexpediteur = $lineexp[1];

//on récupere le no du destinataire (table destinataire)
$query2 = "SELECT * FROM destinataire WHERE stedest = '$stedest'";
$result2 = mysql_query($query2) or die ("La requete 2 à échoué");
$linedest = mysql_fetch_array($result2);
$nodest = $linedest[0];
$nomdest = $linedest[1];
$stedesti = $linedest[2];
$adress = $linedest[4];
$villedest = $linedest[5];
$cpvilledest = $linedest[6];

//on récupere le no du modele
$query3 = "SELECT * FROM modele WHERE nommodele = '$modele'";
$result3 = mysql_query($query3) or die ("La requete 3 à échoué");
$linemod= mysql_fetch_array($result3);
$nomodel = $linemod[0];
$nommodel = $linemod[1];

//on incrémente le nom du fichier et on récupere le nom du fichier


//on insert les données dans la table table2
$query4 = "INSERT INTO table2 (date, objet, personnel, refnodest, refnomodele, refnoexp) VALUES ('$date', '$objet', '$personnel', $nodest, $nomodel, $noexp)";
$result4 = mysql_query($query4) or die("erreur");

$chaine = $date.";".$objet.";".$nomexpediteur.";".$stedesti.";".$adress.";".cpvilledest.";".$villedest.";".$nomdest."\n";

mysql_close();
$f=fopen("C:\modele\fusion.txt","w");
fputs($f,"date;objet;nom_auteur;nom_entrep;adresse,code_postal;ville;nom_dest\n");
fputs($f,$chaine);
fclose($f);
$ff=fopen("C:\modele\fich.txt","w");
fputs($ff,$nommodel."\n");
fclose($ff);
//$lien="titi";
$lien="file://pc1-13/modele/".$nommodel;

header("location:$lien");
?>

11 réponses

wiwimagique Messages postés 481 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 20 avril 2006 108
25 févr. 2003 à 10:35
j'ai pas lu ton script mais il me semble qu'une solution consisterait a ecrire le numero n courant dans un fichier. tout simplement.
a chaque nouvelle creation, tu lis le nombre n courant, l'incremente de 1, cree ton fichier n+1 et reecris le fichier contenant n.
0
il faut aussi que ce nom de fichier rentre dans la table table2 (le nom de ce chps c'est nomfich)....
j'ai a peut pret compris ce que tu voulais dire mais ça reste un peu flou...
0
mais comme c'est une chaine, on ne peut pas l'incrémenter !!!
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
25 févr. 2003 à 13:32
Bonjour,
Faux, les chaes peuvent être incrémentées en PHP
(tout comme en Perl d'ailleurs)
<?php
$st="a0";
foreach ( range(0,50) as $i)
{
print ("$st\n");
$st++;
}
?>

Johan Daine


The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
25 févr. 2003 à 13:38
Bonjour ,
Je na sais pas ci cela peut t'aider , mais
sprintf est bien utile
<?php
foreach ( range(0,50) as $i)
{
$v1 = sprintf("file%010d", $i);
$v2 = sprintf("file%08d", $i);
print("$v1<br />\n$v2<br />\n");
}
?>

Johan Daine

The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0

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

Posez votre question
<?php
$st="a0";
foreach ( range(0,50) as $i)
{
print ("$st\n");
$st++;
}
?>

tu peux m'expliquer un peut plus ??? qu'est ce que c'est sprintf, ça veux dire quoi ???
ce qu'il ya en fait c'est quej'ai une lettre et des chiffres ... alors je ne sais pas du tout comment faire !
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
25 févr. 2003 à 14:58
Bonjour,
sprintf permet de construire une chaîne à l'aide
* d'une chaîne de formatage
"%08d" --> un nombre entier en décimal sur 8 caractères, justifié droit et complété par des "0"
"%010d" --> un nombre entier en décimal sur 10 caractères, justifié droit et complété par des "0"
Pour plus d'info
http://www.php.net/manual/fr/function.sprintf.php
(je ne connais pas la qualité de la traduction, je regarde tjrs la doc
en anglais)
Le résultat de l'incrémentation d'une chaîne commence
par le caractère de droite
Output de l'exemple (tronqué)
a0
a1
a2
a3
a4
a5
a6
a7
a8
a9
b0
b1
b2
b3
...

Johan Daine
The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0
ben moi en fait, ça sera tjs la meme lettre au début mais c'est les chiffres qui changent ...
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
25 févr. 2003 à 15:33
Bonjour
c000001.doc
Essaye un
$nomfic = sprintf("c%06%d.doc", $filenum);
print($nomfic);
Où récupères-tu le numéro du fichier?

Johan

The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0
je le récupere pas vue que ce nom est unique !

$nomfic = sprintf("c%06%d.doc", $filenum);
print($nomfic);

pourquoi ya un "d" avant le ".doc" ???
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
25 févr. 2003 à 15:46
Bonjour,
erreur dans mon copier-coller
Il faut lire:
$nomfic = sprintf("c%06d.doc", $filenum);
Le "d" indique qu'il faut formater un entier sous représentation décimale.
Johan
The software said "Requires Windows98, Win2000, or better,
So I installed Unix.
0
et ça va faire quoi ???
0