IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Question à propos de téléchargement d'image et de format


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2015
    Messages : 59
    Par défaut Question à propos de téléchargement d'image et de format
    Bonjour à Tous,

    je reviens sur le forum car après quelques tentatives - une fois vingtaine - je ne parviens pas à intégrer deux scripts de téléchargement d'image dans une page d'insertion dans ma base de données comme il conviendrait. Pour confirmation, les deux scripts de gestion des téléchargements que je vais mettre ci-dessous fonctionnent, mais ils ne gèrent pas tels qu'appliqués dans ma page de traitement les conditions du "IF' concernant les format d'image (pour la première image je ne dois en principe télécharger qu'un pdf et pour la seconde qu'un format gif, jpg ou jpg) et je peux donc télécharger n'importe quel format de fichier sur ma page d'accueil ...

    Aussi, en second point, je souhaiterais pouvoir enregistrer le chemin vers le répertoire contenant mon fichier téléchargé et non pas simplement le nom du fichier.

    Quelqu'un pourrait-il me renseigner sur ce que je dois modifier dans mes scripts ?

    Par avance grand merci.

    Voici ma page d'ajout de référence - "ajout_gamme" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <meta charset="utf-8">
    <?php include 'header_01.php'; ?>
    <div class="container">
    <div class="row">
    <div class="span3">
    <?php
    include 'col-left-co.php';
     
    ?>
    </div>
     
    <div class="span9">
    <?php
     
    if (!isset($_GET['section']) OR $_GET['section'] == 'index')
    {
    include_once('../../controleur/prod/index.php');
    foreach($gammes as $gamme)
    {
    ?>
     
    <ul class="thumbnails input.span3">	
    <li class="span3" style="margin-left:50px;">
    <div class="thumbnail ">
    <img src="upload/<?php echo $gamme['Image']; ?>" width="300px" height="300px">
    <div class="caption table">
    <strong><?php echo $gamme['Reference']; ?> - <?php echo $gamme['Nom_Client']; ?></strong>
    <form action="../../modele/prod/traitement_prod_gam.php" method="POST" class="col-lg-6">
    <input type="hidden" name="Reference" value="<?php echo $gamme['Reference']; ?>"/>
    <input type="hidden" name="Nom_Client" value="<?php echo $gamme['Nom_Client']; ?>"/>
    <input type="submit" class="btn btn-success" value="Production"/>
    <a class="btn btn-primary" href="produit.php?Reference=<?php echo $gamme['Reference']; ?>&amp;Nom_Client=<?php echo $gamme['Nom_Client']; ?>">Plus d'infos</a>
    </form>
    </div>
    </div>
    </li>
    </ul>
     
    <?php
     
    }
    }
    ?>
     
    </div>
    </div>
    <?php
     
    include 'footer.php'; ?>
    Et voici ma page de traitement pour l'ajout de référence - traitement_gamme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    <?php
        header('Refresh: 4; URL= ../../vue/prod/ajout_gamme.php');
     
        // Connexion à la base de données : 
    include_once('../connexion_DB.php');
     
        // Les champs du formulaire ont-ils été remplis ?
        if (isset($_POST['Reference'], $_POST['Nom_Client'], $_POST['Description']) && !empty($_POST['Reference'])) 
    	{
    	//Fichier de la miniature
    		$fichier01 = basename($_FILES['Image']['name']);
    		$dossier = '../../vue/prod/upload/';
    		$extensions = array('.gif', '.jpg', '.jpeg');
    		$extension = strrchr($_FILES['Image']['name'], '.'); 
    		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    			{
    				 $erreur = 'Vous devez uploader un fichier de type gif, jpg ou jpeg ...';
    			}
    				if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    				{
    				 //On formate le nom du fichier ici...
    				 $fichier01 = strtr($fichier01, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    					$fichier01 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier01);
    					if(move_uploaded_file($_FILES['Image']['tmp_name'], $dossier . $fichier01)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    					{
    						$req = $bdd->prepare('INSERT INTO Gamme(Image) VALUES(:Image)'); // Evidemment il faut mettre un WHERE .. = .. (car l'image est forcément liée à un utilisateur?)
    					}
    						else
    						{
    							echo $erreur;
    						}
    				}
     
    	//pdf de la gamme
     
    	$fichier02 = basename($_FILES['Gamme']['name']);
    	$dossier = '../../vue/prod/upload/';
    	$extensions = array('.pdf');
    	$extension = strrchr($_FILES['Gamme']['name'], '.'); 
    	if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    			{
    				 $erreur = 'Vous devez uploader un pdf uniquement ...';
    			}
    				if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
    				{
    					 //On formate le nom du fichier ici...
    					 $fichier02 = strtr($fichier02, 
    						  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    						  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    					$fichier02 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier02);
    					if(move_uploaded_file($_FILES['Gamme']['tmp_name'], $dossier . $fichier02)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    					{
    						$req = $bdd->prepare('INSERT INTO Gamme(Gamme) VALUES(:Gamme)'); // Evidemment il faut mettre un WHERE .. = .. (car l'image est forcément liée à un utilisateur?)
    					}
    						else
    						{
    							 echo $erreur;
    						}
    }
            // Formatage du nom de la Gamme : 
            $Reference = strtoupper($_POST['Reference']);
    		$Nom_Client = strtoupper($_POST['Nom_Client']);
    		$Description = strtoupper($_POST['Description']);
    		$Gamme = array($fichier02);
    		$Image = array($fichier01);
     
            $req = $bdd->prepare("SELECT * FROM gamme WHERE Reference = :Reference");
            $req->execute(array('Reference' => $Reference));
            $count = $req->rowCount();
     
            if($count){
                $message = "La Gamme $Reference fait déjà parti de la base de données, elle n'a donc pas été ajoutée !";
            } else {
    			$req = $bdd->prepare("INSERT INTO gamme (Reference, Nom_Client, Description, Gamme, Image) 
    			VALUES (:Reference, :Nom_Client, :Description, :Gamme, :Image)");
    			$req->execute(array(
                    'Reference' => $_POST['Reference'],
                    'Nom_Client' => $_POST['Nom_Client'],
                    'Description' => $_POST['Description'],
    				'Gamme' => $fichier02,
                    'Image' => $fichier01
                ));
     
                $message = nl2br("La gamme <strong>$Reference</strong> a bien été enregistrée dans la base de données.
                Voici le détail:
    
                Référence : $Reference
    			Nom : {$_POST['Nom_Client']}
                Description : {$_POST['Description']}
    
                Vous allez être redirigé à la page précédente...");
            }
        }
    	else 
    	{
            $message = nl2br("Un problème est survenu votre Gamme n'a pas été enregistrée.
            Vous allez être redirigé à la page précedente...");
        }
     
        if(isset($message))
    	{ 
            echo $message; 
        }
    ?>

  2. #2
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 508
    Par défaut
    Bonjour, si je comprends bien, tu veux insérer une image dans la BD ? Si oui, une BD ne stocke pas les images, elle stock les chemins d'accès aux images.
    Sinon, exprime toi clairement.

    Cordialement.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- A quoi sert de montrer le code de "ajout_gamme" ?
    Je n'y vois rien en rapport avec la question... à part le ré-affichage de l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="upload/<?php echo $gamme['Image']; ?>" width="300px" height="300px">
    Il aurait été plus utile de voir le formulaire d'upload.

    2-
    Citation Envoyé par mrc_AO Voir le message
    ...en second point, je souhaiterais pouvoir enregistrer le chemin vers le répertoire contenant mon fichier téléchargé et non pas simplement le nom du fichier.
    Là, on n'y comprend rien.

    Le principe :
    1. on traite le fichier téléchargé (gestion d'erreurs, extensions,...)
    2. on enregistre le fichier (physique) dans un répertoire (move_uploaded_file)
    3. on peut éventuellement redimensionner l'image (6-B. Fonctions de redimensionnement d'images)
    4. on enregistre le nom du fichier en base de données (requête SQL).


    3-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?php
        header('Refresh: 4; URL= ../../vue/prod/ajout_gamme.php');
    Tu rafraichis la page, sans même attendre que le traitement soit terminé ??

    Il faut faire un header('Location:....') A LA FIN DU TRAITEMENT.

    4-
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $extension = strrchr($_FILES['Image']['name'], '.');
    Ça non plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // extension du fichier uploadé (en minuscule)
    $extension = strtolower(pathinfo($_FILES['Image']['name'],PATHINFO_EXTENSION));
    5- Voici un exemple de traitement : 4-C2. Traitement Photo : news_traiter_photo.php (tester la démo)
    Dernière modification par Invité ; 13/08/2018 à 13h31.

  4. #4
    Membre confirmé
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juillet 2015
    Messages : 59
    Par défaut
    Hello Jreaux, bonjour Mannequin,

    merci pour votre intérêt et mes excuses pour ce retour tardif (week-end, vacances - enfants obligent ...).

    1- voici tout d'abord pour mon formulaire de traitement - tu trouveras, Jreaux, encore ce fameux "header" positionné au même endroit, sur lequel je reviens plus tard dans mon message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    <?php
    header('Refresh: 4; URL= ../../vue/prod/ajout_gamme.php');
     
    // Connexion à la base de données : 
    include_once('../connexion_DB.php');
     
    // Les champs du formulaire ont-ils été remplis ?
    if (isset($_POST['Reference'], $_POST['Nom_Client'], $_POST['Description']) && !empty($_POST['Reference'])) 
    {
    //Fichier de la miniature
    	$fichier01 = basename($_FILES['Image']['name']);
    	$dossier = '../../vue/prod/upload/';
    	$extensions = array('.gif', '.jpg', '.jpeg');
    	$extension = strrchr($_FILES['Image']['name'], '.'); 
    	if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    		{
    			 $erreur = 'Vous devez uploader un fichier de type gif, jpg ou jpeg ...';
    		}
    			if(!isset($erreur)) //S'il n'y a pas d'erreur, upload
    			{
    			 //Formatage du nom du fichier 
    			 $fichier01 = strtr($fichier01, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    				$fichier01 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier01);
    				if(move_uploaded_file($_FILES['Image']['tmp_name'], $dossier . $fichier01)) //Si la fonction renvoie TRUE, l'upload a fonctionné...
    				{
    					$req = $bdd->prepare('INSERT INTO Gamme(Image) VALUES(:Image)'); 
    				}
    					else
    					{
    						echo $erreur;
    					}
    			}
     
    //pdf de la gamme
     
    $fichier02 = basename($_FILES['Gamme']['name']);
    $dossier = '../../vue/prod/upload/';
    $extensions = array('.pdf');
    $extension = strrchr($_FILES['Gamme']['name'], '.'); 
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    		{
    			 $erreur = 'Vous devez uploader un pdf uniquement ...';
    		}
    			if(!isset($erreur)) //S'il n'y a pas d'erreur, upload
    			{
    				 //Formatage du nom du fichier
    				 $fichier02 = strtr($fichier02, 
    					  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    					  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    				$fichier02 = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier02);
    				if(move_uploaded_file($_FILES['Gamme']['tmp_name'], $dossier . $fichier02)) //Si la fonction renvoie TRUE, l'upload a fonctionné...
    				{
    					$req = $bdd->prepare('INSERT INTO Gamme(Gamme) VALUES(:Gamme)');
    				}
    					else
    					{
    						 echo $erreur;
    					}
    }
    	// Formatage du nom de la Gamme : 
    	$Reference = strtoupper($_POST['Reference']);
    	$Nom_Client = strtoupper($_POST['Nom_Client']);
    	$Description = strtoupper($_POST['Description']);
    	$Gamme = array($fichier02);
    	$Image = array($fichier01);
     
    	$req = $bdd->prepare("SELECT * FROM gamme WHERE Reference = :Reference");
    	$req->execute(array('Reference' => $Reference));
    	$count = $req->rowCount();
     
    	if($count){
    		$message = "La Gamme $Reference fait déjà parti de la base de données, elle n'a donc pas été ajoutée !";
    	} else {
    		$req = $bdd->prepare("INSERT INTO gamme (Reference, Nom_Client, Description, Gamme, Image) 
    		VALUES (:Reference, :Nom_Client, :Description, :Gamme, :Image)");
    		$req->execute(array(
    			'Reference' => $_POST['Reference'],
    			'Nom_Client' => $_POST['Nom_Client'],
    			'Description' => $_POST['Description'],
    			'Gamme' => $fichier02,
    			'Image' => $fichier01
    		));
     
    		$message = nl2br("La gamme <strong>$Reference</strong> a bien été enregistrée dans la base de données.
    		Voici le détail:
    
    		Référence : $Reference
    		Nom : {$_POST['Nom_Client']}
    		Description : {$_POST['Description']}
    
    		Vous allez être redirigé à la page précédente...");
    	}
    }
    else 
    {
    	$message = nl2br("Un problème est survenu votre Gamme n'a pas été enregistrée.
    	Vous allez être redirigé à la page précedente...");
    }
     
    if(isset($message))
    { 
    	echo $message; 
    }
    ?>
    Telle quelle, ma page de traitement fonctionne (les fichiers sont bien uploadés dans mon dossier image et s'affichent correctement à l'écran) mais le script n'applique pas la contrainte concernant les formats et je peux en réalité uploader un .tiff ou un .png ou n'importe quoi d'autre, là ou un .pdf et/ou un .jpeg sont normalement attendus ...
    Donc, j'ai bien vu ton intervention Jreaux, concernant cette contrainte, de même que le modèle que tu m'as indiqué, je t'en remercie, et je m'apprête à retravailler mon script pour voir à quel moment cette contrainte concernant les formats ne s'applique pas ...
    J'en profite également au passage pour te dire que j'ai fait un tour sur ton site et que j'ai vu tes créas qui sont bien sympa (j'ai particulièrement aimé les dessins) - bravo pour ton sens du "multimédia" au sens large et ta maîtrise de la matière et du virtuel.

    2 - Je reviens sur le point qu'il vous semblait obscur à toi et à mannequin : mon but est de créer un "traceur" pour gérer un flux graphique. J'imprime en numérique des fichiers sur différents médium (forex, PET, PVC, etc) qui sont destinés à être découpés numériquement (pour fabriquer des présentoirs). L'arborescence des fichiers existe déjà et contient un bon nombre de références. Je souhaiterais que mon système de gestion me permette de regrouper les références des mes produits, mes plans techniques, mes fichiers à imprimer via des base de données et idéalement sans avoir à modifier cette arborescence de fichier existante.
    C'est à dire qu'en gros, je voudrais que mon système pioche les éléments de chaque référence directement dans les fichiers existants - et je n'aurais donc pas à créer une nouvelle arborescence ou à modifier l'existante pour implanter mon système.
    D'où cette réflexion, vaut-il mieux utiliser un script de téléchargement de fichiers comme celui exposé précédemment (traitement_gammes.php) ou bien utiliser un autre script qui va simplement enregistrer un chemin vers les fichiers à utiliser (je l'ai déjà développé mais je rencontre un petit problème d'affichage avec, mes images qui ne s'affichent pas à l'écran ...).

    3 - pour le header en début, ce n'est certainement pas très académique de lancer une redirection vers une autre page en début de script mais, en réalité, la formule me convient plutôt pas mal ... même si je présume que l'écueil le plus évidant est que je coupe la synchronicité du déroulement des événements dans mes scripts et que je risque de passer à côté d'une erreur sans m'en apercevoir ... A moins qu'il n'y ai une autre raison qui me contraindrait à faire comme tu me l'as déjà indiqué et que je ne connaîtrais pas ...

    Voilà en gros les trois points explicités, mes excuses d'avance de ce message à rallonge, à priori et pour l'instant j'attends votre retour ou vos avis, si vous acceptez d'y répondre, sur les points 2 et 3 de mon message.

    Bon après-midi à vous.

    Cheers,
    Mrc-Ao

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Téléchargement d'image
    Par bubble_gum dans le forum ASP
    Réponses: 6
    Dernier message: 12/05/2005, 23h13
  2. Question à propos des niveaux de transaction
    Par davy.g dans le forum Oracle
    Réponses: 3
    Dernier message: 18/01/2005, 15h31
  3. Petite question à propos du redbook...
    Par Michaël dans le forum OpenGL
    Réponses: 3
    Dernier message: 04/11/2004, 12h54
  4. Petite question à propos d'une requete
    Par ViBy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/09/2004, 12h21
  5. Une question à propos des thread
    Par tscoops dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/11/2003, 14h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo