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

PHP & Base de données Discussion :

Impossible d'enregistrer le chemin de l'image qui est dans mon sous-dossier [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 33
    Par défaut Impossible d'enregistrer le chemin de l'image qui est dans mon sous-dossier
    Bonjour,

    Je suis débutant en PHP et MySQL, Je besoin que quelqu'un m'aide avec ceci :

    Oft, J'ai copié un tuto dans un site, qui fonctionne tres bien chez moi.
    C"est tuto m'a permis de copier des images dans un dosier (images) et sous-dossier (images/art_min) de mon serveur local.

    Mon problème est que, j'aimerais enregistrer le chemin de l'image du sous-dossier (images/art_min) ds la bdd mysql.

    Voici le code :

    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
     
     
    <?php
    $db = mysqli_connect("localhost", "root", "", "mydb");
     
     
    if(!empty($_FILES)){
    	require("imgClass.php"); // Classe permet de rogner l'image
    	$img = $_FILES['img'];
    	$ext = strtolower(substr($img['name'], -3));
    	$allow_ext = array('jpg','png');
     
    	// Vérification de l'xtension 
    	if(in_array($ext,$allow_ext)) {
    		move_uploaded_file($img['tmp_name'], "images/".$img['name']);  // L'image est copiée dans le dossier 'images' du serveur a sa taille normale.
    	Img::creerMin("images/".$img['name'],"images/art_min",$img['name'], 225,225); // Execution de la Classe qui rogne l'image a la taille 225, 225. L'image rognée est enregistée dans le sous-dossier art_min du dosier images.
    	}
    	else{
    		$erreur = "Attention!! Votre fichier n'est pas une image";
    	}
    }
     
    ?>
    ça fonctionne très mais coté enregistrement dans la bdd

    Help SVP!!

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ben il manque du code pour faire cet enregistrement en BDD ; il n'y a pas de requête SQL dans votre code !

    Par contre, puisqu'il semble que vous enregistriez les fichiers et leur miniature toujours dans les mêmes dossiers, à quoi sert-il d'enregistrer le nom de ces dossiers en BDD ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 33
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Ben il manque du code pour faire cet enregistrement en BDD ; il n'y a pas de requête SQL dans votre code !

    Par contre, puisqu'il semble que vous enregistriez les fichiers et leur miniature toujours dans les mêmes dossiers, à quoi sert-il d'enregistrer le nom de ces dossiers en BDD ?

    Merci d'avoir réagi a ma préoccupation,

    Les fichiers sont enregistrés dans 2 dossiers différent, il y a le dossier images où sont uploadé les fichiers en format normal;
    il y a aussi un dossier art_min qui est dans images qui reçoit les miniatures.

    Ce que je veux c'est d’enregistrer le chemin de l'image(fichier) qui est le sous-dossier art_min, ds la bdd en commençant par le dossier images qui est dans la racine. Parce que j'aurais besoin d'afficher sur l’écran: la photo, le nom chaque agent.

    (JV AVOIR UN TRUC COMME CA : images/art_min/moimeme.jpg DS LA TABLE AGENT

    Pour être plus claire voici le code. Qui enregistre l'image et sa miniature, affiche aussi la photo sur l’écran.

    Essayez et aider moi merci d'avance.

    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
    <?php
    $db = mysqli_connect("localhost", "root", "", "mydb");
     
     
    if(!empty($_FILES)){
    	require("imgClass.php");                    // Classe pour miniaturiser la photo
    	$img = $_FILES['img'];
    	$ext = strtolower(substr($img['name'], -3));
    	$allow_ext = array('jpg','png');
    	if(in_array($ext,$allow_ext)) {
     
    		move_uploaded_file($img['tmp_name'], "images/".$img['name']);         // Enregistrement de la photo dans le dossier principal (sans muniature) /fonctionnement tres bien
    	Img::creerMin("images/".$img['name'],"images/art_min",$img['name'], 225,225);            // Enregistrement de la même photo dans le sous-dossier du dossier principal mais cette fois si muniaturisée /fonctionnement tres bien
     
    $img  =$_POST['tmp_name']."images/".$img['name']; 
    $noms = $_POST['noms'];  
     
    $sql = "INSERT INTO agent (noms, photo) VALUES ('$noms', '$img')";                     // Pour le nom c ok mais la photo c vide
    mysqli_query($db, $sql);
     
     
    	}
    	else{
    		$erreur = "Attention!! Votre fichier n'est pas une image";
    	}
    }
     
    ?>
     
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Document sans nom</title>
     
    </head>
     
    <body>
     
    	<?php
    if (isset($erreur)) {
    	echo $erreur;
    }
    	?>
     
    	<form method="post" action="uploader.php" enctype="multipart/form-data">
    		<input type="file" name="img"/>
    		<input type="text" name="noms"/>
    		<input type="submit" name="Envoyer"/>
    	</form>
     
    	<?php    // Partie affichage sur l'ecran, fonctionnement OK
    		$doc = "images/art_min";
    		$dir = opendir($doc);
    		while ($file = readdir($dir)) {
    			$allow_ext = array('jpg','png');
    			$ext = strtolower(substr($file, -3));
    			if(in_array($ext, $allow_ext)){
    				?>
    			<a href="images/<?php echo $file; ?>">
    				<img src="images/art_min/<?php echo $file ?>"/>
    				<h3><?php echo $file ?></h3>
    			</a>
    				<?php
     
    			}
    		}
    	?>
     
    </body>
    </html>

    MERCI POUR VOTRE ASSISTANCE

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Donc vous n'avez besoin d'enregistrer que le nom du fichier puisque le chemin est toujours le même !

    Et le nom du fichier est là, non ?
    Alors pourquoi aller chercher une variable $_POST['tmp_name'] ?
    Cette variable est-elle valorisée ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

    1- en fait, le nom du fichier est dans $_FILES['img']['name']

    Il suffit de faire :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump( $_FILES['img'] );

    2- Cela dit...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $img  =$_POST['tmp_name']."images/".$img['name'];
    On se demande en effet ce que viens faire $_POST['tmp_name'] ici ?

  6. #6
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 33
    Par défaut
    jreaux62


    Après essai de ton code voici le resultat :

    1. var_dump( $_FILES['img'] );

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(5) { ["name"]=> string(19) "1057feeb5825157.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(74) "C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\binaries\tmp\php55D4.tmp" ["error"]=> int(0) ["size"]=> int(23793) }
    Notice: Array to string conversion in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\www\web_getraco\new\g_forage\Frm_saisi\php\uploader.php on line 21
    2.

  7. #7
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 33
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Donc vous n'avez besoin d'enregistrer que le nom du fichier puisque le chemin est toujours le même !

    Et le nom du fichier est là, non ?


    Alors pourquoi aller chercher une variable $_POST['tmp_name'] ?
    Cette variable est-elle valorisée ?

    Oui exactement. Avec mon code J'arrive a uploadé les images dans les dossiers. voyez l'image ci dessous.

    Nom : Capture.PNG
Affichages : 781
Taille : 98,6 Ko

    Mais le noms de l'image dans la bdd la colonne est vide.

    Nom : Capture2.PNG
Affichages : 761
Taille : 13,9 Ko

    Merci

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    À tout hasard, de quel type est la colonne photo ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    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
    Bonsoir, quand tu poste un code, fait ceci [CODE =PHP] script ici[/CODE] . Ou bien clique sur la touche #. Ça facilite la. Lecture du code.

    Maintenant pour ta préoccupation, essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    move_uploaded_file($img, "images/sous_dossier/$img") ;
    Cordialement.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 24/07/2017, 22h24
  2. Enregistrer l'image qui est dans un onglet en pdf
    Par pachi44 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/03/2015, 07h34
  3. image qui est visible
    Par aide03 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 03/02/2009, 13h21
  4. SDL: comment rendre l'image qui est déjà en mémoire?
    Par morning_wind dans le forum SDL
    Réponses: 4
    Dernier message: 16/01/2007, 08h32
  5. Réponses: 2
    Dernier message: 19/09/2005, 17h20

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