Bonjour à tous,

Un ami photographe m'a demandé de réaliser son site internet: page d'accueil, portfolio, contacts et une zone cachée propre à chaque client.
Je m'explique. Il voudrait que le site fonctionne de la sorte:
il upload ses photos sur le site internet (comme l'explique très bien le tuto suivant: Texte du lien). Ensuite, les photos sont affichées sur une page-client.

Donc ma question est la suivante:
Etant donné que je ne suis pas un pro du php mais un débutant intéressé, j'aimerais faire que lorsqu'il upload une photo, elle soit affichée sous la forme d'un formulaire (un tableau contenant la photo, en dessous un click et à côté le choix de la taille de l'image), donc quelque chose comme ça:

<table>
<tr><td>photo01.jpg</td></tr>
<tr>
<td><input type="click" name="" value="photo01.jpg"></td>
<td><select name="">
<option value="10x15">10x15></option>
<option value="10x15">10x15></option>
<option value="10x15">10x15></option>
...
</td>
</tr>
</table>

je le ferai avec des divs, c'est plus respectueux.

Le client finit par remplir ses informations de facturation et hop envoyer! on peut imaginer que le fait de cliquer sur envoyer, amène sur une page d'aperçu et ensuite il envoie le formulaire.

Voila, personnellement, l'upload de photo, en suivant le formulaire, ça ira (mais je ne me rappelle plus s'il fait l'envoi multiple ou non). Mais c'est la parti oú chaque client ne voit pas les photos des autres clients.

J'ai réfléchi ainsi:
soit je fait une page par client (tiré d'un modèle) et en haut de la page il y a un champ upload que le client ne voit pas et l'upload se fait dans un fichier de type upload.client (je ne sais pas si ça marche, mais je copie le fonctionnement .$lang qui marche pour les sites multilingue)

ou alors

un page upload, qui envoie les photos sélectionnés dans un fichier nommé upload.client. Ensuite une page client qui affiche le formulaire de commande avec les photos à la bonne place. Il faudrait alors lors de l'upload, écrire par exemple dans un text area le nom du client afin de dire à la fonction php quel nom doit prendre le fichier "upload.client".

Ensuite comment faire pour que la fonction php comprenne comment dispatcher chaque photo par ordre chronologique dans le tableau de commande?

Voilà j'espère avoir été le plus clair possible mais y a tellement dans ma tête :D

Sinon concernant la forme, j'ai pensé que c'est une excellente occasion de commencer à se pencher sur wordpress pour faire ce projet, car l'avantage du backoffice et vraiment intéressant, surtout avec le système d'authentification, cad que connecté en admin, le champ upload est visible, la page envoyée au client (qui n'est pas authentifié) ne laisse pas apparaitre le champ upload. J'ai enfin compris comment virer les commentaires sur les pages et comment insérer du php dans les pages que je crée (mais sans plugin)

J'attends avec impatience vos réponses, conseils, critiques, etc.

@+

Pingubuntu

5 réponses


Edit: désolé pour le "paquet" en dessous du code mais il a enlevé tous mes retours à la ligne.

Bonjour,

Alors j'ai ma fonction qui affiche les images dans un dossier (d'après le tuto de grafikart):

$dos = "images/min";
$dir = opendir($dos);
while($file = readdir($dir)){
    $allow_ext = array("jpg", 'png', 'gif');
    $ext = strtolower(substr($file, -3));
    if(in_array($ext, $allow_ext)){
    ?>

        <div>
            <span>
                    <a href="images/<?php echo $file; ?>">
                        <img src="images/<?php echo $file; ?>" value="<?php echo $file; ?>"/><br>
                    </a>
                    <input class="short" type="text" name="number" value="1"></>
                    <select class="select" name="">
                        <option value="10x15">10x15</option>
                        <option value="10x15">25x45</option>
                        <option value="10x15">200x30</option>
                    </select>
            </span>
        </div>

Etant donné que il y a beaucouuuuuuuup de dossiers contenant des photos (un par client), j'aimerais trouver une solution. En fait mes urls prendront cette forme: www.nomdusite/manifestations/client01/ (/client02, etc.)

Est-ce que c'est possible de récupérer le nom du client dans l'URL (donc client01) dans une variable ($NomClient) et ensuite dans:
$dos = opendir("$NomClient")
Il affiche les photos du dossier correspondant au nom du client.

Merci pour vos réponses.

Pingubuntu

Pour la page d'affichage de la liste d'images existent dans un dossier , ce code peut t'aider

<?php
$dir = "images/";
$allowed_exts = array("png","jpg","gif");
$handle = opendir($dir);
while(($read = readdir($handle)) !== false){
    $ext = pathinfo($dir.$read,PATHINFO_EXTENSION);
    if(in_array($ex, $allowed_exts)){
        echo "<img src='$dir.$read'><br/>";
    }
        unset($ext);
}
unset($read);
closedir($handle);
?>

tu vas changer la valeur du variable dir avec le dossier qui contient les images :p

pour les dossiers photos je pense que les clients devront s'identifier et donc ton client aura une ID dans ta base de données et pour faciliter la gestions de tes dossiers photos, je créerais des dossiers avec l'id de chaque client comme chacun est unique aucun risque de mélange.

Pour ton formulaire,

je ferais déjà un

<FORM METHOD=POST ACTION="page qui traite l'upload">
   <input class="short" type="text" name="number" value="1"></>
     <select class="select" name="">
          <option value="10x15">10x15</option>
          <option value="10x15">25x45</option>
          <option value="10x15">200x30</option>
     </select>
    <input type="submit"></>
</FORM>

Peut-être que la méthode GET est plus appropriée mais c'est un exemple à toi de traiter selon tes besoins.

Pour la page qui traite l'upload
tu vérifies que le paiement est bien effectué puis
tu vérifie que le dossier du client existe (facile avec l'id de ce dernier)
sinon tu crée le dossier avec son id
et tu upload les photos dans le dossier avec le même ID

voila j'espères que ça t'aidera.

Merci à vous deux,
Étant en cours de répétition (les suisses comprendront) j'essaie tout ça quand j'aurai de nouveau accès à mon ordinateur.
Salutations
P.