Parcourir, stocker et afficher une image :php

Résolu/Fermé
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 - Modifié par athena21 le 28/05/2010 à 11:00
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 - 28 mai 2010 à 18:29
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.

11 réponses

briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
28 mai 2010 à 17:32
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>
3
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
28 mai 2010 à 17:33
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);
?>
0
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
Modifié par athena21 le 28/05/2010 à 17:41
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é.
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
28 mai 2010 à 17:48
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);
?>
0
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
Modifié par athena21 le 28/05/2010 à 17:52
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'); ?>
0
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
28 mai 2010 à 16:36
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:
1
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
28 mai 2010 à 17:56
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);
?>
1
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
28 mai 2010 à 18:17
oui merci ca marche maintenant :) ^^
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
28 mai 2010 à 18:20
N'oubli pas de mettre cette discussion en résolu
0
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
28 mai 2010 à 18:29
oups desolée!
0
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.
0
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
28 mai 2010 à 11:13
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
0
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
28 mai 2010 à 12:18
snif:::: rien trouver
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
28 mai 2010 à 16:30
HEEELP PLEAAAASE
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
28 mai 2010 à 16:34
Est ce que tu peux me fournir au moins la structure de la table produits ?
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
28 mai 2010 à 16:39
Est ce que tu peux me fournir la requete sql sui permet de la créer?
Elle est du genre: create table ....
merci
0
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
28 mai 2010 à 16:43
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
0
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
28 mai 2010 à 16:44
pour la table catégorie:
CREATE TABLE cat
(id_cat smallint auto_increment PRIMARY KEY,
desig varchar(30)) ENGINE = innoDB
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
28 mai 2010 à 16:45
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
0
athena21 Messages postés 75 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 23 mai 2011 4
28 mai 2010 à 16:49
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
0