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
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
A voir également:
- Php : intégrer photos dans une table
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Php if plusieurs conditions ✓ - Forum PHP
- Echo image php ✓ - Forum PHP
- $This php - Forum PHP
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
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
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
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
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.
ou bien tu peux afficher directement l'image en récupérant la variable contenant le lien
- 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'imageEN effet c'est une première possibilité
ou bien tu peux afficher directement l'image en récupérant la variable contenant le lien
16 mars 2009 à 11:17
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?
16 mars 2009 à 11:21
16 mars 2009 à 11:36
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
16 mars 2009 à 11:51
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 -->
16 mars 2009 à 12:00