IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

PHP7- Où est l'erreur?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Reconversion professionnelle en web développeur
    Inscrit en
    Avril 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Reconversion professionnelle en web développeur

    Informations forums :
    Inscription : Avril 2020
    Messages : 17
    Par défaut PHP7- Où est l'erreur?
    Bonjour,
    Je réalise un exercice qui consiste à avoir :
    - une page (accueil.php) qui affiche la liste des 5 derniers articles ajoutés en base de données;
    - une page (TestComments.php) qui affiche le contenu d'un -seul- article choisi et les commentaires qui y sont associés qui sont également en base de données.

    Mon problème, mes requêtes chargées d'afficher chaque article et ses commentaires ne semblent pas fonctionner. En fait, les informations ne sont pas récupérées. A l'affichage, je n'ai pas d'erreur, mais les variables titre, commentaire, auteur, date n'apparaissent pas. A mes yeux, le problème serait peut-être au niveau du SELECT ....WHERE id = ? j'ai tenté de mettre plutôt WHERE id = :id mais là j'ai une erreur 'sqlstate hy093 invalid parameter number parameter was not defined'. J'ai beau cherché je ne vois pas comment écrire cette requête convenablement. Merci de votre aide.

    P.S.: J'ai créé les entrées des articles et des commentaires manuellement sur PHPMyAdmin, je fais quelque chose de basique pour l'instant. Mais je suis bloquée...pour l'instant
    J'ai mis une capture d'écran de ma page TestComments.php pour illustrer mon problème.

    accueil.php
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
    	<head>
    		<meta charset="utf-8">
    		<title>Mon Super Blog</title>
    		<link rel="stylesheet" href="blog_style.css">
    	</head>
    	<body>
    		<h1>Bienvenu(e) sur mon Super-Blog et le vôtre ;)  !!!</h1><br><br><br>
    		<p>Derniers articles postés :</p><br>
     
    			<?php
     
                                    try
                                    {
                                            $connexion = new PDO('mysql:host=localhost;dbname=test_db_classroom;charset=utf8', '', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                                    //      echo "Sandrine, you are well connected to your database ! <br /><br />";
                                    }
                                    catch(Exception $e)
                                    {
                                            die("Erreur : " . $e->getMessage());
                                    }
    // Récupération des 5 derniers articles.
                                            $requete = $connexion->query('SELECT titre, contenu, DATE_FORMAT(date_creation, "%d/%m/%Y à %Hh%imin%ss") AS all_date_creation, auteur  FROM articles_blog ORDER BY date_creation DESC LIMIT 0, 5');
                                            while ($reponse = $requete->fetch())
                                            {
                            ?>
    			<div class="news">
    				<h3>
    					<?php   echo htmlspecialchars($reponse['titre']); ?>
    					<em><?php echo "publié le " . $reponse['all_date_creation'] . " par " . $reponse['auteur']; ?></em>
    				</h3>
     
    				<p>
    					<?php
                    // Affichage d'un seul article.
                                            echo htmlspecialchars($reponse['contenu']);
                                            ?>
    					<br>
    					<em><a href="TestComments.php?article=<?php echo $reponse['id']; ?>">Commentaires</a></em>
    					</p>
    			</div>
    					<?php
                                            } // Fin de la boucle 'while fetch'
                                            $requete->closeCursor();
                                            ?>
    	</body>
    </html>

    TestComments.php
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
    	<head>
    		<meta charset="utf-8">
    		<title>Super-Blog / Voir l'article</title>
    		<link rel="stylesheet" href="blog_style.css">
    	</head>
    	<body>
    		<h1>Les réactions sur cet article.</h1><br><br><br>
    		<p><a href="accueil.php">Retour sur la liste des articles</a></p><br>
     
    		<?php
     
                            try
                            {
                                    $connexion = new PDO('mysql:host=localhost;dbname=test_db_classroom;charset=utf8', '', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
            //                      echo "Sandrine, you are well connected to your database ! <br /><br />";
                            }
                            catch(Exception $e)
                            {
                                    die("Erreur : " . $e->getMessage());
                            }
    // Affichage d'un article à la fois: titre + contenu.
                                    $requete = $connexion->prepare('SELECT id, titre, contenu, DATE_FORMAT(date_creation, "%d/%m/%Y à %Hh%imin%ss") AS all_date_creation, auteur  FROM articles_blog WHERE id = ?');
                                    $requete->execute(array($_GET['article']));
                                    $reponse = $requete->fetch();
                    ?>
    		<div class="news">
    			<h3>
    				<?php   echo htmlspecialchars($reponse['titre']); ?>
    				<em>publié le <?php echo $reponse['all_date_creation'] . " par " . htmlspecialchars($reponse['auteur']); ?></em>
    			</h3>
     
    			<p>
    				<?php
            // Affichage d'un seul article.
                                    echo htmlspecialchars($reponse['contenu']);
                                    ?>
    			</p>
    		</div>
     
    		<h2>Commentaires</h2><br>
    			<?php
                            $requete->closeCursor(); // on libère le curseur juste avant d'entamer la requete suivante.
     
                            $requete = $connexion->prepare('SELECT auteur, commentaire, DATE_FORMAt(date_commentaire, "%d/%m/%Y à %Hh%imin%ss") AS all_date_commentaire  FROM commentaires_blog WHERE id_articles = ? ORDER BY date_commentaire');
                            $requete->execute(array($_GET['article']));
                            while ($reponse = $requete->fetch())
                            {
                            ?>
    			<p><?php  echo "<strong>" . htmlspecialchars($reponse['auteur']) . "</strong>" . " le " . $reponse['all_date_commentaire'] . "<br />" . htmlspecialchars($reponse['commentaire']); ?></p>
    			<?php
                            }
                            $requete->closeCursor();
                            ?>
    	</body>
    </html>
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- 2 méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $requete = $connexion->prepare('SELECT .... WHERE id = ?');
    $requete->execute(array($_GET['article']));
    $reponse = $requete->fetch();
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $requete = $connexion->prepare('SELECT .... WHERE id = :id');
    $requete->execute(array(':id'=>$_GET['article']));
    $reponse = $requete->fetch();
    2- Quant à ta problématique :
    que donnent :
    ?

  3. #3
    Membre averti
    Femme Profil pro
    Reconversion professionnelle en web développeur
    Inscrit en
    Avril 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Reconversion professionnelle en web développeur

    Informations forums :
    Inscription : Avril 2020
    Messages : 17
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $requete = $connexion->prepare('SELECT .... WHERE id = :id');
    $requete->execute(array(':id'=>$_GET['article']));
    $reponse = $requete->fetch();
    Le résultat est identique a 'SELECT .... WHERE id = ?'


    n'affiche rien
    affiche 'bool (false)' donc le $reponse est vide, c'est bien ça ? si oui, comment/pourquoi alors que le var_dump($requete) a ' object(PDOStatement)#2 (1) { ["queryString"]=> string(142) "SELECT id, titre, contenu, DATE_FORMAT(date_creation, "%d/%m/%Y à %Hh%imin%ss") AS all_date_creation, auteur FROM articles_blog WHERE id = ?" } '
    ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PetitPanda9 Voir le message
    echo $_GET['article']; n'affiche rien
    Et ça ne te met pas la puce à l'oreille ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    		<p>Derniers articles postés :</p><br>
    			<?php
    ...
                                            $requete = $connexion->query('SELECT titre, contenu, DATE_FORMAT(date_creation, "%d/%m/%Y à %Hh%imin%ss") AS all_date_creation, auteur  FROM articles_blog ORDER BY date_creation DESC LIMIT 0, 5');
    ...
    					<em><a href="TestComments.php?article=<?php echo $reponse['id']; ?>">Commentaires</a></em>
    'SELECT titre, ...... FROM' : il manque id !
    Du coup, <?php echo $reponse['id']; ?> ne renvoie RIEN * !
    *(même pas une erreur, ce qui est étonnant... )

  5. #5
    Membre averti
    Femme Profil pro
    Reconversion professionnelle en web développeur
    Inscrit en
    Avril 2020
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Reconversion professionnelle en web développeur

    Informations forums :
    Inscription : Avril 2020
    Messages : 17
    Par défaut
    Maintenant que vous avez mis le doigt dessus, ça me saute aux yeux. En fait je pensais bêtement que les valeurs passées dans le SELECT ne servent que pour l'affichage par le 'while fetch'.

    Merci de m'avoir corrigée et débloquée !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par PetitPanda9 Voir le message
    ...je pensais bêtement que les valeurs passées dans le SELECT ne servent que pour l'affichage par le 'while fetch'. ...
    C'est bien le cas !

    C'est pour ça qu'il faut y déclarer la colonneid, pour pouvoir la récupérer, et l'afficher dans le lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    					<em><a href="TestComments.php?article=<?php echo $reponse['id']; ?>">Commentaires</a></em>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 30/01/2006, 14h21
  2. Où est l'erreur?
    Par Paulinho dans le forum C++
    Réponses: 3
    Dernier message: 26/10/2005, 09h48
  3. [VB.NET] Pagination DataGrid (où est l'erreur?)
    Par franculo_caoulene dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/10/2004, 11h46
  4. Ou est l'erreur ?
    Par Antoine NSG dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/09/2004, 10h56
  5. [Erreur] Quel est cette erreur?
    Par netah25 dans le forum C++Builder
    Réponses: 3
    Dernier message: 11/08/2004, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo