Page 1 sur 1

PB d'envoie d'image dans Mysql

Posté : 30 avr. 2007, 10:42
par oscar
Bonjour

Je suis debutant en PHP et s'il vous plait je voudrais avoir de l'aide pour envoyer une image dans Mysql, l'attribut image se trouve dans la table adherent et je veux directement mettre le lien de l'image dans la table. c'est-à-dire, le type de donnée pour image sera de VARCHAR(100).
si vous pouviez me donner un code, s'il vous plait
Merci.

Posté : 30 avr. 2007, 10:46
par djtec
Voici une requete que tu peux modifier pour l'adapter
$sql = "INSERT INTO tatable (id, images) VALUES('','$images')";

Posté : 30 avr. 2007, 10:50
par sadeq
La solution est simple, étant donné que tu as un champ nommé "image" de type varchar(100) c'est une chaîne qui mémorisera le chemin d'accès à tes images réelles sur le disque.

Pour ajouter donc une référence à une image, ça doit se faire par un INSERT normal:

Code : Tout sélectionner

INSERT INTO ma_table (...., image) VALUES (...., 'images/mon_image.gif')
NB: les "...." peuvent être complèté par les autres champs et valeurs correspondantes.
Ici la référence enregistrée de l'image désigne que l'image "mon_image.gif" se trouve dans un dossier "images/" du répertoire en cours.

Posté : 30 avr. 2007, 11:10
par oscar
Bonjour
S'il vous plait, mon projet consiste à remplir le formulaire d'inscription d'un adhérent, dans ce formulaire, je voudrais que je mets la photo de celui-ci, alors j'ai un probleme d'envoie d'image dans Mysql, voici le code la page adherent.html

Code : Tout sélectionner

<td>Photo </td> <td><input class="textfield3" name="photo" type="file"></td>

le code de la page inserer.php est le suivant:
<?php
  require("../conf.php");

// CONNEXION A LA BASE DE DONNEE
$cnx = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
$db= mysql_select_db( $sql_bdd );


  //récupération des valeurs des champs:
  //nom:
  $nom     = $_POST["nom"] ;
  //prenom:
  $prenom = $_POST["prenom"] ;
  //photo:
  $photo = $_POST["photo"] ;
  //adresse:
  $adresse = $_POST["adresse"] ;
  //code postal:
  $mail        = $_POST["mail"] ;
  //numéro de téléphone:
  $typeemp       = $_POST["type_emp"] ;
  
if (!is_uploaded_file($photo))
	{
	$photo_name ="photo_sans.jpg";
	}
if (is_uploaded_file($photo))
	{
	if ($photo_type == "image/pjpeg" OR $photo_type == "image/gif")
	{	
	move_uploaded_file ($_FILES['photo']['tmp_name'],$imgs_folder . "/" . $photo_name);
	}
	else
	{
	echo"<center><font><b><u>Type du fichier</u><br>".$_FILES['photo']['type']."<br>Invalide</b></font></center>";
	exit;
	}
	}   
  //création de la requête SQL:
  $sql = "INSERT  INTO emprunteur (nomemprunteur, prenomemprunteur,photoemprunteur, adresse, email, typeemprunteur)
            VALUES ( '$nom', '$prenom','$photo_name', '$adresse', '$mail', '$typeemp') " ;
  
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
  
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }
?>
l'en*mplacement de mon repertoire image je l'ai definit dans conf.php
ceci est mon code essayer de voir
Merci

Posté : 30 avr. 2007, 11:30
par sadeq
ça a l'air bon ,sauf que $photo est un parametre de type $_FILES et non $_POST et que t'as oublié de donner un nom à ton image dans le cas où elle est uploadée.

Partie à corriger:
...
$photo = $_FILES['photo'];
...
...
if (is_uploaded_file($photo)) 
{ 
//nom de la photo
$photo_name = $nom."-".$prenom.".jpg";

if ($photo_type == "image/pjpeg" OR $photo_type == "image/gif") 
{ 
move_uploaded_file ($_FILES['photo']['tmp_name'],$imgs_folder . "/" . $photo_name); 
} 
else 
{ 
echo"<center><font><b><u>Type du fichier</u><br>".$_FILES['photo']['type']."<br>Invalide</b></font></center>"; 
exit; 
}

Posté : 30 avr. 2007, 12:13
par oscar
Merci
mais le prob reside le type d'image a uplodee

Posté : 30 avr. 2007, 12:22
par sadeq
Tu veux dire, comment déterminer l'extension du fichier automatiquement?

Posté : 30 avr. 2007, 12:28
par oscar
OUI

Posté : 30 avr. 2007, 12:42
par sadeq
Ben, selon les tests que tu fais par
if ($photo_type == "image/pjpeg" OR $photo_type == "image/gif")
il suffit de les décomposer:
//nom de la photo 
$photo_type = $_FILES["photo"]["type"];
if ($photo_type == "image/pjpeg") $photo_name = $nom."-".$prenom.".jpg"; 
else $photo_name = $nom."-".$prenom.".gif"; 
Et tu peux en rajouter autant que tu veux

Posté : 02 mai 2007, 15:29
par oscar
Bonjour
j'ai essayé votre code et j'ai ce message d'erreur à l'affichage; c'est à dire que j'arrive pas à mettre l'adresse de la photo dans la base et qu'il y a un prob de conversion. J'attends impatiement votre reponse SVP, Merci

Notice: Array to string conversion in C:\Program Files\EasyPHP 2.0b1\www\gestion de documents\emprunteur\insereremp.php on line 23

Notice: Array to string conversion in C:\Program Files\EasyPHP 2.0b1\www\gestion de documents\emprunteur\insereremp.php on line 27
L'insertion a été correctement effectuée

Posté : 02 mai 2007, 16:04
par sadeq
Quelles sont les instructions des lignes 23 et 27 du programme insereremp.php ?

Posté : 02 mai 2007, 17:07
par oscar

Code : Tout sélectionner

<?php require("../conf.php"); // CONNEXION A LA BASE DE DONNEE $cnx = mysql_connect($sql_serveur,$sql_user,$sql_passwd); $db= mysql_select_db( $sql_bdd ); //récupération des valeurs des champs: //nom: $nom = $_POST["nom"] ; //prenom: $prenom = $_POST["prenom"] ; //photo: $photo = $_FILES["photo"] ; //adresse: $adresse = $_POST["adresse"] ; //code postal: $mail = $_POST["mail"] ; //numéro de téléphone: $typeemp = $_POST["type_emp"] ; if (!is_uploaded_file($photo)) { $photo_name ="photo_sans.jpg"; } if (is_uploaded_file($photo)) { $photo_name = $nom."-".$prenom.".jpg"; if ($photo_type == "image/pjpeg" OR $photo_type == "image/gif") { move_uploaded_file ($_FILES['photo']['tmp_name'],$imgs_folder . "/" . $photo_name); } else { echo"<center><font><b><u>Type du fichier</u><br>".$_FILES['photo']['type']."<br>Invalide</b></font></center>"; exit; } } //création de la requête SQL: $sql = "INSERT INTO emprunteur (nomemprunteur, prenomemprunteur,photoemprunteur, adresse, email, typeemprunteur) VALUES ( '$nom', '$prenom','$photo_name', '$adresse', '$mail', '$typeemp') " ; //exécution de la requête SQL: $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ; //affichage des résultats, pour savoir si l'insertion a marchée: if($requete) { echo("L'insertion a été correctement effectuée") ; } else { echo("L'insertion à échouée") ; } ?>

Posté : 03 mai 2007, 09:33
par sadeq
Ligne 23 :
if (!is_uploaded_file($photo))
Ligne 27 :
 if (is_uploaded_file($photo))
C'est normal les 2 lignes utilisent la variable $photo qui est en fait un tableau (Array) issu de $_FILES['photo'] alors que les instructions 23 et 27 exigent un texte (String)

Correction: la variable $photo doit être le nom du fichier téléchargé
//photo: 
  $photo = $_FILES["photo"]['tmp_name'] ; //nom du fichier temporaire uplodé
Au lieu de:
//photo: 
  $photo = $_FILES["photo"] ; 
Remarque que tu peux remplacer la ligne 27 par l'instruction else puisque son if évalue le contraire de la ligne 23

Posté : 06 mai 2007, 08:26
par oscar
Bonjour

Merçi de votre aimable aide Sadeq

Oscar