Php : intégrer photos dans une table

Résolu/Fermé
IannonGRes - 16 mars 2009 à 10:12
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 - 16 mars 2009 à 15:42
Bonjour,
J'essaie actuellement d'intégrer des photos à un champ d'une table de ma base de données. Les photos seraient uploadées via un formulaire. Je voulais tout d'abord savoir si ce que je tente de faire est possible? Et si je m'y prend de la bonne façon?
J'ai effectué mon formulaire et le script php relié à celui-ci. Après mes tests, je m'aperçois que les photos uploadées ont bien été mises dans le répertoire souhaité sur le serveur. Mais elles n'ont apparemment pas été insérées dans ma table. Pouvez vous me conseillez sur la démarche à suivre. Etant débutant en php, j'ai peut-être oublié des étapes importantes et je galère dessus depuis plusieurs jours.
Merci par avance
A voir également:

2 réponses

ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
16 mars 2009 à 11:09
Salut !
Personnellement je ne stockerais pas les images dans ta base de données (puisqu'elles sont déjà sur le serveur) mais seulement le lien de l'image. Comme ça tu auras juste a récupérer cette valeur pour afficher ton image
0
Salut,
Eh bien en fait je voulais faire un formulaire dans lequel il y avait différents champs, dont la photo. Et ensuite je voulais, à l'aide d'un autre formulaire, afficher pour les différentes lignes de ma table, toutes les infos. Pour l'instant, j'arrive à afficher toutes ces infos. Mais pour les photos, je ne vois pas trop comment faire si elles ne sont pas stockées dans ma table?
0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27 > IannonGRes
16 mars 2009 à 11:21
Si je prendre mon exemple, en stockant seulement le lien
// Je récupère dans ma table le champ contenant le lien de mon image
$query = select ............ FROM ......
$result = ....
$lien_vers_image = ....

//j'affiche mon image
<img name="mon_image" src="$lien_vers_image">

0
IannonGRes > ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013
16 mars 2009 à 11:36
En fait pour toi il faudrait juste que je stocke le lien de l'image dans la bdd? Et ensuite, lors de la restitution des infos suite au formulaire de recherche, il y aurait un champ dans lequel l'internaute n'aurait qu'à cliquer sur le lien pour voir l'image?

Sinon pour que cela soit plus parlant, voici mes scripts:
----------------------------------------------------------------------------------------------------------------
Formulaire HTML:

<?php // Début code PHP

// Appel du fichier contenant les paramètres de connexion au SGBD et les variables globales
include "include/connexion.php";

?>
<FORM method="post" action="blablaphoto2" ENCTYPE="multipart/form-data">
<TABLE BORDER=1 width=100%>
<INPUT type=hidden name=MAX_FILE_SIZE VALUE=2048>
<INPUT type=file name="fichier_choisi">
<INPUT type=submit value="Envoyer">
</TABLE>
</FORM>

--------------------------------------------------------------------------------------------------------------
Script php lié au formulaire:

<?php

//------
// Upload du fichier
//------

$tailleMax =2000000;


//on vérifies que le champ est bien rempli:
if(!empty($_FILES["fichier_choisi"]["name"]))
{

//nom du fichier choisi:
$nomFichier = $_FILES["fichier_choisi"]["name"] ;

//nom temporaire sur le serveur:
$nomTemporaire = $_FILES["fichier_choisi"]["tmp_name"] ;

//type du fichier choisi:
$typeFichier = $_FILES["fichier_choisi"]["type"] ;

//poids en octets du fichier choisi:
$poidsFichier = $_FILES["fichier_choisi"]["size"] ;

//code de l'erreur si jamais il y en a une:
$codeErreur = $_FILES["fichier_choisi"]["error"] ;


//chemin qui mène au dossier qui va contenir les fichiers upload:
$chemin = "../images/";



if ($tailleMax > $poidsFichier)
{

if(copy($nomTemporaire, $chemin.$nomFichier))
{ //il upload
}
// Ajout dans la base de données

// Connexion au Système de Gestion de Base de Données MySQL
include "include/connexion.php";

// Déclaration de variables locales
$table="logement2";

// Connexion au Système de Gestion de Base de Données MySQL
mysql_connect($nom_serveur, $nom_utilisateur, $mot_de_passe);

// Connexion à la Base De Données
mysql_select_db($base_de_donnees);

$result=mysql_query("INSERT INTO $table (photo_log)
VALUES ('$nomFichier')");
if(!$result)
{


echo("<br> Upload échoué<br>") ;
?>
<FORM>
<TABLE BORDER=0>
<TR>
<TD width=150 ALIGN=CENTER> <!-- Ajustement sur la droite du contenu des cellules-->
<INPUT type="button" value="Retour au formulaire" onClick="history.back()">
</TD>
</TR>
</TABLE>
</FORM>
<?php
die;
}

else
{
echo("<br> Fichier uploadé !") ;
?>
<FORM>
<TABLE BORDER=0>
<TR>
<TD width=150 ALIGN=CENTER> <!-- Ajustement sur la droite du contenu des cellules-->
<INPUT type="button" value="Retour au formulaire" onClick="history.back()">
</TD>
</TR>
</TABLE>
</FORM>
<?php
die;
}

}
else
{
echo("<br> Le fichier est trop gros, il ne peut pas dépasser 2Mo<br>") ;
?>
<FORM>
<TABLE BORDER=0>
<TR>
<TD width=150 ALIGN=CENTER> <!-- Ajustement sur la droite du contenu des cellules-->
<INPUT type="button" value="Retour au formulaire" onClick="history.back()">
</TD>
</TR>
</TABLE>
</FORM>
<?php
die;
}

}

else
{
echo("<br> Il faut choisir un fichier !<br>") ;
?>
<FORM>
<TABLE BORDER=0>
<TR>
<TD width=150 ALIGN=CENTER> <!-- Ajustement sur la droite du contenu des cellules-->
<INPUT type="button" value="Retour au formulaire" onClick="history.back()">
</TD>
</TR>
</TABLE>
</FORM>
<?php
die;
}
?>

-----------------------------------------------------------------------------------------------------------------

Merci pour ton aide
0
IannonGRes > IannonGRes
16 mars 2009 à 11:51
J'ai réalisé un script pour visualiser ces photos. L'idéal serait, comme vous l'avez mentionné, de voir directement la photo apparaitre. Mais il ne m'affiche que le nom des photos, et non le lien!

Le script pour restituer est le suivant:

___________________________________________________________________
<?php // Début code PHP

// Appel du fichier contenant les paramètres de connexion au SGBD et les variables globales
include "include/connexion.php";

?> <!-- Fin code PHP -->

<HTML> <!-- Début page HTML -->

<!-- Listage de la table MySQL produits -->
<FONT FACE="Arial" SIZE="4"> <!-- Début définition police caractères -->
<?php // Début code PHP

// Déclaration de variables locales
$table="logement2";

// Connexion au Système de Gestion de Base de Données MySQL
mysql_connect($nom_serveur, $nom_utilisateur, $mot_de_passe);

// Connexion à la Base De Données
mysql_select_db($base_de_donnees);

// Récupération du contenu de la table produits
$requete_sql="SELECT (photo_log) From $table;";
$resultat_sql=mysql_query($requete_sql);
$nombre_enregistrements=mysql_numrows($resultat_sql);

// Affichage de la liste
print "<CENTER>";
print "<TABLE BORDER=\"1\" CELLSPACING=\"0\" CELLPADDING=\"2\">";
// Affichage du bandeau du tableau
print "<TR ALIGN=CENTER>";
print "<TD>Photos...ou pas</TD>";
print "</TR>";
// Parcours séquentiel de l'extraction (vue SQL)
$i=0;
while ($i<$nombre_enregistrements)
{
// Préparation des valeurs à afficher
$photo_log=mysql_result($resultat_sql, $i, "photo_log");
// Affichage des valeurs en tableau
print "<TR>";
print "<TD ALIGN=LEFT>$photo_log</TD>";
print "</TR>";
$i++;
}
print "</TABLE>";
print "</CENTER>";

// Déconnexion à la Base De Données
mysql_close();

?> <!-- Fin code PHP -->

<!-- Tracé d'un trait horizontal -->
<BR> <!-- Passage ligne suivante -->
<HR>
<BR> <!-- Passage ligne suivante -->

<!-- Retour au menu général -->
<FORM>
<TABLE BORDER=0>
<TR>
<TD width=150 ALIGN=CENTER> <!-- Ajustement sur la droite du contenu des cellules-->
<INPUT type="button" value="Retour au formulaire" onClick="history.back()">
</TD>
</TR>
</TABLE>
</FORM> <!-- Fin centrage -->

</BODY> <!-- Fin corps page HTML -->

</HTML> <!-- Fin page HTML -->
0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27 > IannonGRes
16 mars 2009 à 12:00
SI je comprends bien le lien est contenu dans la variable $photo_log soit cette ligne la
print "<TD ALIGN=LEFT>$photo_log</TD>"; 
Ce qui donnerait ceci :
print "<TD ALIGN=LEFT><img src=".$photo_log." ></TD>"; 
A vérifier car personnellement j'utilise plutôt echo que print
0
ben85350 Messages postés 610 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 2 avril 2013 27
16 mars 2009 à 11:46
En effet pas besoin de stocker tes images dans la base de données parce que :
- tes images sont déjà sur le serveur lors de l'upload (par exemple stockes les dans un dossier images pour t'y retrouver plus facilement)
- une insertion directe de tes images dans la base de données grandirait énormément ta base, et la liaison avec le client serait plus lente ; donc cette méthode est moins efficace.
lors de la restitution des infos suite au formulaire de recherche, il y aurait un champ dans lequel l'internaute n'aurait qu'à cliquer sur le lien pour voir l'image
EN effet c'est une première possibilité
ou bien tu peux afficher directement l'image en récupérant la variable contenant le lien
0