Il y a actuellement 156 visiteurs
Lundi 23 Décembre 2024
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

Problème codage PHP

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

Problème codage PHP

Message le 09 Sep 2009 21:45

Bonsoir à toutes et tous,

Il y a quelques jours, j'ai fait appel à ce forum pour m'aider dans la gestion de l'upload d'un fichier, aujourd'hui je reviens, car arès avoir obtenu de bons éléments de réponse, je me heurte à un nouveau problème.
Le changement de nom de mes fichiers (je souhaiterai que chaque fichier uploadé sois copié avec un nom unique pour chaque visiteur (pas de gestion d'ID sur le site) et un n° d'ordre (ex : fichier001.jpg, fichier002.jpg etc..), mais que si un visiteur suivant upload des images à son tour, que ces dernières ne portent pas le même nom (ex : image001.jpg, image002.jpg, etc...) et ainsi de suite.

Le formulaire de téléchargement comporte 20 champs de sélection de fichier.

Voici un extrait du code php que j'envisage d'utiliser, mais pour l'instant, il ne présente pas d'erreur mais ne fait rien, de plus, débutant en PHP (et en programmation en général), je pense qu'il doit manquer des choses....

<?php

// traitement PHOTO 01
if ($_FILES['phot01']['size'] > $maxsize) $erreur = "La photo 1 est trop lourde.";
$extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
$extension_upload = strtolower( substr( strrchr($_FILES['phot01']['name'], '.') ,1) );
if ( in_array($extension_upload,$extensions_valides) ) ;


CETTE OPERATION EST REPETEE 20 FOIS (phot02, phot03, etc..

echo "Les photos sélectionnées sont correctes, début du transfert.";

$var = md5(uniqid(rand(), true));
$direc = 'commandes/';


echo "Envoi de la photo 01... Veuillez patienter, merci !";
$nom = "01/{&var}.{$extension_upload}";
$resultat = move_uploaded_file($_FILES['phot01']['tmp_name'],$nom, 'commandes/'); //, $direc;
if ($resultat) echo "Photo 01, transfert réussi";

echo "Envoi de la photo 02... Veuillez patienter, merci !";


LA ENCORE, ON REPETE 20 FOIS L'OPERATION

echo "Transfert complet.";

?>


Ah oui, encore une petite chose, je ne sais pas si la définition d'un répertoire de destination est correcte.

Je ne fais pas de test sur la taille du fichier, c'est voulu.

Merci à toutes celles et ceux qui voudront bien accorder un peu de leur temps à étudier mon problème.
Cordialement,

nonove
nonove
Visiteur
Visiteur
 
Messages: 9
Inscription: 07 Sep 2009 20:14
 


Message le 09 Sep 2009 22:20

Bonsoir,

En fait tout n'est pas clair... Serait-il possible de savoir ce que vous voulez faire exactement ? Uploader 20 images depuis un seul formulaire contenant 20 champs ? Uploader 20 images l'une après l'autre en cliquant sur un bouton suivant.

L'aspect, changement de nom de fichier n'est trop un problème... C'est assez secondaire dans le cas présent...
Avatar de l'utilisateur
webmaster
Big Boss
Big Boss
 
Messages: 4909
Inscription: 11 Jan 2002 01:00
 

Message le 09 Sep 2009 22:30

Re-bonsoir,

Ce que je cherche à faire est clair pour moi, mais à expliquer, j'ai un peu tendance à "alourdir" la chose, désolé.
En fait, j'ai un formulaire contenant 20 champs (de type "input type file"), ce qui permet à un visiteur d'uploader jusqu'à 20 images en une seule fois. Ce qui explique que je renouvelle mes codes 20 fois, en modifiant à chaque fois le nom du fichier (phot01, phot02, etc...)

J'espère être plus clair comme ça.
Merci d'avance de votre aide.
Cordialement,
nonove
nonove
Visiteur
Visiteur
 
Messages: 9
Inscription: 07 Sep 2009 20:14
 

Message le 09 Sep 2009 22:38

Ok, peux tu me mettre sur cette pages le code du formulaire avec tous les champs ?
Avatar de l'utilisateur
webmaster
Big Boss
Big Boss
 
Messages: 4909
Inscription: 11 Jan 2002 01:00
 

Message le 09 Sep 2009 22:43

Sans problème, le voici, mais, petit rappel, je débute en programmation et il est possible que ce ne soit pas très "propre"...

<h1> Transfert de fichiers</h1>
<form action="trans20.php" method="post" enctype="multipart/form-data" name="form20" id="form20">
<p align="center">Photo 01
<input type="file" name="phot01" id="phot01" />
Photo 02
<input type="file" name="phot02" id="phot02" />
</p>
<p align="center">Photo 03
<input type="file" name="phot03" id="phot03" />
Photo 04
<input type="file" name="Phot04" id="Phot04" />
</p>
<p align="center">Photo 05
<input type="file" name="phot05" id="phot05" />
Photo 06
<input type="file" name="phot06" id="phot06" />
</p>
<p align="center">Photo 07
<input type="file" name="phot07" id="phot07" />
Photo 08
<input type="file" name="phot08" id="phot08" />
</p>
<p align="center">Photo 09
<input type="file" name="phot09" id="phot09" />
Photo 10
<input type="file" name="phot10" id="phot10" />
</p>
<p align="center">Photo 11
<input type="file" name="phot11" id="phot11" />
Photo 12
<input type="file" name="phot12" id="phot12" />
</p>
<p align="center">Photo 13
<input type="file" name="phot13" id="phot13" />
Photo 14
<input type="file" name="phot14" id="phot14" />
</p>
<p align="center">Photo 15
<input type="file" name="phot15" id="phot15" />
Photo 16
<input type="file" name="phot16" id="phot16" />
</p>
<p align="center">Photo 17
<input type="file" name="phot17" id="phot17" />
Photo 18
<input type="file" name="phot18" id="phot18" />
</p>
<p align="center">Photo 19
<input type="file" name="phot19" id="phot19" />
Photo 20
<input type="file" name="phot20" id="phot20" />
</p>
<p align="center">
<input type="submit" name="transfert" id="transfert" value="Vérification et envoi des photos" />
</p>
</form>


Voilà, bon courage !
nonove
Visiteur
Visiteur
 
Messages: 9
Inscription: 07 Sep 2009 20:14
 

Message le 10 Sep 2009 07:54

Si tu sais déjà uploader correctement une image, on va donc commencer par le problème du traitement des données du fomulaire avec un boucle au lieu de faire 20 fois le même code.

Pour commencer appèle tes phot1, phot 2et non pas phot01, phot02 dans le formulaire. Ensuite voici une petite boucle toute simple pour uploader tes images en série... On verra déjà si cela fonctionne comme ça avant de traiter l'histoire des nom de fichiers.


// -- Prise en charge de la variable photxx provenant du formulaiure --

$nombre_image_max = 20;
$i=1;

while ($i<=$nombre_image_max){
$image_name = "phot" . $i;

if (isset($_POST["$image_name"])){ // Si la valeur $photxx n'est pas définie on la laisse vide

--> ici tu ajoute ta fonction d'upload d'image sachant de la nom de l'image à uploder est dans $_POST["$image_name"]
}

$i++;
}


Si tu t'en sors avec ça c'est déjà pas mal et on regardera ensuite pour l'histoire des noms d'images...
Avatar de l'utilisateur
webmaster
Big Boss
Big Boss
 
Messages: 4909
Inscription: 11 Jan 2002 01:00
 

Merci et désolé

Message le 25 Sep 2009 21:57

Bonsoir Webmaster,

Tout d'abord, désolé de ne pas avoir donné de nouvelles, mais, déplacement professionnel oblige, je me suis retrouvé assez loin d'une connexion et de temps me permettant de suivre ta réponse.
Ceci étant dit, merci pour ton aide, j'ai repris le principe de ton code (while...) et ai tenté de créer quelquechose qui fonctionne avec mes (très) maigres connaissances, et les nombreux scripts (pas tjrs au top) disponibles sur la toile.
Voila ce que ca donne :

<?php

$MAX_SIZE = 8000000;
$AUTH_EXT = array(".jpg", ".JPG", ".jpeg", ".JPEG", ".bmp", ".BMP", ".PNG", ".GIF", ".png", ".gif");
function isExtAuthorized($ext){
global $AUTH_EXT;
if(in_array($ext, $AUTH_EXT)){
return true;
}else{
return false; }
}


$nombre_image_max=20;
$i=1;

while ($i<=$nombre_image_max){
$image_name = "img".$i;

if(isset($_FILES["$image_name"]))
{

if(!empty($_FILES["$image_name"]["name"])){

$nomFichier = $_FILES["$image_name"]["name"] ;
$nomTemporaire = $_FILES["$image_name"]["tmp_name"] ;
$typeFichier = $_FILES["$image_name"]["type"] ;
$poidsFichier = $_FILES["$image_name"]["size"] ;
$codeErreur = $_FILES["$image_name"]["error"] ;
$extension = strrchr($nomFichier, ".");

if($poidsFichier <> 0){
if($poidsFichier < $MAX_SIZE){
if(isExtAuthorized($extension)){
$uploadOk = move_uploaded_file($nomTemporaire, "commandes/$nomFichier");
if($uploadOk){
echo("<b> + Image $i : L'upload de [$nomFichier] a réussi !<br><br></b>");
..........................................etc.......}
}
$i++;
}
?>

Si tu peux et si tu veux me donner ton avis, je suis preneur.

Alors encore merci pour ton aide précieuse.

Bon j'ai d'autres soucis, mais je vais faire des recherches et crééer un nouveau post le cas échéant.

Cordialement,

Nonove
nonove
Visiteur
Visiteur
 
Messages: 9
Inscription: 07 Sep 2009 20:14
 

Message le 25 Sep 2009 22:36

Avant que je te donne mon avis, en l'état ça marche ?
Avatar de l'utilisateur
webmaster
Big Boss
Big Boss
 
Messages: 4909
Inscription: 11 Jan 2002 01:00
 

Message le 25 Sep 2009 22:44

Oui, ca fonctionne, j'ai fait des tests, mais c'est comme bcp de choses, les tests fonctionnent, il faut voir à l'usage, mais ca me semble assez probant...
Merci
nonove
Visiteur
Visiteur
 
Messages: 9
Inscription: 07 Sep 2009 20:14
 



Sujets similaires

Message problème jeu pc indiana jones et le cercle ancien
Bonjour,Pourriez-vous m'aider à résoudre l'erreur " english missing vulkan device extensions please update your graphics driver or gpu vk KHR ray querry" au moment de démarrer le jeu pc "Indiana Jones et le cercle ancien" sur un pc avec la configuration :Carte mère F898 Saber ...
Réponses: 8

Message Problème USB 3 sur mini PC (SSD M2 externe)
Bonjour a tous, j'ai un problème sur un mini PC fonctionnant sur un Intel N100. Il y a 2 port usb2 et 2 ports usb3. Mon problème ? Il semble que certains perifériques ne fonctionnent pas correctement (en l'occurence, les boitiers externes pour SSD M2).Si le SSD M2 est connecté sur un USB3 j'obtiens ...
Réponses: 5

Message probleme avec le logiciel nvidia
Bonjour,Oui DDU est très efficace , on s'en sert surtout quand on change de fabricant de carte graphique de AMD vers Nvidia par exemple. Il nettoie tout.Bonne journée.
Réponses: 13

Message [Réglé] probleme windows update recherche sans fin
Salut tout le monde depuis quelques jours lorsque je clique sur Windows update et recherche de mise à jour en cours cela se mets en recherche sans fin voir ma capture écran Rien n'y fait, j'ai beau exécuter l'utilitaire de dépannage Windows update rien n'y fait? Il me détecte en effet un incident, m ...
Réponses: 14

Message [Réglé] Problème de dépendance manquantes sur Kali Linux
Salut, j'ai essayé d'installer un logiciel (Free download manager) sur Kali Linux Mais quand j'ai essayé de l'installer, ça a affiché qu'il y a des dépendance manquantesQuelqu'un peut-il m'aider à résoudre ce problème s'il vous plaît ?
Réponses: 1

Message Problème d'installation Kali Linux Dual boot
Bonjour, j'ai crée une nouvelle partition pour l'installation de Kali Linux, après j'ai démarrer l'installation de Kali Linux en dual boot via clé USB, j'ai suivi les instructions, mais quand je clique sur terminer le partitionnement et appliquer les changements, ça affiche "Aucun système de fi ...
Réponses: 1

Message Problème de démarrage pc sur clé USB
Salut, j'ai gravé Linux sur une clé USB (qui ne contient aucun virus après analyse), je veux installer Linux mais quand je démarre mon PC avec ma clé USB ça affiche "security boot fail". Quelqu'un peut-il m'aider à résoudre ce problème, s'il vous plaît ?
Réponses: 1


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


.: Nous contacter :: Flux RSS :: Données personnelles :.