Il y a actuellement 75 visiteurs
Mardi 03 Août 2021
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 d'impression avec HP 6525
Bonjour,Je ne pense pas que ça vienne des cartouches , moi j'en ai qui viennent d'un pays lointain et que je peux recharger moi-même.Soucis c'est que l'encre ça tache bien les doigts Chez ma fille c'est qu'elle avait eu auparavant déjà une imprimante HP et qu'au changement de matériel elle n'avai ...
Réponses: 5

Message probleme ecran en veile et ordi qui tourne
jai un probleme avec mon ordi de bureau tout tourne normalement lecran marche bien et quelque jours apres en le ralument lecran reste en veil et lordi tourne bien en le demontent jai toucher un peut la carte graphique jai ralumer lordie et la sa a marcher mais quelques jours apres rebelote ecrant en ...
Réponses: 5

Message probleme age of empires 3 sur steam
Salut tout le monde depuis quelque temps lorsque je joue sur Steam avec age of empire 3 définitive édition pendant le jeu aléatoirement le jeu plante comme si ma carte graphique était soit défaillante, soit le processeur car le jeu est souvent assez lent voici le type de message que j'ai avant que t ...
Réponses: 4

Message Problème d’affichage 2e écran et tablette graphique
Bonjour à tous,Le problème est le suivant, j?ai besoin de travailler sur 2 écrans et sur une tablette graphique, le câble de mon 2e écran est en HDMI et ma tablette également. Ne possédant qu?une connectique en HDMI sur ma tour j?ai donc acheté un adaptateur HDMI pour double HDMI histoire de faire f ...
Réponses: 0

Message Lenovo yoga problème écran tactile fausses pressions
Bonjour à tous!Je possède un lenovo yoga qui a commencé à bugger depuis quelques mois... L'écran détecte des pressions de partout alors que j'y touche pas comme dans cette vidéo: https://www.youtube.com/watch?v=NKnI4hhyUqg Même si je redémarre le pc, ça recommence, le pc n'est pas en surchauffe (ça ...
Réponses: 11

Message Problème avec cette dernière mise à jour
J'essaie d'installer cette nouvelle mise à jour Windows critique depuis quelques jours maintenant et je continue à rencontrer le même problème, étant donné que cela ne le fait pas.Je vais donc installer les mises à jour et j'obtiens : Mise à jour des fonctionnalités vers Windows 10, version 20H2 Ins ...
Réponses: 3

Message Problème de micro
Bonjour à tous,Dernièrement, le micro de m webcam sur zoom ne fonctionnait pas. D'ou pourrit venir le problème?Avec les derniers Windows je ne sais même plus ou aller pour tester le micro de ma webcam. Je me souviens qu'à l'époque de skype ou msn je pouvais aller dans le menu Windonws qqprt pour fai ...
Réponses: 2


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


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