[RESOLU] fetch et PDO

Eléphant du PHP | 166 Messages

04 juil. 2018, 13:04

Bonjour

dans un précedent post j'avais une ligne de code pour afficher une photo :

Code : Tout sélectionner

<img src = "../image/<?php echo $inTitre.".jpg";?>" width="150" height="150" />
cela fonctionne parfaitement.

maintenant je veux utiliser un fetch pour afficher les photos de la bdd :

Code : Tout sélectionner

<img src = "../image/<?php // On se connecte à la Bdd include('../page/connection.php'); //echo $inTitre.".jpg"; $sth = $bdd->prepare('SELECT titre FROM entree_personnel'); $sth->execute(array('titre' => $inTitre)); $result = $sth->fetch(PDO::FETCH_ASSOC); echo $result.".jpg"; ?>" width="150" height="150" />
j'ai repris le code précédent en y ajoutant qqes lignes, mais j'ai une erreur :
Notice: Array to string conversion in C:\UwAmp\www\essai\page\principal.php on line 145 Call Stack #TimeMemoryFunctionLocation 10.0010144368{main}( )...\principal.php:0 Array.jpg" width="150" height="150" />

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 juil. 2018, 13:52

Bonjour,

Le message

Code : Tout sélectionner

Notice: Array to string conversion
veut dire que tu essaye d'utiliser un tableau PHP comme si c'était une chaine de cractère.
Dans la majorité des cas, c'est souvent si tu essaye de faire un echo d'un tableau.

Pour voir le contenu d'une variable et pouvoir debuguer, le plus simple c'est de faire un var_dump() de ta variable :
var_dump($result);
Dans ton cas, si j'ai bien compris tu veux afficher plusieurs photos issues de ta bdd, cela veut donc dire qu'il faut que tu fasses une boucle sur tous les résultats de ta requête SQL et que c'est dans ta boucle que tu dois faire un echo de la balise <img> avec le nom de l'image
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 166 Messages

05 juil. 2018, 10:11

Bonjour
j'ai donc fait cela :

Code : Tout sélectionner

<?php // On se connecte à la Bdd include('../page/connection.php'); //On recupère les data "Titre" $reponse = $bdd->query('SELECT titre FROM entree_personnel'); while ($donnees = $reponse->fetch()) { if ($inTitre == $donnees['titre']) { echo "<img src = "../image/<?php echo $inTitre.".jpg";?>" width="150" height="150" />"; } } $reponse->closeCursor(); ?>
il me met une erreur :
Parse error: syntax error, unexpected '.' in C

Eléphant du PHP | 166 Messages

05 juil. 2018, 12:49

j'ai rectifié le code :

Code : Tout sélectionner

<?php // On se connecte à la Bdd include('../page/connection.php'); //On recupère les data Titre $reponse = $bdd->query('SELECT titre FROM entree_personnel'); while ($donnees = $reponse->fetch()) { //echo $donnees['titre'] . '<br />'; if ($inTitre == $donnees['titre']) { echo '<img src = "../photo/"'.$inTitre.'"".jpg" width="150" height="150" />'; } } $reponse->closeCursor(); ?>
les cadres des images apparaissent mais restent vide ?

Mammouth du PHP | 1967 Messages

05 juil. 2018, 13:00

<?php
    // On se connecte à la Bdd
    include('../page/connection.php');
    
    //On recupère les data Titre
    $reponse = $bdd->query('SELECT titre FROM entree_personnel');

    while ($donnees = $reponse->fetch())
    {
      //echo $donnees['titre'] . '<br />';
      if ($inTitre == $donnees['titre'])
      {
        echo '<img src="../photo/'.$inTitre.'.jpg" width="150" height="150" />';
      }
    }
    $reponse->closeCursor();
    ?>
regarde bien ce qu'e j'ai fait avec les simple et double quote.
regarde aussi ce que ton code donnais en html par rapport au mien.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 166 Messages

05 juil. 2018, 13:24

merci après modif cela fonctionne.
par contre à chaque fois que je rafraichie mon naviguateur, cela me rajoute automatiquement le dernier enregistrement de mon formulaire dans la bdd ?

Code : Tout sélectionner

<?php // Si le formulaire est soumis if(isset($_POST['valide'])) { //si les champs ne sont pas vide if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['qualif']) && !empty($_FILES['photo']) && !empty($_POST['titre'])) { //Création des variables $inNom = $_POST['nom']; $inPrenom = $_POST['prenom']; $inQualif = $_POST['qualif']; $inPhoto = $_FILES['photo']; $inTitre = $_POST['titre']; // test si le fichier a bien été envoyé et s'il n'y a pas d'erreur if (isset($inPhoto) && $inPhoto['error'] == 0) { // test la taille du fichier if ($inPhoto['size'] <= 2000000 ) { // test si l'extension est autorisée $infosfichier = pathinfo($inPhoto['name']); $extension_upload = $infosfichier['extension']; $extensions_autorisees = array('jpg', 'jpeg', 'png'); if (in_array($extension_upload, $extensions_autorisees)) { // On peut valider le fichier et le stocker $uploads_dir = 'C:\UwAmp\www\essai\photo'; move_uploaded_file ($inPhoto['tmp_name'], "$uploads_dir/$inTitre.jpg"); echo "L'envoi a bien été effectué !<br \><br \>"; // On se connecte à la Bdd include('../page/connection.php'); // Enregistrement des valeurs dans la Bdd $req = $bdd->prepare('INSERT INTO entree_personnel(nom, prenom, qualif, titre) VALUES(:nom, :prenom, :qualif, :titre)'); $req->execute(array('nom' => $inNom,'prenom' => $inPrenom,'qualif' => $inQualif,'titre' => $inTitre)); echo "Bienvenue :<b> ".$inPrenom." </b>,dans la Bdd..." ; // Je me deconnecte $req = null; } } } else { if ($inPhoto['error'] == 1) { echo "<br \><b><h2>Photo supérieur à : 2Mo, recommencez l'enregistrement</h2></b>"; } } } else { echo "Veuillez remplir tous les champs"; } } ?>

Code : Tout sélectionner

<!-- Début PORTRAIT --> <div> <h1>Portrait</h1> <div class="container"> <!--<img src = "../image/<?php echo $inTitre.".jpg";?>" width="150" height="150" />--> <?php // On se connecte à la Bdd include('../page/connection.php'); //On recupère les data "Titre" $reponse = $bdd->query('SELECT titre FROM entree_personnel'); while ($donnees = $reponse->fetch()) { //echo $donnees['titre'] . '<br />'; if ($inTitre == $donnees['titre']) { echo '<ul><li>'; echo '<img src = "../photo/'.$inTitre.'.jpg" width="150" height="150" />'; echo '</li></ul>'; } } $reponse->closeCursor(); ?> <div class="overlay">My Name is John</div> </div> </div><!-- Fin PORTRAIT -->

Mammouth du PHP | 1967 Messages

05 juil. 2018, 15:57

Termine ta page par une redirection (même si c''est pour la même page) ca évitera de garder les données en POST d'un rechargement à l'autre
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 166 Messages

06 juil. 2018, 12:42

Bonjour

ma page "principal.php" a un code de session en tout début :

Code : Tout sélectionner

<!--Début de ma session --> <?php require_once('../session/session-verif.php'); ?>
si je place une redirection sur la même page, tout en bas de mon code, comme ceci :

Code : Tout sélectionner

header('Location: ../page/principal.php');
j'ai une erreur :
Warning: Cannot modify header information - headers already sent by (output started at C:\UwAmp\www\essai\page\principal.php:146) in C:\UwAmp\www\essai\page\principal.php on line 161

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

06 juil. 2018, 13:47

Bonjour,

Pour fonctionner, la commande header() doit être utilisée avant d'envoyer un quelconque bout de texte ou de code HTML au navigateur, il faut également se méfier des éventuels espaces ou retours à la ligne avant la balise <?php

D'après le message d'erreur, tu as un morceau de code qui envoie du texte ou du HTML à la ligne 146 de ton fichier C:\UwAmp\www\essai\page\principal.php
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 1967 Messages

06 juil. 2018, 15:01

<!--Début de ma session -->
<?php require_once('../session/session-verif.php'); ?>
c'est un commentare html que tu as mis
je prefère ceci
<?php 
/*Début de ma session */
require_once('../session/session-verif.php'); ?>
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube