Fatal error

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 22 mai 2015 à 23:15
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 28 mai 2015 à 09:31
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
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

ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
23 mai 2015 à 09:39
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.
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
23 mai 2015 à 19:16
Bonjour
Merci pour ton aide, malheureusement j'ai toujours cette erreur, oui tu as raison cela vient bien de la variable $rid_album
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 1

Il y a plusieurs jours que je suis dessus je ne vois pas du tout.
Merci beaucoup de votre aide.
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
23 mai 2015 à 21:35
'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'];
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
Modifié par papyclic le 24/05/2015 à 04:35
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 correct
index.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
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
24 mai 2015 à 10:28
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...
0
ReDLoG Messages postés 243 Date d'inscription mardi 12 mars 2013 Statut Membre Dernière intervention 28 octobre 2021 57
24 mai 2015 à 11:31
Bonjour,

Dans l'url tu fais passer l'id_photo 1
index.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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
24 mai 2015 à 19:54
Bonjour
oui je vais regarder ça et je te redis
Merci en attendant
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
Modifié par papyclic le 25/05/2015 à 23:45
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ée
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 1

par contre pour l'ajout des albums et l'ajout des photos tout marche bien
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
26 mai 2015 à 00:37
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 ! )
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
26 mai 2015 à 07:51
Bonjour
Je n'avais pas pensé à le faire, mais oui la requète me retourne bien le résultat.
Merci pour de votre aide.

0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
27 mai 2015 à 19:14
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>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
27 mai 2015 à 19:32
Il manque le FETCH
... et une boucle.
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
27 mai 2015 à 20:00
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>
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
27 mai 2015 à 20:14
Pourquoi avoir ajouté ce SQL2 ???
Tu dois juste boucler sur ta première requête c'est tout..
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié par jordane45 le 27/05/2015 à 23:04
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
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
28 mai 2015 à 07:29
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ême
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 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.
0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
28 mai 2015 à 07:47
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.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
28 mai 2015 à 09:31
Par contre.. n'oublie pas ...
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0