[RESOLU] fetch et PDO

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] fetch et PDO

Re: fetch et PDO

par Spols » 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'); ?>

Re: fetch et PDO

par @rthur » 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

Re: fetch et PDO

par quattro » 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

Re: fetch et PDO

par Spols » 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

Re: fetch et PDO

par quattro » 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 -->

Re: fetch et PDO

par Spols » 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.

Re: fetch et PDO

par quattro » 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 ?

Re: fetch et PDO

par quattro » 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

Re: fetch et PDO

par @rthur » 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

fetch et PDO

par quattro » 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" />