Affichage photo

Résolu
Signaler
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007
-
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007
-
Salut,
J'ai un problème pour afficher la photo d'un membre dans sa fiche. j'arrive à uploader la photo, elle est bien dans le répertoire destination avec son nom d'origine.
Voici un bout de mon code d'affichage


$select = "SELECT * FROM table WHERE pseudo='$pseudo'";


$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );


$total = mysql_num_rows($result);





// si on a récupéré un résultat on l'affiche.


if($total) {






echo '<table border="0" bgcolor="">'."\n";




while ($row = mysql_fetch_array($result)) {


echo '<tr>';


echo '<td>.jpg"/></td>';


echo '<td>'.$row["pseudo"].'</td>';


echo '<td></td>';


echo '</tr>'; etc...

31 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Heu attends...pourquoi le champ photo est il un blob au juste...? Ca
doit être un varchar, si c'est le lien vers ta photo sur le serveur.

Donne-moi un exemple de ce que tu vois dans un des champs photo ...?



On utilise blob pour stocker des binaires...c'est à dire, par exemple, la photo elle-même!
Messages postés
22
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
2 septembre 2005

Essaye ca :

Remplace
echo '<td>.jpg"/></td>';
par
echo '<td>.jpg"/></td>';
Messages postés
22
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
2 septembre 2005

il faut ke le nom de ta photo soit stoké dans ta BDD sinon on ne peut pa savoir quelle photo est associé a la personne.
du coup tu affiche ta photo comme tu affiche le pseudo...
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

pour la premiere réponse j'ai fait les modifs mais ça n'a rien donné.

Dans le champ photo j'ai stocké le chemin. pouvez vous me dire comment stocker le nom de la photo que l'utilisateur a envoyé
Messages postés
22
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
2 septembre 2005

Je pourrais detailler plus mais je suis au taf et j'ai un manque de temps.... je t'ai donc mis un code a moi qui marche.... a toi de le modifier qq peu.... si y'a un souci previens moi !

Ex formulaire posté dans la meme page :
echo '<form action="'.$_SERVER['REQUEST_URI'].'" method="post" enctype="multipart/form-data" name="upload'.$data['Num'].'" id="upload" class="login">';
echo 'Insérez votre photo/document avec le champ ci-dessous

';
echo '';
echo '';
echo '';
echo '';
echo '

';
echo '</form>';

traitement :
if ($modiffoto=="1")
{
$lg = $_POST['lg'];
$ph = $_POST['ph'];
$tmp_file = $_FILES['fichier']['tmp_name']; // nom temporaire du fichier uploadé
$size_file = $_FILES['fichier']['size']; // poids du fichier uploadé
$name_file = $_FILES['fichier']['name']; // nom du fichier uploadé
$type_file = substr(strstr($name_file,'.'),1); // extension du fichier uploadé
$repertoire = 'images/';
$extensions = 'png|PNG|jpg|JPG|jpeg|JPEG|gif|GIF|bmp|BMP|pdf|PDF|doc|DOC|xls|XLS'; // extensions de fichier autorisées

if ($tmp_file=="")// AUTRE CONDITION POSSIBLE !is_uploaded_file($tmp_file)
{ $erreur = ':: ERREUR ttt ::
pour ajouter une photo, vous devez obligatoirement en choisir une avec le bouton parcourir.'; }
else
{
// liste des extensions autorisées et verification
$ext=explode("|", $extensions);

for ($cpt=0; $cpt<(count($ext)); $cpt++)
{
if ($type_file==$ext[$cpt])
{
$auth_file=1;
}
}


for ($v=1; $v<4; $v++)
{
$name_file=(mt_rand(1,1000000));
$name_file=(ceil($name_file));
$name_file=$name_file.".".$type_file;

if (file_exists($destination.$name_file))
{
$v=1;
}
else
{
$v=20;
}
}


// teste autorisation extension
if ($auth_file!=1)//(!isset($auth_file))
{
exit('Type de fichier non autorisé au téléchargement');
}


chmod($repertoire.$name_file, 0755);//777
// OU
chmod($repertoire, 0755);//777


//echo $repertoire.$name_file.'
';

// on copie le fichier dans le dossier de destination
if (!move_uploaded_file($tmp_file, $repertoire.$name_file))
{
exit('Impossible de copier le fichier dans '.$repertoire.'.');
}

$sql = 'SELECT * FROM table WHERE Num="'.$lg.'"'; //num etant le n° auto du membre
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
$res = mysql_numrows($req);
$data = mysql_fetch_array($req);


if ($depart=="iut") // une condition non necessaire sauf pour moi
{
$data['Photo'.$ph] = "../".$data['Photo'.$ph];
$repertoire_write = str_replace("../", "", $repertoire);
}
else
{
$data['Photo'.$ph] = $data['Photo'.$ph];
$repertoire_write = $repertoire;
}
if ($data['Photo'.$ph]!= "")
{
chmod($data['Photo'.$ph], 0755);
unlink($data['Photo'.$ph]);
}


$sqlph = 'UPDATE '.$depart.' SET Photo'.$ph.'="'.$repertoire_write.$name_file.'" WHERE Num="'.$lg.'"';
mysql_query($sqlph) or die('Erreur SQL !'.$sqlph.'
'.mysql_error());
}
}
Messages postés
22
Date d'inscription
lundi 21 juin 2004
Statut
Membre
Dernière intervention
2 septembre 2005

Le but c'est au moment d'enregistrer ton image sur le serveur, tu recupere les info du fichier image (au moin le nom) que tu traite et tu fais un requete qui update la ligne de ta BDD correspondant a ton membre...
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

Là je suis complètement perdu. Car je cherche à comprendre. je comprends que vous ayez pas le temps. si quelqu'un d'autre peut m'aider ce sera bien.

j'explique encore mon problème.

L'utilisateur envoie son formulaire remplir avec la photo qui a comme nom toto.jpeg sur son disque dur. Lors de l'envoie le chemin de la photo est sauvegarder dans le champ photo de type blob.Upload -) toto.jpeg se retrouve dans le répertoire de destination. J'arrive pas a afficher la photo de chaque membre. Ou bien dois je créer une autre table pour enrgistrer que les données des photos.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Hello,



si je reprends ton code, il manque un truc. Tu vas chercher les
resultats de ta requete, ok. Pour le pseudo, tu fais bien
$row['pseudo']. Mais pour la photo, tu fais : echo $photo.

Cette variable n'existe pas...



Je corrige en rouge :



$select = "SELECT pseudo, photo FROM table WHERE pseudo='$pseudo'";

$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

$total = mysql_num_rows($result);

// si on a récupéré un résultat on l'affiche.

if($total) {

echo '<table border="0" bgcolor="">'."\n";

while ($row = mysql_fetch_array($result)) {

echo '<tr>';

echo '<td>.jpg"/></td>';

echo '<td>'.$row["pseudo"].'</td>';

echo '<td></td>';

echo '</tr>'; etc...
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

.jpg"/>
voilà ce que j'ai comme réseultat
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Ce qui veut dire que ton champ "photo" dans ta table "table" estvide pour le pseudo = $pseudo.



Donne la structure de ta table.
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

C'est vrai voici ce que j'ai dans le champ photo [BLOB - 0 Octets]. Ce que je ne comprends pas la photo a été bien uploadée dans mon repertoire destination. pourquoi ce champ est vide et tous les autres sont renseignés.

ma table contient plus de 20 champs. Le champ photo est de typle blob
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

Voici la structure

CREATE TABLE `table` (
`num` int(15) NOT NULL auto_increment,
`pseudo` varchar(6) NOT NULL default '',
`motdepasse` varchar(6) NOT NULL default '',
`initial` datetime NOT NULL default '0000-00-00 00:00:00',
`nom` varchar(50) NOT NULL default '',
`prenom` varchar(50) NOT NULL default '',
`datenaissance` date NOT NULL default '0000-00-00',
`jesuis` varchar(12) NOT NULL default '',
`jerecherche` varchar(12) NOT NULL default '',
`email` varchar(50) NOT NULL default '',
`adresse` varchar(50) NOT NULL default '',
`codepostal` varchar(10) NOT NULL default '',
`ville` varchar(30) default NULL,
`pays` varchar(30) default NULL,
`telephone` varchar(20) default NULL,
`nationalite` varchar(30) default NULL,
`taille` varchar(30) default NULL,
`poids` varchar(30) default NULL,
`yeux` varchar(30) default NULL,
`cheveux` varchar(30) default NULL,
`etatcivil` varchar(30) default NULL,
`nombredenfants` char(2) default NULL,
`fumeur` varchar(10) default NULL,
`etude` varchar(30) default NULL,
`profession` varchar(30) default NULL,
`loisirs` enum('football','basketball','natation','tennis','lecture','voyage','cinema','internet','balade','autres') NOT NULL default 'football',
`photo` blob NOT NULL,
`description` text,
PRIMARY KEY (`num`),
KEY `pseudo` (`pseudo`),
KEY `motdepasse` (`motdepasse`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='membres inscrits' AUTO_INCREMENT=2 ;
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Ok mais donne moi quelques exemples de ce que tu as dans le champ photo stp.
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

J'ai dans le champ photo de ma table [BLOB - 0 Octets]. pour deux enregistrements effectués. Le répertoire destination contient les deux photos envoyées via le formulaire.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Lol, donne moi ce que tu as dedans! dans quelques-un de ces champs! le contenu, la valeur quoi. ce qui est écrit dans le champ!

Blob 0 Octets ? tu m'étonnes... attends, c'est ce que tu as dans la valeur ? nan...je ne pense pas.
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

c:\Easyphp1-8\www\web\toto.jpg
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Oulo...

Ok...2 choses : transformes déjà ton champ photo. passe le du type blob, au type varchar (50) (50 ou plus, comme tu le sens).

Ensuite...là tu as le chemin complet. a ta place, je mettrai le chemin
relatif de ton image. D'ailleurs tu avais l'air de penser, dans ton
script, qu'elle se trouvait dans un répertoire /data/...

ce n'est visiblement pas le cas ?

Bref tu dois retrouver ton chemin relatif, ou complet comme tu préfères : donc par exemple:

/data/toto.jpg

soit

http://www.tonsite.com/data/toto.jpg



Ensuite dans ta balise image :

" alt ="Description de la photo" />
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Luj, dites ca ne serait pas ca :



echo '<td>$row['photo'], '.jpg" /></td>';

<hr>Si ma reponse te convient, merci de l'accepter !
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

Rien n'est enregistré dans le champ photo de ma table par conséquent la photo ne s'affiche pas. Une question est ce une bonne méthode si je fais un autre script qui ouvre le répertoire qui contient les photos et appelé ce script dans le code d'affichage du membre avec sa photo. c'est une idée comme ça. mais en réfléchisant comment allez prendre la bonne photo.
Messages postés
110
Date d'inscription
mardi 30 août 2005
Statut
Membre
Dernière intervention
13 août 2007

Merci JOJO mais cela ne marche toujours pas.

* Je voulais savoir pourquoi j'ai [BLOB 0 octets]
* quand je donne à mon champ photo le type var rien ne s'affiche.

Je pense que je dois régler ce problème avant toute chose.