Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2006, 15h02   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 32
Points : 10
Points : 10
Envoyer un message via MSN à mathieu7497
Par défaut [Conception] Images: Téléchargement, affichage, suppression - Comment Faire ?

A l'aide ! Je ne comprends rien aux mécanismes de téléchargement de photos !! Je trouve plein de portions de codes pour faire ceci ou cela mais aucune méthodo complète pour télécharger, afficher, modifier, supprimer, etc des photos. Ce que je voudrais faire est assez simple à la base mais compliqué à mettre en oeuvre pour un débutant comme moi. Je serais très reconnaissant à tous ceux qui pourraient m'aider.

Voici le problème :

J'utilise la base de données MySQL nommée "vinobdd" contenant les tables "fiche" et "fiche_photos".
Table : "fiche" : Contenant les champs : idfiche (clé primaire) ; identifiant ; pass ; nom ;...
Table : "fiche_photos" - Contenant les champs : id (clé primaire) ; idfiche ; titre ; nom_photo ; largeur ; hauteur .

Les utilisateurs de mon site peuvent s'identifier et accéder à leur compte privé. J'identifie chaque utilisateur par un identifiant nommé « idfiche » qui est passé en variable de session de pages en pages.
Pour afficher les photos j'ai une requête SQL qui parcous la table fiche_photos à la recherche de l'identifiant "idfiche" de l'utilisateur connecté. (L'affichage n'est pas le problème...c'est tout le reste. )

Mon problème est de permettre à l'utilisateur identifié de télécharger ses photos et de traiter le fichier correctement derrière.

Problème1 :

Depuis mon fichier insertphotos.php je souhaite que l'utilisateur puisse trouver un formulaire qui l'invite à télécharger au maximum 9 photos. (déjà compliqué à vérifier!)

Au niveau traitement il faudra que tout ceci se passe quand il clic sur envoyer :
1- Vérifier que la taille de la photo ne dépasse pas disons 500Ko. J'ai trouvé peut-être un bout de réponse :
Insérer cette ligne : <input type="hidden" name="MAX_FILE_SIZE" value="500000" /> Avant le champ de téléchargement de fichier du formulaire en question.

2- Vérifier que la photo est réellement une photo. (j'ai lu que l'on pouvait faire télécharger des scripts pas sympas au format jpg?)

3- Que la photo soit renommée de manière unique. J'ai pour cela mis la main sur un code qui à l'air bien :
<?php $unique_id = md5(uniqid(time())); $filename = $unique_id.'_'.$filename; ?>

4- Que la photo soit stockée dans le répertoire http://localhost/vino/img/fiches/

5- Que la table "fiche_photos" soit actualisée en entrant le « idfiche » de l'utilisateur en question, le titre de la photo tapé par l'utilisateur dans le formulaire, le nom du fichier, sa largeur et sa hauteur.
Le paramètre « id » de la table est auto incrémenté.

6- Sans vouloir paraître pointilleux, il serait bien que l'utilisateur puisse suivre l'état d'avancement du téléchargement... (C pas le point le plus important mais je pense que ça évite qu'il clic plusieurs fois sur le bouton ENVOYER et génère éventuellement des erreurs.

7- A la fin du processus l'utilisateur est renvoyé vers le fichier mesphotos.php qui affiche les photos.

A quoi doit resembler mon fichier insertphotos.php pour faire tout ça?


Je remercie par avance tous ceux qui se pencheront sur le problème, tous ceux qui resterons perplexe mais qui ont lu ce billet et enfin toute la communauté des développeurs de manière large, débutants comme moi et experts généreux en particulier.

Merci d'être assez pédagogique dans la réponse... S'il faut créer des fichiers php de traitement, merci de bien vouloir l'indiquer.

Cordialement,
Mathieu.
mathieu7497 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2006, 15h34   #2
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Citation:
je souhaite que l'utilisateur puisse trouver un formulaire qui l'invite à télécharger au maximum 9 photos. (déjà compliqué à vérifier!)
Tu crées un formulaire qui propose 9 champs d'uploads et chaque champ à un nom unique.

Citation:
Vérifier que la taille de la photo ne dépasse pas disons 500Ko.
Code un exemple très simple :
1
2
3
4
<?php
$taille = filesize('00027.jpg');
echo $taille; // Retourne la taille en octets
?>

Code en rapport à ta demande :
1
2
3
4
5
6
7
8
<?php
$fichier = 'fichier.jpg';
$taille = filesize($fichier);
if($taille < 500000)
	exit("$fichier est inférieure à la taille limite");
else
	exit("$fichier est supérieure à la taille limite");
?>

Pour le reste, c'est vraiment facile. En cherchant un peu tu trouveras comment faire. La programmation est minimum dans un projet contrairement à la conception. Tout le succès d'un projet repose sur la conception.
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2006, 19h06   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 32
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 32
Points : 10
Points : 10
Envoyer un message via MSN à mathieu7497
Par défaut Merci pour cet élément de réponse

Merci, mais pour moi le plus difficile est bien de trouver la réponse aux points 2, 3, 4, et 5 !!
Comment faut-il articuler les codes? Dans le fichier contenant le formulaire ? Dans un fichier de traitement vers lequel pointe le formulaire ? etc...
Tout est très flou.

Puis concernant la limitation au téléchargement de 9 fichiers, ne mettre que 9 champs ne permet pas de limiter l'utilisateur car il lui suffirait de revenir sur la page de téléchargement plusieurs fois pour pouvoir rajouter encore 9 autres photos et me faire exploser l'espace nécessaire sur le serveur.
Je pensais donc plutôt à la mise en place d'une requête SQL qui vérifie d'abord le nombre de photos déjà uploadé par l'utilisateur n° 32 par exemple et l'inviter soit à télécharger le nombre restant de photo qu'il dispose ou bien en supprimer certaines pour qu'il puisse les remplacer...

Merci
Mathieu.
mathieu7497 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 11h27   #4
Membre chevronné
 
David DRAPEAU
Consultant OpenERP
Inscription : juin 2003
Messages : 807
Détails du profil
Informations personnelles :
Nom : David DRAPEAU

Informations professionnelles :
Activité : Consultant OpenERP

Informations forums :
Inscription : juin 2003
Messages : 807
Points : 728
Points : 728
Envoyer un message via MSN à zyongh Envoyer un message via Skype™ à zyongh
Par défaut Merci d'enfoncer le clou

En fait ton post confirme ce que j'ai dit. Tout repose sur la conception. Une bonne requête SQL vaut mieux que N lignes de code.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
define("MAX", 9);
$request = "SELECT idfiche FROM fiche_photos WHERE idfiche='$iduser'";
$result = mysql_num_rows($request);
$reste = MAX - $result;
if($reste > 0){
    echo "Vous pouvez ajoutez $reste photos";
    /* Instructions */
}
else {
    echo "Vous avez déjà 9 photos d'uploadées";
    /* Instructions */ 
}
?>
ou alors tu as une dexième solution,
c'est que quand tu affiche le formulaire, tu affiche dans chaque champ les photos déjà présentes dans la table, ce qui fait que même s'il revient en arrière, l'utilisateur ne pourra pas ajouter d'autres photos s'il en a déjà chargées le maximum.
zyongh est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h16.


 
 
 
 
Partenaires

Hébergement Web