Parcourir, stocker et afficher une image :php [Résolu/Fermé]

Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
-
bonjour, pourriez-vous s'il vous plait m'aider?

je suis entrain de créer un site web comme application de stage mais je suis encore débutante en php. dans une page d'ajout de produits je veux parcourir l'image du produit, stocker son url dans la base de donnees et puis l'afficher dans une autre page.
Mais je ne sais pas comment faire pour uploader l'image la stocker et puis appeler son url pour l'afficher.
Merci d'avance pour vos réponses.
Cordialement.

Afficher la suite 

11 réponses

Meilleure réponse
Messages postés
576
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
14
2
Merci
Essaie ça:

<?php require_once('connect.php');

if(isset($_POST['submit'])){// Si le formulaire est soumis

// *************************Fonction pour l'upload ***************************************
$dossier = 'upload/';// On donne une valeur aleatoire au fichier qu'on va uploader et on teste si ce nom existe deja
do {
$s = rand();
} while (is_file($dossier.$s.'.jpg') || is_file($dossier.$s.'.gif')); //$s est le nom du fichier sans l'extension

$temp_name=$_FILES['fichier']['tmp_name'];
$file_name=$_FILES['fichier']['name'];
$file_type=$_FILES['fichier']['type'];
// On defini les types de fichiers autorisés, ici seuls les jpg et les png sont acceptés
$AllowedExtensions= array('image/jpeg', 'image/png', 'image/gif') ;
$Extension=strrchr($file_name,'.');
$Extension=substr($Extension,1);
$Extension=strtolower($Extension);
if((count($AllowedExtensions) > 0 && in_array($file_type, $AllowedExtensions))){
if(copy($temp_name,$dossier.$s.'.'.$Extension)){
$up = true;
$msg = 'Le fichier est valide';//'Le fichier est valide';
$nomdufichier = $s.'.'.$Extension; // On récupere le nom du fichier uploadé
}
}else {
$up = false;
$msg = 'Erreur upload';}
//******************Fin de l'upload **************************************
if ($up == true){
$categorie = addslashes($_POST['select']); // Recuperation de la valeur de la categorie
$nom = addslashes($_POST['nompro']); // Recuperation du nom
$description = addslashes($_POST['descripro']); // Description
$photo = $dossier.$nomdufichier; // Chemin du fichier uploadé
$sql = "INSERT INTO 'produits' ('id_pro' ,'nom_pro' ,'description' ,'photo' ,'id_cat' ,'desig')VALUES (
NULL , '$nom' , '$description' , '$photo' , '$categorie' , '')"; // Construction de la requete
$result = mysql_query ($sql); // Insertion des valeurs
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8 Unicode" />
<title>Ajouter un porduit</title>
</head>
<body>
<h1 align="center">Ajout d'un porduit</h1>
<form action="" method ="POST" name="form3" enctype="multipart/form-data">
<table width="530" border="1" align="center">
<tr>
<td width="160" align="center">nom de la catégorie</td>
<td width="120" align="center">description</td>
<td width="100" align="center">photo:</td>
<td width="150" align="center">nom du produit</td>
</tr>
<tr>
<td align="center"><select name="select">
<?php
do {
?>
<option value="<?php echo $row_cat['id_cat']?>"><?php echo $row_cat['desig']?></option>
<?php
} while ($row_cat = mysql_fetch_assoc($cat));
$rows = mysql_num_rows($cat);
//echo $rows;
if($rows > 0) {
mysql_data_seek($cat,$rows);
$row_cat = mysql_fetch_assoc($cat);
}
?>
</select></td>
<td align="center"><input name="descripro" type="text" /></td>
<td align="center"><input name="fichier" type="file" /><br></td>
<td align="center"><input name="nompro" type="text" /></td>
</tr>
<td colspan="4" align="center"><input type="submit" name="submit" value="?????"/></td>
</tr>
<tr>
</table>
<input type="hidden" name="MM_insert" value="form3">
</form>
</body>
</html>

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63073 internautes nous ont dit merci ce mois-ci

briiiiix
Messages postés
576
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
14 -
Il faut créer un dossier upload ou modifier la valeur de $dossier.

Pour la connexion voici le code du fichier connect.php

<?php
$host='localhost'; //serveur
$login='root'; //login sql
$pass_db=''; // mot de pass sql
$database='pos'; // nom de la base
// connexion à la bdd
mysql_connect($host,$login,$pass_db) or die("Database connection failed!!<br>");
// selection de la base
$selectresult=mysql_select_db($database);
?>
athena21
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4 -
merci briiiiix mais il y a erreur dans la ligne 61 et le plus grand problème c'est que quand j'appuie sur envoyer et je reviens a ma base de données je ne trouve rien de ce que j'ai envoyé.
briiiiix
Messages postés
576
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
14 -
Pour la ligne 61 il me faut la structure de la table categories.

J'ai essayé le code que j'ai posté, il marche.
Attention l'insertion dans la base de données ne se fait que si l'upload a eu lieu.
J'ai ajouté un affichage pour que tu puisse voir si l'upload est fait ou non:

<?php require_once('connect.php');

if(isset($_POST['submit'])){// Si le formulaire est soumis

// *************************Fonction pour l'upload ***************************************
$dossier = 'upload/';// On donne une valeur aleatoire au fichier qu'on va uploader et on teste si ce nom existe deja
do {
$s = rand();
} while (is_file($dossier.$s.'.jpg') || is_file($dossier.$s.'.gif')); //$s est le nom du fichier sans l'extension

$temp_name=$_FILES['fichier']['tmp_name'];
$file_name=$_FILES['fichier']['name'];
$file_type=$_FILES['fichier']['type'];
// On defini les types de fichiers autorisés, ici seuls les jpg et les png sont acceptés
$AllowedExtensions= array('image/jpeg', 'image/png', 'image/gif') ;
$Extension=strrchr($file_name,'.');
$Extension=substr($Extension,1);
$Extension=strtolower($Extension);
if((count($AllowedExtensions) > 0 && in_array($file_type, $AllowedExtensions))){
if(copy($temp_name,$dossier.$s.'.'.$Extension)){
$up = true;
$msg = 'Le fichier est valide';//'Le fichier est valide';
$nomdufichier = $s.'.'.$Extension; // On récupere le nom du fichier uploadé
}
}else {
$up = false;
$msg = 'Erreur upload';}
//******************Fin de l'upload **************************************
if ($up == true){
$categorie = addslashes($_POST['select']); // Recuperation de la valeur de la categorie
$nom = addslashes($_POST['nompro']); // Recuperation du nom
$description = addslashes($_POST['descripro']); // Description
$photo = $dossier.$nomdufichier; // Chemin du fichier uploadé
$sql = "INSERT INTO 'produits' ('id_pro' ,'nom_pro' ,'description' ,'photo' ,'id_cat' ,'desig')VALUES (
NULL , '$nom' , '$description' , '$photo' , '$categorie' , '')"; // Construction de la requete
$result = mysql_query ($sql); // Insertion des valeurs
}
echo $msg.'<br />';}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8 Unicode" />
<title>Ajouter un porduit</title>
</head>
<body>
<h1 align="center">Ajout d'un porduit</h1>
<form action="" method ="POST" name="form3" enctype="multipart/form-data">
<table width="530" border="1" align="center">
<tr>
<td width="160" align="center">nom de la catégorie</td>
<td width="120" align="center">description</td>
<td width="100" align="center">photo:</td>
<td width="150" align="center">nom du produit</td>
</tr>
<tr>
<td align="center"><select name="select">
<?php
do {
?>
<option value="<?php echo $row_cat['id_cat']?>"><?php echo $row_cat['desig']?></option>
<?php
} while ($row_cat = mysql_fetch_assoc($cat));
$rows = mysql_num_rows($cat);
//echo $rows;
if($rows > 0) {
mysql_data_seek($cat,$rows);
$row_cat = mysql_fetch_assoc($cat);
}
?>
</select></td>
<td align="center"><input name="descripro" type="text" /></td>
<td align="center"><input name="fichier" type="file" /><br></td>
<td align="center"><input name="nompro" type="text" /></td>
</tr>
<td colspan="4" align="center"><input type="submit" name="submit" value="?????"/></td>
</tr>
<tr>
</table>
<input type="hidden" name="MM_insert" value="form3">
</form>
</body>
</html>
<?php
//mysql_free_result($recordproduits);
?>
athena21
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4 -
sa structure est en haut dans un commentaire :) mercii. concernant la connection jai deja une page ou y a la 'procedure' de la connexion a la bd:
<?php require_once('Connections/nom.php'); ?>
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4
1
Merci
c déjà mentionné dans le msg prive voila encore une fois:
la table des produits jlai nommé produits avec les champs: id_pro,nom_pro,id_cat,desig,desciption et photo (id_cat est une clé etrangere qiu appartient a une autre autre table:cat (catégorie)) voici le code:
Messages postés
576
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
14
1
Merci
Voici le code final
Essaie de le comprendre, j'ai mis les commentaires pour qu'il soit comprehensible


<?php require_once('connect.php');

if(isset($_POST['submit'])){// Si le formulaire est soumis

// *************************Fonction pour l'upload ***************************************
$dossier = 'upload/';// On donne une valeur aleatoire au fichier qu'on va uploader et on teste si ce nom existe deja
do {
$s = rand();
} while (is_file($dossier.$s.'.jpg') || is_file($dossier.$s.'.gif')); //$s est le nom du fichier sans l'extension

$temp_name=$_FILES['fichier']['tmp_name'];
$file_name=$_FILES['fichier']['name'];
$file_type=$_FILES['fichier']['type'];
// On defini les types de fichiers autorisés, ici seuls les jpg et les png sont acceptés
$AllowedExtensions= array('image/jpeg', 'image/png', 'image/gif') ;
$Extension=strrchr($file_name,'.');
$Extension=substr($Extension,1);
$Extension=strtolower($Extension);
if((count($AllowedExtensions) > 0 && in_array($file_type, $AllowedExtensions))){
if(copy($temp_name,$dossier.$s.'.'.$Extension)){
$up = true;
$msg = 'Le fichier est valide';//'Le fichier est valide';
$nomdufichier = $s.'.'.$Extension; // On récupere le nom du fichier uploadé
}
}else {
$up = false;
$msg = 'Erreur upload';}
//******************Fin de l'upload **************************************
if ($up == true){
$categorie = addslashes($_POST['select']); // Recuperation de la valeur de la categorie
$nom = addslashes($_POST['nompro']); // Recuperation du nom
$description = addslashes($_POST['descripro']); // Description
$photo = $dossier.$nomdufichier; // Chemin du fichier uploadé
$sql = "INSERT INTO 'produits' ('id_pro' ,'nom_pro' ,'description' ,'photo' ,'id_cat' ,'desig')VALUES (
NULL , '$nom' , '$description' , '$photo' , '$categorie' , '')"; // Construction de la requete
$result = mysql_query ($sql); // Insertion des valeurs
}
echo $msg.'<br />';}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8 Unicode" />
<title>Ajouter un porduit</title>
</head>
<body>
<h1 align="center">Ajout d'un porduit</h1>
<form action="" method ="POST" name="form3" enctype="multipart/form-data">
<table width="530" border="1" align="center">
<tr>
<td width="160" align="center">nom de la catégorie</td>
<td width="120" align="center">description</td>
<td width="100" align="center">photo:</td>
<td width="150" align="center">nom du produit</td>
</tr>
<tr>
<td align="center"><select name="select">
<? $categories = mysql_query ("select * from 'cat'");
while ($row_cat = mysql_fetch_array($categories)){?>
<option value="<?php echo $row_cat['id_cat']?>"><?php echo $row_cat['desig']?></option>
<? }?>
</select></td>
<td align="center"><input name="descripro" type="text" /></td>
<td align="center"><input name="fichier" type="file" /><br></td>
<td align="center"><input name="nompro" type="text" /></td>
</tr>
<td colspan="4" align="center"><input type="submit" name="submit" value="?????"/></td>
</tr>
<tr>
</table>
<input type="hidden" name="MM_insert" value="form3">
</form>
</body>
</html>
<?php
//mysql_free_result($recordproduits);
?>
athena21
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4 -
oui merci ca marche maintenant :) ^^
briiiiix
Messages postés
576
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
14 -
N'oubli pas de mettre cette discussion en résolu
athena21
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4 -
oups desolée!
0
Merci
Bonjour,

Moi ce que je te conseil, c'est de faire une table "produits" dans ta table, avec au minimum les champs id, libelle, url, prix (tu peux en mettre d'autres selon tes tables si tu as des liens a faire).

Donc tu ajoutes un champ pour parcourir ton fichier :

Nom : <input type="text" name="libelle" value=""/><br>
Fichier : <input type="file" name="fichier" value=""/><br>
<input type="submit" name="upload" value="Ajouter article"/><br>


Ensuite cherches sur internet un petit script pour uploader le fichier (vers un dossier bien spécifique) comme ca lorsque tu ajoutera ton lien de l'image dans ta base de données tu auras plus qu'a mettre comme lien l'acces a ton dossier/nom_de_ton_image.extension.

Désolé j'ai pas vraiment le temps ce matin de trop t'aider donc j'essaye de te mettre sur la piste.

Si personne ta répondu avant cette après midi, j'essayerais de repasser.

Bon courage.
athena21
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4 -
Merci mike. j'ai déja crée une table produits avec un id produit, un non produit, une id categorie a laquel ce produit appartient avec sa desigantion, et une description plus un champs pour les url. Je vais chercher le script merci pour ton aide. Bonne journée
athena21
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4 -
snif:::: rien trouver
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4
0
Merci
HEEELP PLEAAAASE
Messages postés
576
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
14
0
Merci
Est ce que tu peux me fournir au moins la structure de la table produits ?
Messages postés
576
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
14
0
Merci
Est ce que tu peux me fournir la requete sql sui permet de la créer?
Elle est du genre: create table ....
merci
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4
0
Merci
create table produits
(id_pro smallint auto_increment PRIMARY KEY,
nom_pro varchar (50),
description varchar(150),
photo varchar(255),
id_cat smallint,
desig varchar(30),
constraint c1 FOREIGN KEY(id_cat) references cat(id_cat)) ENGINE = innoDB
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4
0
Merci
pour la table catégorie:
CREATE TABLE cat
(id_cat smallint auto_increment PRIMARY KEY,
desig varchar(30)) ENGINE = innoDB
Messages postés
576
Date d'inscription
vendredi 24 octobre 2008
Statut
Membre
Dernière intervention
1 juin 2010
14
0
Merci
Excellent, je revien vers tois des que je nettoie ton code, sauf que a premiere vue, ton code n'upload pas sur le serveur et en plus il y a la fonction GetSQLValueString qui ne sert pratiquement a rien
Messages postés
75
Date d'inscription
lundi 17 mai 2010
Statut
Membre
Dernière intervention
23 mai 2011
4
0
Merci
j'ai utilisé le dreamweaver 8 insert record mais quand 'jai ajouté les champs pour la photo et la description j'ai pas su comment faire pour les inserer :s