Joindre une table 'article' avec mutiple photo d'une autre table nommee 'image'
Résolu/Fermé
ir_1997
Messages postés
97
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
13 juin 2021
-
14 sept. 2020 à 02:59
ir_1997 Messages postés 97 Date d'inscription vendredi 12 juin 2020 Statut Membre Dernière intervention 13 juin 2021 - 22 oct. 2020 à 23:46
ir_1997 Messages postés 97 Date d'inscription vendredi 12 juin 2020 Statut Membre Dernière intervention 13 juin 2021 - 22 oct. 2020 à 23:46
A voir également:
- Joindre une table 'article' avec mutiple photo d'une autre table nommee 'image'
- Table ascii - Guide
- Table des matières word - Guide
- Partage photo - Guide
- Comment agrandir une image - Guide
- Photo aérienne de ma maison - Guide
8 réponses
jordane45
Messages postés
38390
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2025
4 731
Modifié le 19 oct. 2020 à 23:36
Modifié le 19 oct. 2020 à 23:36
Bonjour
Déjà es tu sur sqlserver (choix de ton forum....) Ou, comme je le pense... MySQL ?
Edit: vu la chaîne de connexion.. c'est MySQL..
Je déplace donc dans le bon forum
Ensuite... Je pense qu'il suffit d'inverser ton from et ton join
Déjà es tu sur sqlserver (choix de ton forum....) Ou, comme je le pense... MySQL ?
Edit: vu la chaîne de connexion.. c'est MySQL..
Je déplace donc dans le bon forum
Ensuite... Je pense qu'il suffit d'inverser ton from et ton join
FROM images join articles
ir_1997
Messages postés
97
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
13 juin 2021
19 oct. 2020 à 23:22
19 oct. 2020 à 23:22
Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'articles' in C:\xampp\htdocs\Electronique.php:20 Stack trace: #0 C:\xampp\htdocs\Electronique.php(20): PDO->query('SELECT * FROM i...') #1 {main} thrown in C:\xampp\htdocs\Electronique.php on line 20
<?php try{ $bdd =new PDO('mysql:host=localhost; dbname=espace_membre; charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?> <!DOCTYPE html> <html> <head> <title>electronique</title> </head> <body> <?php $requete = $bdd->query( "SELECT * FROM images articles join articles where articles.idarticle = images.id " ); while($resultat =$requete->fetchALL()) {?> <table> <tr> <ul> <td><?php echo $resultat ['article']?>"</br>"; <td> <td><img src="<?php echo $resultat ['image']?>" weight = 100 height = 100> <td> <?php echo $resultat ['description']?>"</br>";</td> <td> <?php echo $resultat ['prix']."</br>";?></td> <td> <?php echo $resultat ['contacte']."</br>"; ?></td> <td> <?php echo $resultat ['date_time_publication']."</br>"; ?></td> <td> </td> <a href = "articles.php?idarticle=<?php echo $resultat ['idarticle'];?> "> plus </a> "</ul> </tr> <?php }?> </body> </html>
jordane45
Messages postés
38390
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2025
4 731
19 oct. 2020 à 23:32
19 oct. 2020 à 23:32
Relis ta requête il semble qu'elle soit totalement fausse...
jordane45
Messages postés
38390
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2025
4 731
>
jordane45
Messages postés
38390
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2025
Modifié le 19 oct. 2020 à 23:39
Modifié le 19 oct. 2020 à 23:39
$requete = $bdd->query( "SELECT * FROM images Join articles where articles.idarticle = images.id " );
par contre es-tu sûr que les id que tu indiques dans ton where sont bien les bons ça me paraît étrange.
J'aurais plutôt utilisé idarticle sur la table images et le chant id sur la table articles...
ir_1997
Messages postés
97
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
13 juin 2021
20 oct. 2020 à 00:24
20 oct. 2020 à 00:24
justement id c'est pour la table articles
et idarticle pour la table images
Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'articles.idarticle' in 'where clause' in C:\xampp\htdocs\Electronique.php:20 Stack trace: #0 C:\xampp\htdocs\Electronique.php(20): PDO->query('SELECT *\r\n FROM...') #1 {main} thrown in C:\xampp\htdocs\Electronique.php on line 20
mais le problème persiste
et idarticle pour la table images
Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'articles.idarticle' in 'where clause' in C:\xampp\htdocs\Electronique.php:20 Stack trace: #0 C:\xampp\htdocs\Electronique.php(20): PDO->query('SELECT *\r\n FROM...') #1 {main} thrown in C:\xampp\htdocs\Electronique.php on line 20
mais le problème persiste
<?php try{ $bdd =new PDO('mysql:host=localhost; dbname=espace_membre; charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?> <!DOCTYPE html> <html> <head> <title>electronique</title> </head> <body> <?php $requete = $bdd->query( "SELECT * FROM images Join articles where articles.idarticle = images.id " ); while($resultat =$requete->fetchALL()) {?> <table> <tr> <ul> <td><?php echo $resultat ['article']?>"</br>"; <td> <td><img src="<?php echo $resultat ['image']?>" weight = 100 height = 100> <td> <?php echo $resultat ['description']?>"</br>";</td> <td> <?php echo $resultat ['prix']."</br>";?></td> <td> <?php echo $resultat ['contacte']."</br>"; ?></td> <td> <?php echo $resultat ['date_time_publication']."</br>"; ?></td> <td> </td> <a href = "articles.php?idarticle=<?php echo $resultat ['idarticle'];?> "> plus </a> "</ul> </tr> <?php }?> </body> </html>
jordane45
Messages postés
38390
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2025
4 731
20 oct. 2020 à 00:32
20 oct. 2020 à 00:32
Non seulement tu ne sais pas lire le contenu du message d'erreur... qui est pourtant ultra clair ...
mais en plus tu ne lis pas les réponses qu'on te donne :!!!!
A remplacer par
ensuite, soit tu fais un while .. soit un fetchAll ...
Donc cette ligne
est à changer par
ou par
mais en plus tu ne lis pas les réponses qu'on te donne :!!!!
$requete = $bdd->query( "SELECT * FROM images Join articles where articles.idarticle = images.id " );
A remplacer par
$requete = $bdd->query( "SELECT * FROM images Join articles where images .idarticle = articles.id " );
ensuite, soit tu fais un while .. soit un fetchAll ...
Donc cette ligne
while($resultat =$requete->fetchALL())
est à changer par
while($resultat =$requete->fetch())
ou par
$res =$requete->fetchAll(); foreach( $res as $resultat )
ir_1997
Messages postés
97
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
13 juin 2021
20 oct. 2020 à 01:43
20 oct. 2020 à 01:43
les articles s'affichent normalement mais mais sans les images
jordane45
Messages postés
38390
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
20 janvier 2025
4 731
20 oct. 2020 à 07:05
20 oct. 2020 à 07:05
As tu testé la requête DIRECTEMENT dans ta bdd via phpmyadmin ?
Qu'est ce qu'elle te donne ? Fais nous une capture d'écran
Qu'est ce qu'elle te donne ? Fais nous une capture d'écran
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ir_1997
Messages postés
97
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
13 juin 2021
20 oct. 2020 à 09:42
20 oct. 2020 à 09:42
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié le 20 oct. 2020 à 09:46
Modifié le 20 oct. 2020 à 09:46
Bonjour,
Ton tag HTML pour afficher les images est mal écrit.
Remplace
par
Par ailleurs, tu fais une boucle sur tous les résultats, mais il faut garder en tête que tu auras des doublons de lignes article sur ceux qui ont plusieurs images. Si ce n'est pas ce que tu veux, il faudra réfléchir à comment tu veux afficher ces images multiples.
Xavier
(PS accessoirement, intervertir le FROM et le INNER JOIN (idem avec FULL OUTER JOIN) n'a aucun effet autre que modifier l'ordre de sortie des colonnes avec *)
Ton tag HTML pour afficher les images est mal écrit.
Remplace
<td><img src="<?php echo $resultat ['image']?>" weight = 100 height = 100>
par
<td><img src="<?php echo $resultat['image']?>" width="100" height="100"></td>
Par ailleurs, tu fais une boucle sur tous les résultats, mais il faut garder en tête que tu auras des doublons de lignes article sur ceux qui ont plusieurs images. Si ce n'est pas ce que tu veux, il faudra réfléchir à comment tu veux afficher ces images multiples.
Xavier
(PS accessoirement, intervertir le FROM et le INNER JOIN (idem avec FULL OUTER JOIN) n'a aucun effet autre que modifier l'ordre de sortie des colonnes avec *)
ir_1997
Messages postés
97
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
13 juin 2021
20 oct. 2020 à 10:04
20 oct. 2020 à 10:04
d'accord je viens d'appliquer tes consigne
les images s'affichent
mais pour éviter les double article sur pour les images
ya aucun moyen?
les images s'affichent
mais pour éviter les double article sur pour les images
ya aucun moyen?
$requete = $bdd->query( "SELECT * FROM articles Join images where images.idarticle = articles.id " );
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
20 oct. 2020 à 10:28
20 oct. 2020 à 10:28
Si mais comme je l'ai dit, ça dépendra de comment tu veux gérer l'affichage de plusieurs images pour un seul article.
ir_1997
Messages postés
97
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
13 juin 2021
20 oct. 2020 à 10:35
20 oct. 2020 à 10:35
non j'aimerais plutôt chaque articles avec ces images
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié le 20 oct. 2020 à 11:20
Modifié le 20 oct. 2020 à 11:20
Oui ça j'ai bien compris, mais tu ne réponds pas à la question : disposées comment ?
Voici un exemple qui les place côte-à-côte :
Le principe étant de détecter qu'on change d'article, pour n'écrire les données hors photos, et le <tr>, qu'une seule fois par article. Ce qui implique de garder en mémoire la ligne précédente pour pouvoir la clore quand on a détecté un changement d'article.
Xavier
Voici un exemple qui les place côte-à-côte :
<?php try{ $bdd =new PDO('mysql:host=localhost; dbname=espace_membre; charset=utf8', 'root', ''); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } ?> <!DOCTYPE html> <html> <head> <title>electronique</title> </head> <body> <?php $requete = $bdd->query( "SELECT * FROM images JOIN articles WHERE articles.id = images.idarticle " ); ?> <table> <?php $previousId = -1; while($resultat = $requete->fetchALL()) { $id = $resultat['id']; $newRow = $previousId > -1 && $previousId != $id; if ($newRow) { if ($previousId > -1) {?> </td> <td><?php echo $previous['description']?></td> <td><?php echo $previous['prix']?></td> <td><?php echo $previous['contacte']?></td> <td><?php echo $previous['date_time_publication']?></td> <td><a href="articles.php?idarticle=<?php echo $previousId ?>">plus</a></td> </tr> <?php } $previousId = $id; $previous = $resultat; ?> <tr> <td><?php echo $resultat['article']?></td> <td> <?php }?> <img src="<?php echo $resultat['image']?>" width="100" height="100"> <?php } if ($previousId > -1) {?> </td> <td><?php echo $previous['description']?></td> <td><?php echo $previous['prix']?></td> <td><?php echo $previous['contacte']?></td> <td><?php echo $previous['date_time_publication']?></td> <td><a href="articles.php?idarticle=<?php echo $previousId ?>">plus</a></td> </tr> <?php }?> </table> </body> </html>
Le principe étant de détecter qu'on change d'article, pour n'écrire les données hors photos, et le <tr>, qu'une seule fois par article. Ce qui implique de garder en mémoire la ligne précédente pour pouvoir la clore quand on a détecté un changement d'article.
Xavier
ir_1997
Messages postés
97
Date d'inscription
vendredi 12 juin 2020
Statut
Membre
Dernière intervention
13 juin 2021
>
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
22 oct. 2020 à 23:46
22 oct. 2020 à 23:46
bien merci beaucoup je viens d'arranger
14 sept. 2020 à 07:50
Et bien bien entendu.. boucler sur le résultat de ta requête...
Au passage, applique les consignes données ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.