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 :

Image et commentaire dans mysql


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    développeur web
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut Image et commentaire dans mysql
    Bien le bonjour,

    J’essaie d'uploader une image dans ma base de donnée mysql, tout fonctionne mais je n'arrive pas à insérer un commentaire

    voici mon php :
    Code php : 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
    if(isset($_POST['sumit'], $_POST['desc']))
    		 	{
    		 		if(getimagesize($_FILES['image']['tmp_name']) == FALSE)
    		 		{
    		 			echo "Insert image";
    		 		 }
    		  		else
    		 		{
     
    		 			$image= addslashes($_FILES['image']['tmp_name']);
    		 			$name= addslashes($_FILES['image']['name']);
    		 			$image= file_get_contents($image);
    		 			$image= base64_encode($image);
    		 			saveimage($name,$image,$desc);
    		 		}
     
    		 	}
     
    		 	function saveimage($name,$image,$desc)
    		 	{
     
    		 		$con=mysql_connect("localhost","root","");
    		 		mysql_select_db("realtea",$con);
    		 		$qry="INSERT INTO images (name,image) VALUES ('$name','$image','$desc')";
    		 		$result=mysql_query($qry, $con);
    		 		if($result)
    		 		{
    		 			echo "<br/>Image uploaded.";
    		 		}
    		 		else
    		 		{
    		 			echo "<br/>Image not uploaded.";
    		 		}
    		 	}

    ensuite mon formulaire :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    	 <form method="post" action="imgtest.php" enctype="multipart/form-data">
     
    		 <br/>
    		 		 <label for="image">Upload image</label>
    				 <input type="file" id="file" name="image" required="required"/>
    		 <br/>
    				 <label for="desc">Description</label>
    				 <textarea id="desc" name="desc" required="required"></textarea> 
    		 <br/>
    				 <input type="submit" name="sumit" value="Créer l'actualité">
    	</form>

    et la base de donnée :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE IF NOT EXISTS `images` (
    `id` int(11) NOT NULL,
      `name` varchar(50) NOT NULL,
      `image` longblob NOT NULL,
      `desc` text NOT NULL,
      `valid` tinyint(4) NOT NULL
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=24 ;



    alors le code que j'ai mis, l'upload de l'image se fait bien mais je ne sais pas comment ajouter la ''desc'' qui serait la description...

    Je précise que je débute et que j'éssaie d'apprendre seul

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Bon puisque tu commences, tu dois savoir que les commande mysql_ sont déprécié et seront enlevée des PHP 7.
    Tu dois utiliser mysqli_ ou PDO

    Ensiute ton problème se situe ici

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO images (name,image) VALUES ('$name','$image','$desc')
    Pose toi la question de ce que tu veux insérer et où ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    développeur web
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Bonjour MaitrePylos !

    J'ai tenu compte de tes remarques par rapport au PHP 7. J'ai donc créer une requête PDO et j'ai réussis à insérer une image + description dans la base de donnée.
    Par contre je n'arrive pas à l'afficher, ni même la description.

    Je voudrais en faite qu'a l'ajout d'une image + description dans la base de donnée via le formulaire input type file que l'image et la description s'affiche sur cette même page.

    Voici ma requête PDO (qui fonctionne et est bien dans la base) :

    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
     
     
    if(isset($_POST['sumit'], $_POST['desc']))
    {
    	if(!empty($_POST['desc'])){
     
    		$image= addslashes($_FILES['image']['tmp_name']);
    		$name= addslashes($_FILES['image']['name']);
    		$image= file_get_contents($image);
    		$image= base64_encode($image);
     
    		$desc =$_POST['desc'];
    		//$image =$_POST['image'];
    		$insert_x = $bdd->prepare("INSERT INTO images VALUES ('', '$name', '$image', '$desc', '1')"); # Insertion dans la table d'une nouvelle news
    		$insert_x->execute(array(
    		'desc' => $desc,
    		'image' =>$image,
    		'name' =>$name
     
     
    		));}
    }
     
     
    $imageaffichage = array();
     
    $selectAll_x = $bdd->prepare("SELECT id, name, image, desc, valid FROM images WHERE valid = '1'"); # Selection de toutes les news valides
    $selectAll_x->execute();
     
    while($result = $selectAll_x->fetch())
    {
    	$imageaffichage[] = $result; # Replissage du tableau avec ces valeurs
    }
    Ensuite voici mon appel pour afficher l'image uploadée + la description qui va avec :

    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
     
     
    <section id="actu">
     	<header>
     		<h2>Ajouter / Supprimer une actualité</h2>
     	</header>
     
    		 <p>Ici vous pouvez ajouter ou supprimer une image.</p>
     
    			 <form method="post" action="produits.php" enctype="multipart/form-data">
     
    		 <br/>
    		 		 <label for="image">Upload image</label>
    				 <input type="file" id="file" name="image" required="required"/>
    		 <br/>
    				 <label for="desc">Description</label>
    				 <textarea id="desc" name="desc" required="required"></textarea> <!-- Remplir ce champ est requis -->
    		 <br/>
    				 <input type="submit" name="sumit" value="Créer l'actualité">
    		 	</form>
    		 	<img alt="" src="">
     
    	 <header id="header_liste_actu">
     		<h2>Produits déja publiées</h2>
     	 </header>
     
     
     <!-- boucle affichant les dernières actus -->
     <ul id="news">
     
    	 <?php
     
     
    		 foreach ($imageaffichage as $im) # Boucle qui affiche les news
    		 {
     
     
    		 	echo '
    					 <li>
    						 <article>
    							 <header>
    								 <h3>'.$im['desc'].'</h3>
    							 </header>
    				
    							 <footer>
    							 	
    							 </footer>
    				
    							 <div>
    							 	<p><img src="data:image;base64,'.$im.' "></p>
    							 <div>
     				
    							 <p><a href="actu.php?delete='.$imageaffichage['id'].'">Supprimer</a></p>
    							 </div>
     	
    						 </div><!-- /.entry-content -->
    				
    						 </article>
     		
    					</li>';
     
    		 }
     
    	?>

    Je créer une boucle qui est sensé afficher l'image et la description. J'ai fais le même code pour ajouter une news par exemple et tout fonctionne à merveille.

    Je pense peut-être que c'est dû à l'image blob ? Je ne sais tout simplement pas l'afficher ...


    Encore merci pour votre aide et je prends volontiers tout conseils qui me seront utiles par la suite

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

    La bonne pratique consiste à :
    • Télécharger l'images dans un dossier "images"
    • Enregistrer en BDD uniquement son nom (URL)



    Cela permet d'alléger notablement la BDD et simplifie l'affichage de l'image.
    Dernière modification par Invité ; 26/08/2015 à 11h05.

  5. #5
    Membre à l'essai
    Homme Profil pro
    développeur web
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Merci de ta réponse !

    Donc il faudrait que je change ''`image` longblob NOT NULL,'' en varchar par exemple ? Je vois pas comment je pourrais enregistrer une url dans une BDD je suis un peu perdu.

    Il est vrai que en se moment quand j'ajoute une image dans la BDD, l'image en question ne s'upload dans aucun de mes dossiers...

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    bonjour, ici c'est incohérent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $insert_x = $bdd->prepare("INSERT INTO images VALUES ('', '$name', '$image', '$desc', '1')"); # Insertion dans la table d'une nouvelle news
    		$insert_x->execute(array(
    		'desc' => $desc,
    		'image' =>$image,
    		'name' =>$name
     
     
    		));}
    tu devrais faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $insert_x = $bdd->prepare("INSERT INTO images VALUES ('', ?, ?, ?, '1')"); # Insertion dans la table d'une nouvelle news
    		$insert_x->execute(array(
    		$desc,
    		$image,
    		$name
     
     
    		));}
    Ensuite, une fois ton image télécharger tu dois la déplacer vers un endroit précis, regarde du coté de move_uploaded_file()

  7. #7
    Membre à l'essai
    Homme Profil pro
    développeur web
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    J'ai fais les modifications, ça me semble logique je comprends bien.

    Par contre je suis perdu sur le ''move_uploaded_file() ''... des pistes ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sparkko Voir le message
    Par contre je suis perdu sur le ''move_uploaded_file() ''... des pistes ?
    Oui :

    Le minimum est que tu fasses AUSSI toi-même des recherches, surtout quand on te fourni des liens !

    A chercher aussi : "uploader fichier PHP"

    Tu devrais tomber au moins là-dessus (pas récent, mais la technique est là) :

  9. #9
    Membre à l'essai
    Homme Profil pro
    développeur web
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Après plusieurs recherche je n'ai pas réellement trouvé quelque chose qui fonctionnait....

    Lorsque j'upload un fichier j’obtiens les deux messages suivants : ''

    Warning: move_uploaded_file(uploads/52362_gb_news.jpg): failed to open stream: No such file or directory in C:\xampp\htdocs\Morand\cms\ressource\ressource.php on line 258

    Warning: move_uploaded_file(): Unable to move 'C:\xampp\tmp\php6266.tmp' to 'uploads/52362_gb_news.jpg' in C:\xampp\htdocs\Morand\cms\ressource\ressource.php on line 258

    Impossible de copier le fichier dans uploads/

    voici mon code en espérant avoir de l'aide

    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
     
    if( isset($_POST['sumit'], $_POST['desc']) ) // si formulaire soumis
    		{
    			$content_dir = 'uploads/'; // dossier où sera déplacé le fichier
     
    			$tmp_file = $_FILES['image']['tmp_name'];
     
    			if( !is_uploaded_file($tmp_file) )
    			{
    				exit("Le fichier est introuvable");
    			}
     
    			// on vérifie maintenant l'extension
    			$type_file = $_FILES['image']['type'];
     
    			if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'png') )
    			{
    				exit("Le fichier n'est pas une image");
    			}
     
    			// on copie le fichier dans le dossier de destination
    			$name_file = $_FILES['image']['name'];
     
    			if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
    			{
    				exit("Impossible de copier le fichier dans $content_dir");
    			}
     
    			echo "Le fichier a bien été uploadé";
    			// et tu insères en base de données quelque chose du genre :
    			// $URL = $content_dir . $name_file;
     
     
     
    		$insert_x = $bdd->prepare("INSERT INTO images VALUES ('', '$image', '$desc', '1')"); # Insertion dans la table d'une nouvelle news
    		$insert_x->execute(array(
    		'desc' => $desc,
    		'image' =>$image
     
     
    		));
    		}
    ensuite quel serait le code pour afficher les images uploadée ?

    Merci d'avance

  10. #10
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    As-tu le droit d'écrire dans uploads/ ?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		$insert_x = $bdd->prepare("INSERT INTO images VALUES ('', '$image', '$desc', '1')"); # Insertion dans la table d'une nouvelle news
    		$insert_x->execute(array(
    		'desc' => $desc,
    		'image' =>$image
    		));
    Crois-tu vraiment que ce soit la bonne façon de préparer une requête ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		$insert_x = $bdd->prepare("INSERT INTO images VALUES ('', :image, :desc, '1')"); // Insertion dans la table d'une nouvelle news
    		$insert_x->execute(array(
    			':image' => $image,
    			':desc' => $desc
    			));
    Au fait, si c'est un système de news qui t'interesse, j'ai ça dans ma musette :


  12. #12
    Membre à l'essai
    Homme Profil pro
    développeur web
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Je travail en local comment je pourrais ne pas avoir les droits ? :O

    Ensuite, le problème ne vient apparemment pas des requêtes... franchement je sèche ...

  13. #13
    Membre à l'essai
    Homme Profil pro
    développeur web
    Inscrit en
    Août 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : développeur web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2015
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    jreaux62 , merci pour ton lien mais cela semble bien trop complet...

    Je cherche juste à uploader une image dans un dossier, stocker l'url et l'afficher ...

Discussions similaires

  1. [Upload] Insertion image dans mysql après upload
    Par alexmorel dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 23h46
  2. Stocker image dans MySql
    Par Sylvain245 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 05/12/2005, 13h08
  3. Stockage d'images dans Mysql?
    Par sessime dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/10/2005, 16h56
  4. stockage d'images dans Mysql
    Par sessime dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/02/2004, 16h08

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