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 :

Formulaire de recherche


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Par défaut Formulaire de recherche
    Bonjour,

    J'avais écrit un formulaire de recherche en PHP5, j'essaie de le réécrire en PHP7, mais cela ne fonctionne pas.
    Ce que je veux c'est afficher les données pour une seule année, pour cela j'ai un premier formulaire dans lequel j'écris l'année, et le deuxième doit m'afficher les données pour cette année-là.
    Le premier formulaire fonctionne, il appelle bien le deuxième, mais celui-ci n'affiche rien
    Je n'ai pas de message d'erreur, et elles sont bien activées dans mon fichier de connexion.

    Voici le premier formulaire :

    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
    <?php
    include("menu.php");
    ?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
    <link rel="stylesheet" type="text/css" href="calendrier.css" /> 
    <script language="JavaScript" src="calendrier.js"></script>
     
    <p  align="left">  ::  Liste des locations par années</p>
     
    <center>
     
    <form action="afficherloca_test.php" method="post">
    <b>Entrez l'année :</b>
        <input type="text" name="etos" />
     
        <input type="submit" value="Valider" />
    </form>
    </center>
    <br />
    <br />
    <br />
    et le deuxième :

    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
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    <?php include("menu.php");?>
    <link rel="stylesheet" href="menu/dropdown_three.css" type="text/css">
    <link rel="stylesheet" href="style.css" type="text/css">
     
    <?php
    include("include/db_inc_pdo.php");	
    $annne = isset($_POST['etos']) ? $_POST['etos'] : '';
    $annee = $_POST['etos'];
    echo '<br /><center><font color="blue"><big><b>Année: ' . $annee . '</b></center></font></big>'; //nombre de résultats
     
    $annee = isset($_POST['annee']) ? $_POST['annee'] : '';
     
    ?>
     
    <table class="bicolor" border="1"  align="center">
            <tr>
    			<th>Année</th>
                <th>Arrivée</th>
                <th>Départ</th>
    			<th>Nb. jours</th>
    			<th>Nom</th>
    			<th>Prénom</th>
                <th>Linge</th>
                <th>Lit bébé</th>
    			<th>Somme payée</th>
                <th>Reste à payer</th>
     
    	</tr>
     
    	<?php
    $reponse = $pdo->query("SELECT 
    		DATE_FORMAT( datearrive, '%d/%m/%Y' ) AS datea, 
    		DATE_FORMAT( datearrive, '%Y' ) AS annee, 
    		DATE_FORMAT( datedepart, '%d/%m/%Y' ) AS dated, 
    		DATEDIFF(datedepart,datearrive ) AS datediff, 
    		dateloca.datearrive,
    		dateloca.datedepart, 
    		dateloca.nombre, 
    		dateloca.prixlocation, 
    		dateloca.caution, 
    		(dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby) as PT, 
    		(dateloca.apaiement+dateloca.bpaiement+dateloca.cpaiement) as Totalpaye, 
    		(dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.apaiement-dateloca.bpaiement-dateloca.cpaiement) as Reste, 
    		(dateloca.apaiement+dateloca.bpaiement+dateloca.cpaiement-dateloca.caution) as Totalrevenu, 
    		dateloca.apaiement, DATE_FORMAT( dateapaiement, '%d/%m/%Y' ) AS dateunp, 
    		dateloca.bpaiement, 
    		DATE_FORMAT( datebpaiement, '%d/%m/%Y' ) AS datedeuxp, dateloca.cpaiement, 
    		DATE_FORMAT( datecpaiement, '%d/%m/%Y' ) AS datetroisp, 
    		dateloca.linge, 
    		dateloca.litbaby, 
    		dateloca.degatspayes, 
    		dateloca.nonpaye, 
    		dateloca.remarques, 
    		dateloca.restitution, 
    		DATE_FORMAT( datelettre, '%d/%m/%Y' ) AS datel, 
    		dateloca.appart, 
    		dateloca.envoitarifs, 
    		dateloca.envoidescriptif, 
    		dateloca.paragraphesup, 
    		dateloca.confirmation, 
    		dateloca.enfants, 
    		locataires.nom, 
    		locataires.prenom, 
    		locataires.idnoms
    	FROM dateloca
    	INNER JOIN locataires 
    		ON dateloca.idnoms = locataires.idnoms
     
    	WHERE locataires.reserve = 'oui' 
    	AND dateloca.annul =2 
    	AND dateloca.prixlocation >0
    				
    				AND '$annee'
    
    	ORDER BY datearrive desc;");
     
    while ($donnees = $reponse->fetch())	
    {
    	echo "<tr>";
    	echo "<td> $donnees[annee] </td>";
        echo "<td> $donnees[datea] </td>";
        echo "<td> $donnees[dated] </td>";
        echo "<td> $donnees[datediff] </td>";
        echo "<td> $donnees[nom] </td>";
        echo "<td> $donnees[prenom] </td>";		
        echo "<td> $donnees[linge] </td>";	
    	echo "<td> $donnees[litbaby] </td>";
        echo "<td> $donnees[Totalpaye] </td>";
    	echo "<td> $donnees[Reste] </td>";
    }
    $arrAll = $reponse->fetch(PDO::FETCH_ASSOC);
     
    if(!empty($arrAll))
    {
     
    	    echo 'Aucun résultat disponible.';
        foreach($arrAll as $arr)
        {
     
        }
    }
    else
    {
    	    echo 'Les données sont disponibles:';
     
    }
    ?>
    <br />
    <?php
     
    {
     
    echo $reponse->rowCount() . ' résultat(s)';
    //echo '<br /><br /><center><font color="blue"><b><big>Nombre de résultats: ' . $nombre_resultats . '</b></center></font></big><br /><br />'; //nombre de résultats
     
    ?>
    <br />
    <?php
     
     
    echo '<a href="afficherloca_r_test.php">recommencer</a>';
     
    }
     
     
    $reponse->closeCursor();
    ?>
    Une petite idée pourquoi cela ne fonctionne pas ?

    D'avance merci pour vos réponses

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Peux-tu tester ceci dans ton PHPmyadmin (mettons pour 2019)
    Car avant d'utiliser PDO, il faut t'assurer que ta requête SQL fonctionne.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT  
      DATE_FORMAT( datearrive, "%d/%m/%Y" ) AS datea, DATE_FORMAT( datedepart, "%d/%m/%Y" ) AS dated, DATE_FORMAT( datearrive, "%Y" ) AS annee, DATEDIFF(datedepart,datearrive ) AS datediff, dateloca.nombre, dateloca.prixlocation, dateloca.caution, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby) as PT, (dateloca.apaiement+dateloca.bpaiement+dateloca.cpaiement) as Totalpaye, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.apaiement-dateloca.bpaiement-dateloca.bpaiement) as Reste, (dateloca.apaiement+dateloca.bpaiement+dateloca.cpaiement-dateloca.caution) as Totalrevenu, dateloca.apaiement, DATE_FORMAT( dateapaiement, "%d/%m/%Y" ) AS dateunp, dateloca.bpaiement, DATE_FORMAT( datebpaiement, "%d/%m/%Y" ) AS datedeuxp, dateloca.cpaiement, DATE_FORMAT( datecpaiement, "%d/%m/%Y" ) AS datetroisp, dateloca.linge, dateloca.litbaby, dateloca.degatspayes, dateloca.nonpaye, dateloca.remarques, dateloca.restitution, DATE_FORMAT( datelettre, "%d/%m/%Y" ) AS datel, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.apaiement-dateloca.bpaiement-dateloca.cpaiement) as Reste, dateloca.appart, dateloca.envoitarifs, dateloca.envoidescriptif, dateloca.paragraphesup, dateloca.confirmation, dateloca.annul, dateloca.enfants, locataires.nom, locataires.prenom
      FROM dateloca
      INNER JOIN locataires ON  dateloca.idnoms = locataires.idnoms AND locataires.reserve = "oui" 
      WHERE dateloca.annul =2 
      AND dateloca.prixlocation >0
      AND YEAR(datearrive) = 2019
    ORDER BY date_arrive desc;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre confirmé
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Par défaut
    Bonjour,

    Merci beaucoup, dans phpmyadmin cela fonctionne, (en changeant: "ORDER BY date_arrive desc;" par : "ORDER BY datearrive desc;") j'ai essayé de l'adapter dans mon formulaire, mais le problème c'est que je ne sais pas comment remplacer à la ligne 7 de ton exemple 2019 par le résultat du premier formulaire Peux-tu m'expliquer s.v.p. ?

    D'avance merci pour ton aide

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Comme ça, avec un marqueur anonyme, le point d'interrogation qui correspond à ton année variable.
    Ce code devrait marcher comme tel.
    Voir ma signature pour les explications.
    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
     
    <?php
    if(! empty($_POST['etos']) && (int)$_POST['etos'] >= 1900 && (int)$_POST['etos'] <= 3000){
      include('include/db_inc_pdo.php');
      $sql='SELECT  
      DATE_FORMAT( datearrive, "%d/%m/%Y" ) AS datea, DATE_FORMAT( datedepart, "%d/%m/%Y" ) AS dated, DATE_FORMAT( datearrive, "%Y" ) AS annee, DATEDIFF(datedepart,datearrive ) AS datediff, dateloca.nombre, dateloca.prixlocation, dateloca.caution, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby) as PT, (dateloca.apaiement+dateloca.bpaiement+dateloca.cpaiement) as Totalpaye, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.apaiement-dateloca.bpaiement-dateloca.bpaiement) as Reste, (dateloca.apaiement+dateloca.bpaiement+dateloca.cpaiement-dateloca.caution) as Totalrevenu, dateloca.apaiement, DATE_FORMAT( dateapaiement, "%d/%m/%Y" ) AS dateunp, dateloca.bpaiement, DATE_FORMAT( datebpaiement, "%d/%m/%Y" ) AS datedeuxp, dateloca.cpaiement, DATE_FORMAT( datecpaiement, "%d/%m/%Y" ) AS datetroisp, dateloca.linge, dateloca.litbaby, dateloca.degatspayes, dateloca.nonpaye, dateloca.remarques, dateloca.restitution, DATE_FORMAT( datelettre, "%d/%m/%Y" ) AS datel, (dateloca.prixlocation+dateloca.caution+dateloca.linge+dateloca.litbaby-dateloca.apaiement-dateloca.bpaiement-dateloca.cpaiement) as Reste, dateloca.appart, dateloca.envoitarifs, dateloca.envoidescriptif, dateloca.paragraphesup, dateloca.confirmation, dateloca.annul, dateloca.enfants, locataires.nom, locataires.prenom
      FROM dateloca
      INNER JOIN locataires ON  dateloca.idnoms = locataires.idnoms AND locataires.reserve = "oui" 
      WHERE dateloca.annul =2 
      AND dateloca.prixlocation >0
      AND YEAR(datearrive) = ?
     order by datearrive desc, locataire.nom, locataire.prenom;';
      $stmt=$pdo->prepare($sql);
      $stmt->execute(array($_POST['etos']));
      $data= $stmt->fetchAll(PDO::FETCH_ASSOC);
      if(count($data)>0){
        //ici tu construis ton tableau HTML avec une boucle du type
        foreach($data as $row){
          //mais attention, pour l'affichage, tu ajoutes ça
          /*<?= htmlspecialchars($row['datea']) ?> etc. pour tous les champs de ta requête */
        }
      }
      else{
        echo '<p>Aucune location en '.$_POST['recherche_valeur'].'</p>';
      }
      unset($pdo);
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre confirmé
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Par défaut
    Re-bonjour,

    Youpii après plusieurs heures de recherches j'ai trouvé ! et cela fonctionne il fallait écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      AND YEAR(datearrive) = "'.$annee.'"
    Merci de m'avoir aidée en me donnant ton code, cela m'a mise sur la bonne piste.

  6. #6
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Je suis contente que tu sois contente.
    Mais je serais encore plus contente si tu avais pris le temps de lire le lien de ma signature "PDO une soupe et au lit", ce que tu n'as manifestement pas fait.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Membre confirmé
    Femme Profil pro
    piano
    Inscrit en
    Décembre 2011
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations professionnelles :
    Activité : piano
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2011
    Messages : 131
    Par défaut
    Bonjour,
    Oui je l'ai lu, même plusieurs fois désolée si je n'avais peut-être pas les yeux en face des trous !!!
    De toute façon, merci beaucoup pour ton aider qui m'a été très précieuse.
    Bonne journée

  8. #8
    Membre confirmé
    Homme Profil pro
    autodidacte / éternel débutant
    Inscrit en
    Avril 2018
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : autodidacte / éternel débutant

    Informations forums :
    Inscription : Avril 2018
    Messages : 64
    Par défaut
    Bonjour,
    Pas sûr de la pertinence de répondre à une question résolue il y a deux jours
    @notebleue : Je crois que Dendrite t’alertait dans #6 sur le fait que sa solution à ta demande (expliquée avant la soupe et le lit ) aurait été:
    AND YEAR(datearrive) = ? en ligne 7 en ligne 11 de #4
    Le marqueur anonyme ? prenant ici la valeur de $_POST['etos'] (cf ligne 14) (ou $annee si tu préfères)

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

Discussions similaires

  1. Formulaire de recherche multitables
    Par SpyesX dans le forum Access
    Réponses: 7
    Dernier message: 24/11/2005, 11h50
  2. [MySQL] Formulaire de recherche PHP + un script d recherche en HTML
    Par Dsphinx dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/11/2005, 19h44
  3. alléger un formulaire de recherche
    Par jarod71 dans le forum Langage
    Réponses: 4
    Dernier message: 28/10/2005, 11h11
  4. Réponses: 3
    Dernier message: 20/10/2005, 12h42
  5. Réponses: 5
    Dernier message: 18/10/2005, 14h09

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