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 :

corriger moi ce code svp [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Par défaut corriger moi ce code svp
    ce code m'envoie des erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $resultat= $_GET['titre'];
    $sql =  $bdd-> query ("SELECT id,titre,resume,article,image,auteur,date "
            . "FROM politique "
            . "WHERE titre ='$resultat'"
            . "union"
            . "SELECT id,titre,resume,article,image,auteur,date "
            . "FROM diplomatie "
            . "WHERE titre ='$resultat'"
            . "union"
            . "SELECT id,titre,resume,article,image,auteur,date "
            . "FROM finance "
            . "WHERE titre ='$resultat'"
            . "union");
    while ($donnees = $sql->fetch()){

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Quelque chose dans ce genre devrait faire l'affaire :
    Code : 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
    $titre = isset($_GET['titre']) ? $_GET['titre'] : '';
     
    if ($titre !== '')
    {
        $cols  = 'id, titre, resume, image, auteur, `date`';
        $titre = $bdd->quote($titre);
        $sql = <<<sql
    SELECT {$cols} FROM politique  WHERE titre = '{$titre}'
    UNION
    SELECT {$cols} FROM diplomatie WHERE titre = '{$titre}'
    UNION
    SELECT {$cols} FROM finance    WHERE titre = '{$titre}'
    sql;
     
        $qry = $bdd->query($sql);
        while ($row = $qry->fetch(PDO::FETCH_ASSOC))
        {
            // ...
        }
    }

  3. #3
    Membre confirmé Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Par défaut il me renvoit erreur
    il me renvoi
    ( ! ) Fatal error: in C:\wamp\www\togoportail\lire_article.php on line 40
    ( ! ) PDOException: in C:\wamp\www\togoportail\lire_article.php on line 40
    . voici la ligne 40
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $qry = $bdd->query($sql);

  4. #4
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Ben il faut chercher un peu... et faire des essais autour du sql

    Code : 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
    $titre = isset($_GET['titre']) ? $_GET['titre'] : '';
     
    if ($titre !== '')
    {
        $cols  = '`id`, `titre`, `resume`, `image`, `auteur`, `date`';
        $sql = <<<sql
    (SELECT {$cols} FROM politique  WHERE titre = :titre1)
    UNION
    (SELECT {$cols} FROM diplomatie WHERE titre = :titre2)
    UNION
    (SELECT {$cols} FROM finance    WHERE titre = :titre3)
    sql;
     
        $stmt = $bdd->prepare($sql); // je suppose que tu utilises PDO
        $stmt->bindParam(':titre1', $titre);
        $stmt->bindParam(':titre2', $titre);
        $stmt->bindParam(':titre3', $titre);
        $qry = $stmt->execute($sql);
        while ($row = $qry->fetch(PDO::FETCH_ASSOC))
        {
            // ...
        }
    }

  5. #5
    Membre confirmé Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Par défaut il me renvoit erreur
    meme erreur

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bon je ne vais pas jouer aux devinettes , si tu ne files pas plus d'infos sur ton erreur et environnement voire plus de code, tu devras te dépatouiller tout seul.

    Est-ce que tu comprends au moins mon code ?

  7. #7
    Membre confirmé Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Par défaut je comprends pas ton code
    sur la page d'acceuil, il y a plusieurs articles. quand l'utilisateur clique sur le titre d'un article, je recupère le lien de l'article d'ou le get. maintenant la base de données comprends les tables politque, economie et autre qui ont un champ titre. je veux faire une recherche dans les tables et trouver le titre correspondant puis afficher l'article de ce titre. merci

  8. #8
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Donne le code derrière $bdd

  9. #9
    Membre confirmé Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while ($donnees = $sql->fetch()){
                  echo ' '
                      . '<fieldset id="affichearticle">'
                          . '<center><span id="titrearticle">'. htmlspecialchars($donnees['titre']).'</span></center> <br /><br />'
                          . '<fieldset id="afficheimagearticle"><img src="articles/'.($donnees['image']) .' " width="300px" height="400px"/></fieldset>'
                          . '<br /><br /><p>'. htmlspecialchars($donnees['article']).' </p>'
                          . '<fieldset id="auteur"><span>'. htmlspecialchars($donnees['auteur']).'<br />'
                          . ''. htmlspecialchars($donnees['date']).'</span></fieldset><br /><br />'
                          . '</fieldset>';
                  }
                  ?>

  10. #10
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    non, je voudrais voir l'initialisation de $bdd (je suppose que c'est du PDO, mais je voudrais en être sûr)

  11. #11
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Tiens essaie avec ça et poste le message d'erreur :
    Code : 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
    $titre = isset($_GET['titre']) ? $_GET['titre'] : '';
     
    if ($titre !== '')
    {
        $cols  = '`id`, `titre`, `resume`, `image`, `auteur`, `date`';
        $sql = <<<sql
    (SELECT {$cols} FROM politique  WHERE titre = :titre1)
    UNION
    (SELECT {$cols} FROM diplomatie WHERE titre = :titre2)
    UNION
    (SELECT {$cols} FROM finance    WHERE titre = :titre3)
    sql;
     
         try {
            $stmt = $bdd->prepare($sql); // je suppose que tu utilises PDO
            $stmt->bindParam(':titre1', $titre);
            $stmt->bindParam(':titre2', $titre);
            $stmt->bindParam(':titre3', $titre);
            $qry = $stmt->execute($sql);
         }
         catch (PDOException $e)
         {
             echo $e->getMessage();
             exit;
         }
     
        while ($row = $qry->fetch(PDO::FETCH_ASSOC))
        {
            // ...
        }
    }

  12. #12
    Membre confirmé Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Par défaut j'ai fusionner nos code, sa marche merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
                  $resultat= $_GET['titre'];
                   $cols  = '`article`, `titre`, `resume`, `image`, `auteur`, `date`';
    $sql =  $bdd-> query ("SELECT {$cols} FROM politique WHERE titre = '$resultat'UNION SELECT {$cols} FROM finance WHERE titre = '$resultat'");
    while ($donnees = $sql->fetch()){
                  echo ' '
                      . '<fieldset id="affichearticle">'
                          . '<center><span id="titrearticle">'. htmlspecialchars($donnees['titre']).'</span></center> <br /><br />'
                          . '<fieldset id="afficheimagearticle"><img src="articles/'.($donnees['image']) .' " width="300px" height="400px"/></fieldset>'
                          . '<br /><br /><p>'. htmlspecialchars($donnees['article']).' </p>'
                          . '<fieldset id="auteur"><span>'. htmlspecialchars($donnees['auteur']).'<br />'
                          . ''. htmlspecialchars($donnees['date']).'</span></fieldset><br /><br />'
                          . '</fieldset>';
                  }
                  ?>

  13. #13
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Ne gardes surtout pas ton code SQL, il n'est pas du tout sécurisé.
    Gardes plutôt le mien...

  14. #14
    Membre confirmé Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Par défaut le tien ne marche pas
    je vais faire de l'url rewritting pour securiser. t'as un tuto, stp?

  15. #15
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    l'url rewriting n'a strictement rien à voir avec la sécurité relative à SQL , c'est juste de la cosmétique.

    ce code est à proscrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql =  $bdd-> query ("SELECT {$cols} FROM politique WHERE titre = '$resultat'UNION SELECT {$cols} FROM finance WHERE titre = '$resultat'");
    Tu dois le remplacer par le mien : syntaxe ->prepare()... ->bindParam()...

  16. #16
    Membre confirmé Avatar de japhettchabao
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2014
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2014
    Messages : 86
    Par défaut
    je le change comment?

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

Discussions similaires

  1. Veuillez m'aider à corriger ce code SVP.
    Par abouilyas dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/08/2010, 16h07
  2. Veuillez corriger ce code SVP.
    Par abouilyas dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 04/05/2010, 02h31
  3. corrige mon code svp
    Par NAIMA2 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/02/2007, 09h51
  4. [Tableaux] probleme de code svp
    Par k-nine01 dans le forum Langage
    Réponses: 3
    Dernier message: 21/02/2006, 21h41

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