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 :

erreur requete ou while [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut erreur requete ou while
    Bonsoir,

    je cherche à afficher toutes les entrées de ma BD compris entre deux dates
    Grace a un formulaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <div class="mainForm" id="fieldDate_1">
    <form method="post" name="regie" action="index.php?page=3" enctype="application/x-www-form-urlencoded" accept-charset="UTF-8">
    	<div style="float:Left; padding-left:10px;"><label for="fielddate_1b" class="formFieldQuestion">Versé entre le :&nbsp;</label></div><div style="float:Left"><input type="text" style="text-align: right" readonly="true" name="fielddate_1b" id="fielddate_1b" value="" tabindex="10" /></div>
    	<div style="float:Left; padding-left:2px;"><label for="fielddate_1c" class="formFieldQuestion">&nbsp;et le :&nbsp;</label></div><div style="float:Left"><input type="text" style="text-align: right; margin-right:10px;" readonly="true" name="fielddate_1c" id="fielddate_1c" value="" tabindex="20" /></div>
    	<input id="saveForm" class="mainForm" type="image" src="imgs/btn_valider.png" value="Envoyer" tabindex="30"/>
    </form>
    </div>
    pour cette partie je ne pense pas avoir fait d'erreur.

    et voici mon code pour la requête et l'affichage des résultats

    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
     
    $debut = $_POST['fielddate_1b']; 
    $fin = $_POST['fielddate_1c'];
    echo("<br />");
    echo("<center>Voici les résultats entre le: $debut et le: $fin</center>"); 
     
    include("./config.inc.php");
    $link = mysql_connect($db_host,$db_user,$db_pass);
    if(!$link) die ('Could not connect to database: '.mysql_error());
    mysql_select_db($db_name,$link);
    $requete = mysql_query("SELECT * FROM regie BETWEEN '$fielddate_1b' AND '$fielddate_1c' ORDER BY field_1 ASC") or die (mysql_error());
     
     
     
    while($data = mysql_fetch_array($requete))
         {
              echo ''.$data['field_0'].''.$data['field_1'].''.$data['field_2'].''.$data['field_3'].''.$data['field_4'].''.$data['field_5'].''.$data['field_6'].''.$data['field_7'].''.$data['field_8'].'<br>'; 
         }
    mysql_close();
    ?>
    je ne trouve pas mon erreur de la requête ou de la boucle ?

    la structure pour le champ field_1 (dates) format text xx/xx/xxxx


    je verrai par la suite pour mettre dans un tableau les résultats


    Merci

  2. #2
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 494
    Par défaut
    quel est ton message d'erreur ?

    as-tu essaye d'afficher la requete sql generee et de la tester directement dans phpmyadmin ?


    note : tu peux utiliser le or die() plutot que de faire un test en plus
    mysql_connect(...) or die ('connexion impossible');
    de meme pour le mysql_select_db

    mysql_close() est inutile puisque par defaut, les connexions ne sont pas persistantes et se ferment a la fin du script.

    FYI : un simple echo "ton texte" suffit... pas besoin des parentheses
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut
    deja j'avais pas mis les bonnes variables $debut et $fin après j'avais une erreur de syntax j'ai rajouté WHERE field_1

    par contre il n'a pas l'air d'aimer le saut d'année, je fait des tests.
    j'ai fait une recheche du 20/12/2009 au 31/12/2009 C'est Ok
    puis du 20/12/2009 au 08/01/2010 il me retourne rien
    puis du 01/01/2010 au 08/01/2010 il me retourne bien mon entrée du 07/01/2010.

    une idée ?

    et il y a un problème de caractère accentué Acc�s mais, ca dois venir de l'encodage utf8


    Merci


    Code corrigé
    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
     
    $debut = $_POST['fielddate_1b']; 
    $fin = $_POST['fielddate_1c'];
     
     
    include("./config.inc.php");
    mysql_connect($db_host,$db_user,$db_pass) or die ('connexion impossible');
    mysql_select_db($db_name) or die ('connexion impossible');
    $requete = mysql_query("SELECT * FROM regie WHERE field_1 BETWEEN '$debut' AND '$fin' ORDER BY field_1 ASC") or die (mysql_error());
     
    if($data = mysql_fetch_array($requete)){
    echo "<br />";
    echo "<center><h3>Voici les résultats entre le: $debut et le: $fin</h3></center>";
    echo "<br />";
    }
    while($data = mysql_fetch_array($requete))
        {
             echo ''.$data['field_0'].'&nbsp;'.$data['field_1'].'&nbsp;'.$data['field_2'].'&nbsp;'.$data['field_3'].'&nbsp;'.$data['field_4'].'&nbsp;'.$data['field_5'].'&nbsp;'.$data['field_6'].'&nbsp;'.$data['field_7'].'&nbsp;'.$data['field_8'].'<br>'; 
        }
    ?>

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 815
    Billets dans le blog
    14
    Par défaut
    Vu comment tu écris les dates dans ton message, je subodore quelque chose.
    Fais un echo de la requête avant son exécution et poste nous la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $requete = "SELECT * FROM...";
    echo '<br />Requête :<br />'.$requete;
    $resultat = mysql_query($requete)
     
    if($data = mysql_fetch_array($resultat))
    ...
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 70
    Par défaut
    Merci de pour ton conseil en fait j'ai avancé sur ce code et c'est pas facile de faire quelque chose de correct.


    Mon code qui fonctionne a l'heure actuel
    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
     
    <?php
     
    // Variable pour date result
    htmlspecialchars(stripcslashes($debut1 = $_POST['fielddate_1b'])); 
    htmlspecialchars(stripcslashes($fin1 = $_POST['fielddate_1c']));
     
    include("./config.inc.php");
    mysql_connect($db_host,$db_user,$db_pass) or die ('connexion impossible');
    mysql_select_db($db_name) or die ('connexion impossible');
    // Variable pour requete mysql
     
    $debut = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['fielddate_1b'])));
    $fin = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST['fielddate_1c'])));
     
    // intialisation date fr -> us
    	$date = "$debut";
    	// formatage
    	list($jour, $mois, $annee) = explode("/", $date);
    		// affichage
    	$debut = $annee . '-' . $mois . '-' . $jour ;
     
    	// intialisation date fr -> us
    	$date = "$fin";
    	// formatage
    	list($jour, $mois, $annee) = explode("/", $date);
    		// affichage
    	$fin = $annee . '-' . $mois . '-' . $jour ;
     
    mysql_query("SET NAMES 'utf8'");
    $requete = mysql_query("SELECT * FROM regie WHERE field_1 BETWEEN '$debut' AND '$fin' ORDER BY field_1 ASC") or die (mysql_error());
    echo "<h2>Résultat</h2><br />";
    echo "<center><h3>Voici les résultats pour la période du : $debut1 au $fin1</h3></center>";
    echo "<br /><br />";
    echo "<table cellpadding='0' cellspacing='0'>";
    echo "<tr class='tdexport'><td>Par</td><td>Versé le</td><td>Dans l'espace</td><td>Nature du versement</td><td>Civilité</td><td>Prénom</td><td>Nom</td><td>Montant</td><td>En</td><td>Commentaires</td></tr>";
     
    while($data = mysql_fetch_array($requete))
     
        {
             echo '<tr><td>'.$data['field_0'].'</td><td style="text-align:center;">'.date("d/m/Y", strtotime($data['field_1'])).'</td><td>'.$data['field_2'].'</td><td>'.$data['field_3'].'</td><td>'.$data['field_4'].'</td><td>'.$data['field_5'].'</td><td>'.$data['field_6'].'</td><td style="text-align:right;">'.$data['field_7'].'</td><td style="text-align:center;">'.$data['field_8'].'</td><td>'.$data['field_9'].'</td></tr>';
    	}
    echo "</table><br />";
    echo "<center><a href='index.php?page=3'>Retour à la recherche</a></center>";
     
    ?>
    En fait après plusieurs heures j'ai réussi à le faire marcher, (pour une requete simple entre deux date) mais maintenant je me lance dans une requete multi-critère, d'ailleur j'ouvre un nouveau post lol


    Merci

    la suite ici

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

Discussions similaires

  1. Erreur dans le while
    Par Didier77 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 21/07/2006, 10h20
  2. Erreur requete SQL/Access
    Par polianita dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/06/2006, 15h20
  3. Erreur requete en VBA
    Par temar dans le forum Access
    Réponses: 15
    Dernier message: 19/05/2006, 19h50
  4. Erreur requete MySQL
    Par kanabzh29 dans le forum Requêtes
    Réponses: 7
    Dernier message: 05/05/2006, 14h08
  5. [debutante] erreur requete update
    Par LineLe dans le forum ASP
    Réponses: 5
    Dernier message: 12/09/2003, 13h05

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