Fatal error
Résolu
papyclic
Messages postés
451
Statut
Membre
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour
S'ils vous plait pouvez-vous m'aider, J'ai une erreur que je n'arrive pas à résoudre, lors d'une requète pour l'affichage de photos.
C'est très sympa, merci beaucoup
S'ils vous plait pouvez-vous m'aider, J'ai une erreur que je n'arrive pas à résoudre, lors d'une requète pour l'affichage de photos.
C'est très sympa, merci beaucoup
Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
$rid_album = isset($_GET['id_photo']);
$sql = "SELECT id_photo, lieu_photo, date_photo, nom_photo
FROM tb_photo
WHERE id_photo = $rid_album";
$requete = $bdd->prepare($sql);
$requete->execute();
while($donnees = $requete->fetch()) {
$lieu_photo = $donnees['lieu_photo'];
$date_photo = $donnees['date_photo'];
$nom_photo = $donnees['nom_photo'];
12 réponses
-
Bonjour,
Je pense que l'erreur se situe au niveau de la variable $rid_album :$sql = "SELECT id_photo, lieu_photo, date_photo, nom_photo FROM tb_photo WHERE id_photo = $rid_album";
Et qu'il faudrait corriger la requête comme ceci :$sql = "SELECT id_photo, lieu_photo, date_photo, nom_photo FROM tb_photo WHERE id_photo=".$rid_album;
Cordialement. -
Bonjour
Merci pour ton aide, malheureusement j'ai toujours cette erreur, oui tu as raison cela vient bien de la variable $rid_albumErreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Il y a plusieurs jours que je suis dessus je ne vois pas du tout.
Merci beaucoup de votre aide. -
'lut,
isset
renvoie juste un booléen disant si la variable est définie ou non.
Dans ta requête SQL, ce que tu veux, c'est le contenu de la variable elle-même, qu'on ne met absolument jamais directement dans la requête; on se sert de requêtes préparées:if (isset($_GET['id_photo'])) { $rid_album = $_GET['id_photo']; $sql = "SELECT id_photo, lieu_photo, date_photo, nom_photo FROM tb_photo WHERE id_photo = :rid_album"; $requete = $bdd->prepare($sql); $requete->execute(array( ":rid_album" => $rid_album )); while($donnees = $requete->fetch()) { $lieu_photo = $donnees['lieu_photo']; $date_photo = $donnees['date_photo']; $nom_photo = $donnees['nom_photo']; -
Bonjour
Maintenant lors de l'affichage des photos, la page est blanche aucun affichage et aucune erreur retournée, c'est vraiment incroyable.
dans l'url l'id de la photo est correctindex.php?body=nos_photos&type=public&id_photo=1
J'ai bien fait copie/collé ta correction.
Dans ma BDD j'ai bien inséré 1 photo dans 1 dossier pourtant
et dans mon dossier d'arborescence j'ai bien la photo

je te met le script complet<?php if (isset($_GET['id_photo'])) { $rid_album = $_GET['id_photo']; $sql = "SELECT id_photo, lieu_photo, date_photo, nom_photo FROM tb_photo WHERE id_photo = :rid_album"; $requete = $bdd->prepare($sql); $requete->execute(array( ":rid_album" => $rid_album )); while($donnees = $requete->fetch()) { $lieu_photo = $donnees['lieu_photo']; $date_photo = $donnees['date_photo']; $nom_photo = $donnees['nom_photo']; ?> <div id="Nos_Photos"> <img src="galerie_photo/<?php echo $nom_photo; ?>" /> <br/> <b><?php echo $lieu_photo ?></b> <br/> <b><?php echo dateFR($date_photo) ?></b> </div> <?php } } ?>
Merci encore de ton aide très précieuse-
Hum, étrange... La requête ne renverrait donc rien? À en juger par le nom des colonnes de ta table, il y a peut-être un mélange des noms de paramètres: j'ai nommé
$rid_album
le contenu de$_GET['id_photo']
, en soi c'est sans incidence, mais soit on utilise la mauvaise variable GET, soit on filtre selon le mauvais champ de ta table.
Après, comme je n'ai pas le fonctionnement du formulaire et ce que c'est censé faire, dur de trouver ce qui cloche... -
Bonjour,
Dans l'url tu fais passer l'id_photo 1index.php?body=nos_photos&type=public&id_photo=1
Et si je regarde l'extrait de la table mysql que tu nous présentes, il n'y a pas d'id_photo = 1 mais un id_photo = 17. J'ai comme l'impression que tu mélanges dans ta tête la colonne id_photo avec celle de rid_album qui elle, comporte bien 1 mais dans la requête SQL tu fais la clause WHERE sur l'id_photo! Tu vois où je veux en venir...
Cordialement.
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour
oui je vais regarder ça et je te redis
Merci en attendant -
Bonjour
Veuillez m'excuser je suis toujours dans une impasse total, impossible de comprendre mon soucis.
Pouvez-vous m'aider s'ils vous plait.
Je vous remercie.
Voici mes 2 tables tb_album et tb_photo et mon dossier de l'arborescence où il y a la photo


fichier pour l'affichage des albums<div id="NosAlbums"> <?php $sql = "SELECT id_album, annee_album FROM tb_album ORDER BY annee_album ASC"; $requete = $bdd->prepare($sql); $requete->execute(); while ($donnees = $requete->fetch()) { $rid_album = $donnees['id_album']; $annee_album = $donnees['annee_album']; $sql2 = "SELECT * FROM tb_photo WHERE id_photo = $rid_album"; $requete2 = $bdd->prepare($sql2); $requete2->execute(); ?> <a href="./index.php?body=nos_photos&type=public&id_album=<?php echo $rid_album; ?>"> <div id="Nos_Albums"> <img src="image/dossier.png" /> <br/> <b><?php echo $annee_album ?></b> </div> </a> <?php } ?> <div class="clear"></div> </div>
fichier pour l'affichage des photos lequel me génére une erreur<?php if (isset($_GET['id_photo'])) { $rid_album = $_GET['id_photo']; $sql = "SELECT id_photo, lieu_photo, date_photo, nom_photo FROM tb_photo WHERE id_photo = :rid_album"; $requete = $bdd->prepare($sql); $requete->execute(array( ":rid_album" => $rid_album )); while($donnees = $requete->fetch()) { $lieu_photo = $donnees['lieu_photo']; $date_photo = $donnees['date_photo']; $nom_photo = $donnees['nom_photo']; ?> <div id="Nos_Photos"> <img src="galerie_photo/<?php echo $nom_photo; ?>" /> <br/> <b><?php echo $lieu_photo ?></b> <br/> <b><?php echo dateFR($date_photo) ?></b> </div> <?php } } ?>
l'erreur retournéeErreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
par contre pour l'ajout des albums et l'ajout des photos tout marche bien-
Bonjour.
As tu testé ta requête en direct dans ta BDD pour voir si elle fonctionne correctement ?
c'est à dire.. en remplaçant la variable par un ID existant (le 17 par exemple)SELECT id_photo , lieu_photo , date_photo , nom_photo FROM tb_photo WHERE id_photo = 17
NB : J'ai bien dit en DIRECT DANS LA BDD (c'est à dire .. via phpmyadmin et non dans le code PHP ! )
-
-
-
Bonjour
Je vous envoie une requète qui devrais me retourner une photo, c'est également lié avec mes posts plus haut.
Pourquoi à votre avis cela ne m'affiche rien.
Merci
Ci-dessous la requète.$sql2 = "SELECT url FROM tb_photo2"; $requete2 = $bdd->prepare($sql2); $donnees2 = $requete2->execute(); $resultat = $donnees2['url']; ?> <div id="Nos_Albums"> <img src="galerie_photo/<?php echo $resultat; ?>" /> <br/> </div>
-
Bonjour
Si je fait ça l'affichage c'est pareil aucune image n'est retournée
Merci<div id="NosAlbums"> <?php $sql = "SELECT id, name FROM tb_album2"; $requete = $bdd->prepare($sql); $requete->execute(); while ($donnees = $requete->fetch()) { $album_id = $donnees['id']; $album_name = $donnees['name']; $sql2 = "SELECT url FROM tb_photo2 WHERE album_id = $album_id"; $requete2 = $bdd->prepare($sql2); $donnees2 = $requete2->execute(); $resultat = $donnees2['url']; ?> <a href="./index.php?body=nos_photos2&type=public&id=<?php echo $album_id; ?>"> <div id="Nos_Albums"> <img src="galerie_photo/<?php echo $resultat; ?>" /> <br/> <b><?php echo $album_name ?></b> </div> </a> <?php } ?> <div class="clear"></div> </div> -
Essayes donc ça :
- Utilisation d'une jointure dans la requête (pour n'en faire qu'une)
- Création des DIV / IMG .. dans un echo ..(pour éviter d'ouvrir fermer des balises PHP partout dans le code html...)
- Mise en place d'un id unique pour les div créés dans la boucle (car l'intérêt d'un ID .. c'est d'être UNIQUE ! )
<div id="NosAlbums"> <?php $sql = "SELECT A.id , A.name , P.url FROM tb_album2 A LEFT JOIN tb_photo2 P ON P.album_id = A.id"; $requete = $bdd->prepare($sql); $requete->execute(); while ($donnees = $requete->fetch()) { $album_id = $donnees['id']; $album_name = $donnees['name']; $img = $donnees2['url']; echo "<a href='./index.php?body=nos_photos2&type=public&id=".$album_id."'> <div id='Albums_".$album_id."'> <img src='galerie_photo/".$img."' alt='".$img."'></img> <br/> <b>".$album_name."</b> </div> </a>"; } ?> <div class="clear"></div> </div>
Cordialement,
Jordane -
Bonjour,
J'ai essayé tel quel ta requète avec jointure, malheureusement la page est blanche aucun affichage.
J'ai fait la try=>catch et rajouter le "WHERE id = $album_id";" l'erreur est la mêmeErreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6
C'est tout de même incroyable, je ne sais plus quoi faire j'ai utilisé tout ce que je pouvais faire.
les photos sont bien présentent dans le dossier "galerie_photo" à la racine du site.
Si tu as encore un peu de temps pour m'aider.
Je te remercie. -
Bonjour
Ne tiens pas compte de mon précédent post, ça y est ta requète fonctionne l'image s'affiche bien.
Je te remercie nickel
Cordialement.
