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 :

Message d'erreur à éliminer


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juillet 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Message d'erreur à éliminer
    Bonjour,

    lorsque je valide l'adresse de mon code dans l'url du navigateur, j'ai un message d'erreur qui s'affiche comme suit:

    LA DATE DE PAIEMENT:



    Fatal error: Uncaught Error: Call to a member function fetch() on string in C:\xampp\htdocs\somme_jour.php:49 Stack trace: #0 {main} thrown in C:\xampp\htdocs\somme_jour.php on line 49
    NOM ET PRENOMS MONTANT (FCFA) DATE DE PAIEMENT TOTAL =

    lorsque j'écris une date dans le formulaire et que je valide le code me renvoie bien les résultats attendus sans le message d'erreur. Je veux donc que le message d'erreur ne s'affiche plus dès que je valide l'adresse de mon code à l'url. J'ai fouillé partout mais je n'y parviens pas. je pense que cette erreur est due à la struture de mon code. J'ai donc un code qui marche mais qui m'affiche ce message : Fatal error: Uncaught Error: Call to a member function fetch() on string in C:\xampp\htdocs\somme_jour.php:49 Stack trace: #0 {main} thrown in C:\xampp\htdocs\somme_jour.php on line 49

    Prière de bien vouloir m'aider à sortir de ce pétrin
    Merci d'avance.
    mon code:

    Code php : 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
    59
    60
    61
    62
    <?php
    $req1 = "";
     
    if (isset($_POST['search']) && !empty ($_POST['search'])) {
    try {
      $db = new PDO('mysql:host=localhost;dbname=bdd', 'XX','X', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    } catch (PDOException $e) {
      die ($e->getMessage());
    }
     
    $query = $_POST['search'];
     
     
    $req1 = $db->prepare(" SELECT SUM(versement) AS total FROM cinquiemev WHERE date_paiement LIKE ? ");
    $req2 = $db->prepare(" SELECT noms, versement, date_paiement FROM cinquiemev WHERE date_paiement LIKE ? ");
     
    $req1->execute(array('%' . $query . '%'));
    $req2->execute(array('%' . $query . '%'));
    } 
     ?>
     
     <!DOCTYPE html>
    <html lang="fr" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title>BILAN QUOTIDIENT</title>
      </head>
      <body><br>
        <form method="post">
          <label for="search">LA DATE DE PAIEMENT: </label>
          <input type="search" name="search" value="">
          <input type="submit" name="submit" value="valider">
        </form></br>
     
     <table width="80%" border="1" cellspacing="0" bordercolor="#FFFFFF">
    <thead>
    <tr>
    <td><B><U>NOM ET PRENOMS</U></B></td>
    <td><B><U>MONTANT&nbsp(FCFA)</U></B></td>
    <td><B><U>DATE DE PAIEMENT</U></B></td>
    <td><span style="position: absolute; bottom: 300px; left: 1080px; width: 242px; heigth: 70px; color: red;">
    TOTAL =
    </span></td>
    </tr>
    </thead>
    <tbody>
    <?php while($data = $req1->fetch(PDO::FETCH_ASSOC)):;?>
    <tr>
    <td><span style="position: absolute; bottom: 300px; left: 1160px; width: 242px; heigth: 70px;"><?php echo htmlspecialchars($data['total']);?>&nbspFCFA</span></td>
    </tr>
    <?php endwhile;?>
    <?php while($data = $req2->fetch(PDO::FETCH_ASSOC)):;?>
    <tr>
    <td><?php echo htmlspecialchars($data['noms']);?></td>
    <td><?php echo htmlspecialchars($data['versement']);?></td>
    <td><?php echo htmlspecialchars($data['date_paiement']);?></td>
    </tr>
    <?php endwhile; ?>
    </tbody>
    </table>
    </body>
    </html>

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Je simplifie ton script pour que tu vois ce que ça donne quand un formulaire n'est pas soumis et que tu repères le problème ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $req1 = "";
     
    if (isset($_POST['search']) && !empty ($_POST['search'])) {
        // SNIP
    } 
     ?>
    ...
    <?php while($data = $req1->fetch(PDO::FETCH_ASSOC)):;?>...
    Que vaut $req1 dans le while() ici ?



    PS : il ne faut pas mettre de ";" après un while():
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Juillet 2021
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Juillet 2021
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    bonsoir,
    merci pour votre reponse.

    j'ai enlevé le ";" mais le message demeure. et quand je ne déclare pas $req1, voici les messages d'erreur:

    Warning: Undefined variable $req1 in C:\xampp\htdocs\somme_jour.php on line 47

    Fatal error: Uncaught Error: Call to a member function fetch() on null in C:\xampp\htdocs\somme_jour.php:47 Stack trace: #0 {main} thrown in C:\xampp\htdocs\somme_jour.php on line 47
    mon code après correction:

    Code php : 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
    59
    60
    61
    62
    <?php
     
     
    if (isset($_POST['search']) && !empty ($_POST['search'])) {
    try {
      $db = new PDO('mysql:host=localhost;dbname=bdd', 'XX','X', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
    } catch (PDOException $e) {
      die ($e->getMessage());
    }
     
    $query = $_POST['search'];
     
     
    $req1 = $db->prepare(" SELECT SUM(versement) AS total FROM cinquiemev WHERE date_paiement LIKE ? ");
    $req2 = $db->prepare(" SELECT noms, versement, date_paiement FROM cinquiemev WHERE date_paiement LIKE ? ");
     
    $req1->execute(array('%' . $query . '%'));
    $req2->execute(array('%' . $query . '%'));
    } 
     ?>
     
     <!DOCTYPE html>
    <html lang="fr" dir="ltr">
      <head>
        <meta charset="utf-8">
        <title>BILAN QUOTIDIENT</title>
      </head>
      <body><br>
        <form method="post">
          <label for="search">LA DATE DE PAIEMENT: </label>
          <input type="search" name="search" value="">
          <input type="submit" name="submit" value="valider">
        </form></br>
     
     <table width="80%" border="1" cellspacing="0" bordercolor="#FFFFFF">
    <thead>
    <tr>
    <td><B><U>NOM ET PRENOMS</U></B></td>
    <td><B><U>MONTANT&nbsp(FCFA)</U></B></td>
    <td><B><U>DATE DE PAIEMENT</U></B></td>
    <td><span style="position: absolute; bottom: 300px; left: 1080px; width: 242px; heigth: 70px; color: red;">
    TOTAL =
    </span></td>
    </tr>
    </thead>
    <tbody>
    <?php while($data = $req1->fetch(PDO::FETCH_ASSOC)):?>
    <tr>
    <td><span style="position: absolute; bottom: 300px; left: 1160px; width: 242px; heigth: 70px;"><?php echo htmlspecialchars($data['total']);?>&nbspFCFA</span></td>
    </tr>
    <?php endwhile;?>
    <?php while($data = $req2->fetch(PDO::FETCH_ASSOC)):?>
    <tr>
    <td><?php echo htmlspecialchars($data['noms']);?></td>
    <td><?php echo htmlspecialchars($data['versement']);?></td>
    <td><?php echo htmlspecialchars($data['date_paiement']);?></td>
    </tr>
    <?php endwhile; ?>
    </tbody>
    </table>
    </body>
    </html>

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    j'ai enlevé le ";" mais le message demeure
    C'est normal, ce n'était pas le problème principal à ce stade, c'est pour cette raison que je l'avais mentionné en "PS".

    Je recommence, je simplifie ton nouveau script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    if (isset($_POST['search']) && !empty ($_POST['search'])) {
        // SNIP
    } 
    ?>
    ...
    <?php while($data = $req1->fetch(PDO::FETCH_ASSOC)):?>
    Que vaut $req1 quand un formulaire n'est pas soumis ? Rien, d'où le message d'erreur.

    Il faut que tu gères le cas du formulaire non soumis.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. [TSocket] Message d'erreur
    Par rgz dans le forum Web & réseau
    Réponses: 6
    Dernier message: 04/07/2003, 09h16
  2. Surcharger le message d'erreur après un OnException
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 2
    Dernier message: 24/04/2003, 11h42
  3. Réponses: 4
    Dernier message: 04/03/2003, 01h05
  4. [CR] Message d'erreur
    Par nono1 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 11/09/2002, 14h54
  5. Réponses: 2
    Dernier message: 27/05/2002, 19h46

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