Php incrementer un numero sur nom upload
Résolu
jupiler
-
Passarinho44 Messages postés 963 Date d'inscription Statut Contributeur Dernière intervention -
Passarinho44 Messages postés 963 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j ai un fichier que j'upload j'ai un script qui me permet de renommer le nom du fichier ca fonctionne très bien
imaginons que la variable $nom est le nom de mon fichier uploader je souhaiterais que si ce nom de fichier existe dans ma base je renomme $nom en $nom_unnombre par exemple $nom_1
mais je ne vois pas comment incrémenter le numéro :
voici le code :
$nom=$upload.$dvd.$idname.$id.$extension;
$sql3="select nom_upload from format where idpi='$idpi' and iddi='$iddi'";
$req3= mysql_query($sql3) or die( mysql_error() ) ;
$test = mysql_result($req2, 0);
if ($test==$nom)
{
$nom=$nom_unnombre // c est a ce niveau que je ne vois pas ...
}
merci de votre aide
j ai un fichier que j'upload j'ai un script qui me permet de renommer le nom du fichier ca fonctionne très bien
imaginons que la variable $nom est le nom de mon fichier uploader je souhaiterais que si ce nom de fichier existe dans ma base je renomme $nom en $nom_unnombre par exemple $nom_1
mais je ne vois pas comment incrémenter le numéro :
voici le code :
$nom=$upload.$dvd.$idname.$id.$extension;
$sql3="select nom_upload from format where idpi='$idpi' and iddi='$iddi'";
$req3= mysql_query($sql3) or die( mysql_error() ) ;
$test = mysql_result($req2, 0);
if ($test==$nom)
{
$nom=$nom_unnombre // c est a ce niveau que je ne vois pas ...
}
merci de votre aide
A voir également:
- Php incrementer un numero sur nom upload
- Numero prive - Guide
- Numéro père noël whatsapp - Accueil - Messagerie instantanée
- Youtube upload - Télécharger - Diffusion
- Numero imei - Guide
- Numero de serie idm ✓ - Forum Logiciels
11 réponses
Et bien si tu incrémentes tous tes fichiers ayant le même nom de la même façon tu peux par exemple modifier ta requête en faisant :
"SELECT count(*) as nb FROM format WHERE nom_upload LIKE '" . $nom . "%'";
Comme ça tu récupères le nombre de noms qui commencent par le tien.
et tu ajoutes ce nombre + 1 à ta variable.
$nom = $nom . $data['nb'];
C'est ce que tu veux?
"SELECT count(*) as nb FROM format WHERE nom_upload LIKE '" . $nom . "%'";
Comme ça tu récupères le nombre de noms qui commencent par le tien.
et tu ajoutes ce nombre + 1 à ta variable.
$nom = $nom . $data['nb'];
C'est ce que tu veux?
merci pour ta reponse Passarinho44
je me pose une question ce qui veut dire que par exemple j ai
upload.jpg
il va va voir qu il y en a un ducoup il va l appeler upload2.jpg
mais si je reupload les deux fichiers n ont pas le même nom donc il va me créer upload2.jpg une autre fois non ?
je me pose une question ce qui veut dire que par exemple j ai
upload.jpg
il va va voir qu il y en a un ducoup il va l appeler upload2.jpg
mais si je reupload les deux fichiers n ont pas le même nom donc il va me créer upload2.jpg une autre fois non ?
C'est pour ça que je t'ai conseillé le count avec le LIKE $nom . "%'"
Ca va permettre que tous les fichiers commencant par upload par exemple vont etre récupérés et comptés donc si tu as upload.jpg et upload2.jpg, il va te sortir 2 donc tu ajoutes 1 et ça te fait upload3.jpg
Bien sur du coup ta première lignes pour le $nom n'est plus bon : il va falloir enlevé l'extention avant de faire ce test et la rajouter après
Ca va permettre que tous les fichiers commencant par upload par exemple vont etre récupérés et comptés donc si tu as upload.jpg et upload2.jpg, il va te sortir 2 donc tu ajoutes 1 et ça te fait upload3.jpg
Bien sur du coup ta première lignes pour le $nom n'est plus bon : il va falloir enlevé l'extention avant de faire ce test et la rajouter après
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
par contre ce st bizarre j ai mis
$result = mysql_query("SELECT count(*) as nb from format where nom_upload LIKE '" . $nom. "%'");
$count = mysql_result($result,0);
et il me dit
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in W:\upload\import-upload.php on line 38
nom.jpgok
$result = mysql_query("SELECT count(*) as nb from format where nom_upload LIKE '" . $nom. "%'");
$count = mysql_result($result,0);
et il me dit
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in W:\upload\import-upload.php on line 38
nom.jpgok
Essaie de faire :
$requete = "SELECT count(*) as nb from format where nom_upload LIKE '" . $nom. "%'";
echo $requete;
//$result = mysql_query($requete);
//$count = mysql_result($result,0);
Comme ça, tu vas afficher ta requete. Ensuite tu la lances dans ton SGBD et il te donnera plus de détails sur la provenance de l'erreur.
Si tu n'arrives pas à déchiffrer le message d'erreur n'éhistes pas à demander.
$requete = "SELECT count(*) as nb from format where nom_upload LIKE '" . $nom. "%'";
echo $requete;
//$result = mysql_query($requete);
//$count = mysql_result($result,0);
Comme ça, tu vas afficher ta requete. Ensuite tu la lances dans ton SGBD et il te donnera plus de détails sur la provenance de l'erreur.
Si tu n'arrives pas à déchiffrer le message d'erreur n'éhistes pas à demander.
pour l erreur j ai trouve probleme de nom de champ il ets temps de manger :-)
par contre le count fonctionne bine quand je fais un echo $count; il me renvoie un valeur que j attends
mais a ce niveau
$nom=$nom.$data['nb'];
il incrémente pas le numéro :-(
Merci
par contre le count fonctionne bine quand je fais un echo $count; il me renvoie un valeur que j attends
mais a ce niveau
$nom=$nom.$data['nb'];
il incrémente pas le numéro :-(
Merci
bon j ai trouvé une solution de remplacement qui marche nickel
$result = mysql_query("SELECT count(*) as nb from format where nom_upload LIKE '" . $nom. "%'") or die(mysql_error() );
$count = mysql_result($result, 0);
$nombre=1;
$count2=$count+$nombre;
if($count!= 0)
{
$nom=$nom.$count2;
}
merci encore Passarinho44
$result = mysql_query("SELECT count(*) as nb from format where nom_upload LIKE '" . $nom. "%'") or die(mysql_error() );
$count = mysql_result($result, 0);
$nombre=1;
$count2=$count+$nombre;
if($count!= 0)
{
$nom=$nom.$count2;
}
merci encore Passarinho44
Oui en fait c'était ça que je voulais que tu fasses : mon $name = $name . $data['nb'] c'était un exemple pour te dire de récupérer la valeur de la base de données
Sinon ton
$nombre=1;
$count2=$count+$nombre;
Tu peux le raccourcir en
$count++;
Et du coup tu peux mettre
$nom .= $count;
à la place de :
$nom=$nom.$count2;
Sinon ton
$nombre=1;
$count2=$count+$nombre;
Tu peux le raccourcir en
$count++;
Et du coup tu peux mettre
$nom .= $count;
à la place de :
$nom=$nom.$count2;
J'ai un peu le même problème. le site est protégé par des sessions. Lorsque l'utilisateur est authentifié il peut ajouté des photos. Un répertoire alors se crée au nom du login de l'utilisateur. Lorsque je veux ajouter une photo, elle s'insère dans le bon dossier. le problème est que lorsque j'ajoute une nouvelle photos elle écrase la précédente. Comment dois-je faire?
voici mon code:
formulaire:
<form name="ajout_photo" method="post" action="pages/add_photo.php" enctype="multipart/form-data">
Titre de Votre photo : <input type="text" name="titre" maxlength="30" size="30" /> (50 caractères)
Description de Votre photo : <input type="text" name="description" maxlength="250" size="50" /> (80 caractères)
Chargez votre logo : <input type="file" name="photo_gd" /><input type="hidden" name="MAX_FILE_SIZE" value="20480" />
<input type="hidden" name="login" value="<?php echo "$enr_verif_user->login"; ?>" /></p>
<input type="hidden" name="id_user" value="<?php echo "$enr_verif_user->id_user"; ?>" /></p>
<p>Date : <?php echo date('Y-m-d'); ?><input type="hidden" name="date" value="<?php echo date('Y-m-d'); ?>" /></p>
<input type="submit">
</form>
Page d'ajout:
$requete_reccup = "SELECT * FROM photo";
$result_reccup = @mysql_query($requete_reccup);
$enr_reccup = @mysql_fetch_object($result_reccup);
// Protection des données
$titre = addslashes($_POST['titre']);
$description = addslashes($_POST['description']);
$id_user = addslashes($_POST['id_user']);
$login = addslashes($_POST['login']);
$date=$_POST["date"];
if ($_FILES['photo_gd']['type'] != 'image/png' && $_FILES['photo_gd']['type'] != 'image/jpeg' && $_FILES['photo_gd']['type'] != 'image/jpg' && $_FILES['photo_gd']['type'] != 'image/gif')
{
echo"Le fichier doit être au format *.jpeg, *.gif ou *.png .";
}
else{
// Insertion dans la BDD
$requete_ph = "INSERT INTO photo VALUES('', '$titre', '$description', '$date', '', '$id_user')";
$result_ph = mysql_query($requete_ph);
@mysql_close();
// Enregistrement de l'image
if(!empty($_FILES['photo_gd']['name']))
{
$original = basename($_FILES["photo_gd"]["name"]);
$temporaire = $_FILES["photo_gd"]["tmp_name"];
$nom = $login;
$upload = '../img/' . $login . '/';
if(!is_dir($upload)){mkdir($upload);}
$resultat = move_uploaded_file($_FILES['photo_gd']['tmp_name'],$upload.'/'.$nom.'.jpg');
if ($resultat) echo "Transfert réussi";
/*$final = "../img/test.jpg";
//$final = "../../images/logo_pro/test.jpg";
move_uploaded_file($temporaire,$final);*/
}
header('Location: ../index.php');
}
voici mon code:
formulaire:
<form name="ajout_photo" method="post" action="pages/add_photo.php" enctype="multipart/form-data">
Titre de Votre photo : <input type="text" name="titre" maxlength="30" size="30" /> (50 caractères)
Description de Votre photo : <input type="text" name="description" maxlength="250" size="50" /> (80 caractères)
Chargez votre logo : <input type="file" name="photo_gd" /><input type="hidden" name="MAX_FILE_SIZE" value="20480" />
<input type="hidden" name="login" value="<?php echo "$enr_verif_user->login"; ?>" /></p>
<input type="hidden" name="id_user" value="<?php echo "$enr_verif_user->id_user"; ?>" /></p>
<p>Date : <?php echo date('Y-m-d'); ?><input type="hidden" name="date" value="<?php echo date('Y-m-d'); ?>" /></p>
<input type="submit">
</form>
Page d'ajout:
$requete_reccup = "SELECT * FROM photo";
$result_reccup = @mysql_query($requete_reccup);
$enr_reccup = @mysql_fetch_object($result_reccup);
// Protection des données
$titre = addslashes($_POST['titre']);
$description = addslashes($_POST['description']);
$id_user = addslashes($_POST['id_user']);
$login = addslashes($_POST['login']);
$date=$_POST["date"];
if ($_FILES['photo_gd']['type'] != 'image/png' && $_FILES['photo_gd']['type'] != 'image/jpeg' && $_FILES['photo_gd']['type'] != 'image/jpg' && $_FILES['photo_gd']['type'] != 'image/gif')
{
echo"Le fichier doit être au format *.jpeg, *.gif ou *.png .";
}
else{
// Insertion dans la BDD
$requete_ph = "INSERT INTO photo VALUES('', '$titre', '$description', '$date', '', '$id_user')";
$result_ph = mysql_query($requete_ph);
@mysql_close();
// Enregistrement de l'image
if(!empty($_FILES['photo_gd']['name']))
{
$original = basename($_FILES["photo_gd"]["name"]);
$temporaire = $_FILES["photo_gd"]["tmp_name"];
$nom = $login;
$upload = '../img/' . $login . '/';
if(!is_dir($upload)){mkdir($upload);}
$resultat = move_uploaded_file($_FILES['photo_gd']['tmp_name'],$upload.'/'.$nom.'.jpg');
if ($resultat) echo "Transfert réussi";
/*$final = "../img/test.jpg";
//$final = "../../images/logo_pro/test.jpg";
move_uploaded_file($temporaire,$final);*/
}
header('Location: ../index.php');
}
Elle écrase la précédente car elle a le même nom.
Pour éviter ça je te conseille de faire une liste des fichiers déjà existants dans le dossier.
Ensuite tu récupères le nombre de fichiers dans ce dossier.
Puis tu rajoutes à la suite du nom, le nombre de fichiers + 1.
Voila un petit bout de code trouvé sur le net pour savoir le nombre de fichiers dans un dossier:
<?php
$nb_f = 0;
$opdir = opendir($repimages);
while ($c = readdir($opdir))
{
if (!is_dir($c)) $nb_f++;
}
closedir($opdir);
echo ("Nombre de fichiers : ".$nb_f);
?>
Pour éviter ça je te conseille de faire une liste des fichiers déjà existants dans le dossier.
Ensuite tu récupères le nombre de fichiers dans ce dossier.
Puis tu rajoutes à la suite du nom, le nombre de fichiers + 1.
Voila un petit bout de code trouvé sur le net pour savoir le nombre de fichiers dans un dossier:
<?php
$nb_f = 0;
$opdir = opendir($repimages);
while ($c = readdir($opdir))
{
if (!is_dir($c)) $nb_f++;
}
closedir($opdir);
echo ("Nombre de fichiers : ".$nb_f);
?>