par
moogli » 09 janv. 2017, 14:06
j'ai repris les tables indiqué plus haut (au passage dans les tables tu as mis id_membre
s et dans la requête SQL id_membre. cela ne peux pas fonctionner.
je me suis créé un jeux de test bidon
-- tables
CREATE TABLE `annonce` (
`id_annonce` INT(11) NOT NULL AUTO_INCREMENT,
`ID_membres` INT(11) NOT NULL,
`pseudo` CHAR(30) NOT NULL,
`sexe` CHAR(30) NOT NULL,
`choix` VARCHAR(255) NOT NULL,
`jours` CHAR(10) NOT NULL,
`timestamp` VARCHAR(255) NOT NULL,
`annonce` INT(3) NOT NULL,
PRIMARY KEY (`id_annonce`),
UNIQUE INDEX `id_annonce_2` (`id_annonce`),
INDEX `id_annonce` (`id_annonce`)
)ENGINE=InnoDB;
CREATE TABLE `photo_profil` (
`id_photo_profil` INT(4) NOT NULL AUTO_INCREMENT,
`ID_membres` INT(15) NOT NULL,
`sexe` CHAR(12) NOT NULL,
`gal` TINYTEXT NOT NULL,
PRIMARY KEY (`id_photo_profil`),
UNIQUE INDEX `id_photo_profil_2` (`id_photo_profil`),
INDEX `id_photo_profil` (`id_photo_profil`)
)ENGINE=InnoDB;
-- données bidons
insert into annonce (id_annonce,ID_membres,pseudo,sexe,choix,jours,`timestamp`,annonce) values(1,1,'p1','1','1','jours','timestamp c pas un varchar',1);
insert into annonce (id_annonce,ID_membres,pseudo,sexe,choix,jours,`timestamp`,annonce) values(2,1,'p1','1','1','jours','timestamp c pas un varchar',1);
insert into annonce (id_annonce,ID_membres,pseudo,sexe,choix,jours,`timestamp`,annonce) values(3,2,'p1','1','1','jours','timestamp c pas un varchar',1);
insert into annonce (id_annonce,ID_membres,pseudo,sexe,choix,jours,`timestamp`,annonce) values(4,3,'p1','1','1','jours','timestamp c pas un varchar',1);
J'ai réduit le code php au nécessaire (j'ai viré la fonction miniature que je n'ai pas et dont je ne connais pas l'utilité).
<?php
// connexion avec PDO parce que sinon je peu pas tester :)
try {
// set de l'encodage
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$connection = new PDO('mysql:host=localhost;dbname=test','test','test',$options);
// assure les erreurs en exception
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Liste des champs parce qu'au moins on sais ce que l'on utilise et l'on évite les problème du genre tien on cherche à utiliser un index "chemin" mais il existe pas dans les tables !!!
// normalisation / simplification de la jointure SQL ;)
$annonce_sql = 'SELECT id_annonce,id_membres, pseudo, an.sexe,jours,timestamp, annonce,gal as chemin FROM annonce AN LEFT JOIN photo_profil PP using(id_membres)';
$res = $connection->query($annonce_sql);
while ($result = $res->fetch(PDO::FETCH_ASSOC)) {
// cas par défaut
$im_src = 'MINI11image_profil/'.$result['chemin'] ;
// si pas de chemin c'est que le membre n'as pas de photo on utilise la photo standard
if(empty($result['chemin']) ){
$im_src = 'imdesign/no_photo.png';
}
// on affiche la photo. une classe CSS serait pas mal pour l'affichage.
echo'<img src="',$im_src,'" style="border : none;" />';
}
// fermer le curseur c'est bien
$res->closeCursor();
}catch(Exception $e){
// pour le cas de test ce n'est pas à utiliser en vrai
var_dump($e);
}
résultat
Code : Tout sélectionner
<img src="MINI11image_profil/oups" style="border : none;" /><img src="MINI11image_profil/oups" style="border : none;" /><img src="MINI11image_profil/3" style="border : none;" /><img src="imdesign/no_photo.png" style="border : none;" />
ce code fonctionne.
essai le pour voir si cela te va.
ensuite il te faudra ajouter les truc que j'ai virer.
dernière chose, utilise le tableau $result plutôt que de créer des variables elles ne servent à rien et encombre le code pour rien
@+
j'ai repris les tables indiqué plus haut (au passage dans les tables tu as mis id_membre[b]s[/b] et dans la requête SQL id_membre. cela ne peux pas fonctionner.
je me suis créé un jeux de test bidon
[sql]-- tables
CREATE TABLE `annonce` (
`id_annonce` INT(11) NOT NULL AUTO_INCREMENT,
`ID_membres` INT(11) NOT NULL,
`pseudo` CHAR(30) NOT NULL,
`sexe` CHAR(30) NOT NULL,
`choix` VARCHAR(255) NOT NULL,
`jours` CHAR(10) NOT NULL,
`timestamp` VARCHAR(255) NOT NULL,
`annonce` INT(3) NOT NULL,
PRIMARY KEY (`id_annonce`),
UNIQUE INDEX `id_annonce_2` (`id_annonce`),
INDEX `id_annonce` (`id_annonce`)
)ENGINE=InnoDB;
CREATE TABLE `photo_profil` (
`id_photo_profil` INT(4) NOT NULL AUTO_INCREMENT,
`ID_membres` INT(15) NOT NULL,
`sexe` CHAR(12) NOT NULL,
`gal` TINYTEXT NOT NULL,
PRIMARY KEY (`id_photo_profil`),
UNIQUE INDEX `id_photo_profil_2` (`id_photo_profil`),
INDEX `id_photo_profil` (`id_photo_profil`)
)ENGINE=InnoDB;
-- données bidons
insert into annonce (id_annonce,ID_membres,pseudo,sexe,choix,jours,`timestamp`,annonce) values(1,1,'p1','1','1','jours','timestamp c pas un varchar',1);
insert into annonce (id_annonce,ID_membres,pseudo,sexe,choix,jours,`timestamp`,annonce) values(2,1,'p1','1','1','jours','timestamp c pas un varchar',1);
insert into annonce (id_annonce,ID_membres,pseudo,sexe,choix,jours,`timestamp`,annonce) values(3,2,'p1','1','1','jours','timestamp c pas un varchar',1);
insert into annonce (id_annonce,ID_membres,pseudo,sexe,choix,jours,`timestamp`,annonce) values(4,3,'p1','1','1','jours','timestamp c pas un varchar',1);[/sql]
J'ai réduit le code php au nécessaire (j'ai viré la fonction miniature que je n'ai pas et dont je ne connais pas l'utilité).
[php]<?php
// connexion avec PDO parce que sinon je peu pas tester :)
try {
// set de l'encodage
$options = array(
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
$connection = new PDO('mysql:host=localhost;dbname=test','test','test',$options);
// assure les erreurs en exception
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Liste des champs parce qu'au moins on sais ce que l'on utilise et l'on évite les problème du genre tien on cherche à utiliser un index "chemin" mais il existe pas dans les tables !!!
// normalisation / simplification de la jointure SQL ;)
$annonce_sql = 'SELECT id_annonce,id_membres, pseudo, an.sexe,jours,timestamp, annonce,gal as chemin FROM annonce AN LEFT JOIN photo_profil PP using(id_membres)';
$res = $connection->query($annonce_sql);
while ($result = $res->fetch(PDO::FETCH_ASSOC)) {
// cas par défaut
$im_src = 'MINI11image_profil/'.$result['chemin'] ;
// si pas de chemin c'est que le membre n'as pas de photo on utilise la photo standard
if(empty($result['chemin']) ){
$im_src = 'imdesign/no_photo.png';
}
// on affiche la photo. une classe CSS serait pas mal pour l'affichage.
echo'<img src="',$im_src,'" style="border : none;" />';
}
// fermer le curseur c'est bien
$res->closeCursor();
}catch(Exception $e){
// pour le cas de test ce n'est pas à utiliser en vrai
var_dump($e);
}[/php]
résultat
[code]<img src="MINI11image_profil/oups" style="border : none;" /><img src="MINI11image_profil/oups" style="border : none;" /><img src="MINI11image_profil/3" style="border : none;" /><img src="imdesign/no_photo.png" style="border : none;" />[/code]
ce code fonctionne.
essai le pour voir si cela te va.
ensuite il te faudra ajouter les truc que j'ai virer.
dernière chose, utilise le tableau $result plutôt que de créer des variables elles ne servent à rien et encombre le code pour rien :)
@+