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

Langage PHP Discussion :

Cohabité deux requetes SQL + Mise en page bizare


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut Cohabité deux requetes SQL [RESOLU] + Mise en page bizare [NON RESOLU]
    Edition le 16.06 suite au changement de direction du post

    J'essaye de faire cohabité ces deux requetes ensemble mais je ne m'en sort pas donc je demande de l'aide svp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $query = mysql_query("SELECT * FROM client WHERE date BETWEEN '$date1' AND '$date2'") or die (mysql_error());
    $nb_resultats = mysql_num_rows($query);
    if($nb_resultats != 0)
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $requete=mysql_query("SELECT SUM(prix) FROM client");
    $donnee = mysql_fetch_array($requete);
    $somme=$donnee['SUM(prix)'];

    ---------------------------------------
    Mise en forme étrange :

    Sur mon moteur de recherche via date apres la recherche mes clients s'affiche correctement via ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $donnees['titre']; ?> <?php echo $donnees['nom']; ?> <?php echo $donnees['prenom']; ?> - <?php echo $donnees['prix']; ?>€</strong>
    J'essaye de faire une mise en page propre avec cela :

    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
    <?php
     echo '<center><table bgcolor="#FFFFFF" border="1" cellpadding="0" style="border-color:#999" width="800px">'."\n";
            // premi&egrave;re ligne on affiche les titres pr&eacute;nom et surnom dans 2 colonnes
     
            echo '<td background="img/fdc.png" width="56%" align="center"><b><u>Client</u></b></td>';
            echo '<td background="img/fdc.png" "width="20%" align="center"><b><u>Ville</u></b></td>';
            echo '<td background="img/fdc.png" width="12%" align="center"><b><u>Date & Heure</u></b></td>';
    echo '<td background="img/fdc.png" width="12%" align="center"><b><u>Montant</u></b></td>';
            echo '</tr>'."\n";
        // lecture et affichage des r&eacute;sultats sur 2 colonnes, 1 r&eacute;sultat par ligne.    
        while($donnees = mysql_fetch_array($query)) {
     
     echo '<td bgcolor="#F9F9F9">'.$donnees['nom'].' '.$donnees['prenom'].'<i> ('.$donnees['titre'].')</i></td>';
            echo '<td bgcolor="#F9F9F9">'.$donnees['ville'].'</td>';
            echo '<td bgcolor="#F9F9F9">Le  '.dateFR($donnees['date']).'<p>&agrave; '.$donnees['heure'].'</td>';
            echo '<td bgcolor="#F9F9F9">'.$donnees['prix'].'€</td>';
            echo '</tr>'."\n";
     
        }
        // fin du tableau.
     
     
    // on lib&egrave;re l'espace m&eacute;moire allou&eacute; pour cette requ&ecirc;te
        echo '</table>';
    }
     
    ?>
    mais je me retrouve avec un probleme etrange, j'ai toujours le 1er client qui n'apparait pas, hors le compteur du tableau dessus indique bien le bon nombre (3 dans le compteur mais que 2 clients dans le tableau)

    Je vous remercie pour votre aide qui je pense est primordiale car complètement perdu.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il faudrait que tu nous décrives dans le détail la structure de ta base: quelles informations contiennent les tables et comment elles s'articulent.

  3. #3
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Quelle est la définition d'un "dernier client" ?
    Est-ce une date stockée quelque part ? Sont-ces les derniers logins dans l'ordre numérique ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Merci de votre aide c'est bien sympathique .

    Voici la structure de ma base à l'heure actuelle:

    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
    CREATE TABLE `client` (
      `id` int(255) NOT NULL AUTO_INCREMENT,
      `titre` varchar(50) CHARACTER SET utf8 NOT NULL,
      `nom` varchar(50) CHARACTER SET utf8 NOT NULL,
      `prenom` varchar(50) CHARACTER SET utf8 NOT NULL,
      `rue` varchar(50) CHARACTER SET utf8 NOT NULL,
      `cpost` varchar(50) CHARACTER SET utf8 NOT NULL,
      `ville` varchar(50) CHARACTER SET utf8 NOT NULL,
      `tel` varchar(10) CHARACTER SET utf8 NOT NULL,
      `email` varchar(50) CHARACTER SET utf8 NOT NULL,
      `heure` varchar(50) CHARACTER SET utf8 NOT NULL,
      `date` date NOT NULL,
      `inter` varchar(100) CHARACTER SET utf8 NOT NULL,
      `pc` varchar(50) CHARACTER SET utf8 NOT NULL,
      `os` varchar(50) CHARACTER SET utf8 NOT NULL,
      `retour` varchar(80) NOT NULL,
      `heurenom` varchar(10) NOT NULL,
      `heuresup` varchar(10) NOT NULL,
      `prix` varchar(10) NOT NULL,
      `designation` varchar(100) NOT NULL,
      `pheurenom` varchar(15) NOT NULL,
      `pheuresup` varchar(15) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;


    Concernant la question de s.n.a.f.u :

    Quand je parle des derniers clients, je parle plutôt des derniers ajouts dans la base.

    Merci à vous

  5. #5
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Logiquement si les X derniers clients sont les X derniers a avoir été ajoutés dans la base tu peux simplement récupérer les X enregistrements dont l'ID est le plus grand.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Tout à fait Momodedf mais je ne trouve pas comment faire un input type="text afin de saisir les X derniers ajouts.

    Merci à vous

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Re bonjour, j'ai fait un petit shema rapidement de ce que je souhaite faire pour plus de simplicité (je l'espère)



    J'ai tous sauf la partie calcul avec le input (au milieu)(a l'heure actuelle il me calcul toutes mes entrées donc pas pratique pour la suite)

    Merci de votre aide.

  8. #8
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Il te faudra utiliser la clause LIMIT de MySql et itérer sur les résultats
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT prix FROM client ORDER BY id DESC LIMIT 2;
    ou tout faire faire par le sgbd
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT SUM(prix) 
    FROM (SELECT prix FROM client ORDER BY id DESC LIMIT 2);

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Merci à toi s.n.a.f.u mais je me trompe peut être mais avec cette requête cela me calcul les deux derniers champs seulement ?

  10. #10
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par C3DRIC49 Voir le message
    Merci à toi s.n.a.f.u mais je me trompe peut être mais avec cette requete cela me calcul les deux derniers champs ?
    Oui, n'est-ce pas le but ?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Non lol je me suis mal fait comprendre et apparement le shema n'ai pas compréhensible désolé.

    En faite a la place de "2", c'est un chiffre à saisir via le input, la difficulté est la (Partie 2 , calcul du shema)

    Ici c'est un champ a saisir ou je souhaite mes X derniers enregistrement (2 est un exemple) :


  12. #12
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 564
    Points : 2 399
    Points
    2 399
    Par défaut
    Via PHP après il faut récupérer la valeur de ton champ et le remplacer dans ta requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql_query("SELECT SUM(prix) 
    FROM (SELECT prix FROM client ORDER BY id DESC LIMIT ".intval($_POST['nb']).")")
    $_POST ou $_GET suivant la méthode utilisé par ton formulaire

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Merci à toi, j'avais essayé cette option mais je n'y suis pas arrivée, par contre il me faut bien une page qui me génère la récupération de mes montants choisi dans le champ "nb" non ??

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Voici mon code a l'heure actuelle qui fonctionne pour tous les prix :

    Ma calculette :

    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
     
     
     <script type="text/javascript">
    function calcul()
    {
     document.frm.pheurenom.value=Number(document.frm.heurenom.value)*Number(document.frm.c2.value);
     document.frm.prix.value=Number(document.frm.pheurenom.value)	/ Number(document.frm.c2b.value);
     
    }
    </script>
     
    -------------------------------
     
    <form name="frm" method="post" action="" onSubmit="return testsubmit()">
    <table width="100%" border="0">
    </p>
      <p>&nbsp;</p>
      <tr>
      <tr>
        <table width="100%" border="0" align="center" cellpadding="2" cellspacing="2">
     
          <tr align="center">
            <td width="39%" align="right">&nbsp;</td>
            <td width="1%" height="34" align="right">&nbsp;</td>
            <td width="9%" align="left"><input name="heurenom" type="text" style="font-size:17px; background: url(../img/fdinputbleu.png); border:0px;"onkeyup="calcul();" value="<?php echo($somme) ;?>" size="3" />
              &euro;
              <input name="c2" type="hidden" id="c2" value="21.3" /></td>
            <td width="3%" align="left"><strong>X</strong></td>
            <td width="6%" align="left">21,3 &euro; <strong>=</strong></td>
            <td width="42%" align="left"><input name="pheurenom" type="text"
      onkeyup="calcul();" value="" size="6" readonly="readonly" />
              <strong> /</strong> 100
              <input name="c2b" type="hidden" id="c2b" value="100" />
              <strong> =</strong></td>
          </tr>
          <tr align="center">
            <td align="right"><font color="red"><strong>TOTAL A PAYER :</strong></font></td>
            <td height="50" align="right">&nbsp;</td>
            <td colspan="4" align="left"><input name="prix" type="text" style="font-size:16px; background: url(../img/fdinputrouge.png); border:0px;"onkeyup="calcul();" value="" size="5" readonly="readonly" /></td>
    Celle-ci a l'heure actuelle fonctionne comme cela :
    Récupération de tous les champs "Prix" et les additionnes via cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    include('conf.php');	
     $requete=mysql_query("SELECT SUM(prix) FROM client");
    $donnee = mysql_fetch_array($requete);
    $somme=$donnee['SUM(prix)'];
    ?>

    Ma calculette récupère le total de prix et le met dans le 1er champ:



    Dans le second champ c'est la multiplication de x 21,3 € et ensuite je divise par 100

    Le dernier champ en rouge c'est le résultat de ce pourcentage que j'ai a payé.

    Tous cela sur la même page sans aucune validation juste un entrer dans le champ 1 pour que le calcul se fasse via JS.


    Voila un autre shema de ce que j'aimerai avoir :


  15. #15
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Ce que vous pouvez faire c'est récupérer les informations sur les fameux X derniers clients,remplir le tableau avec et ajouter une fonction javascript pour calculer en récupérant les montants dans le tableau lors du clic sur un bouton.

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Moi qui pensais avoir été clair décidement lol Désolé.

    Ce que vous pouvez faire c'est récupérer les informations sur les fameux X derniers clients,remplir le tableau avec et ajouter une fonction javascript pour calculer en récupérant les montants dans le tableau lors du clic sur un bouton.
    - 1/ je doit calculé la que je doit payé pour mes 4 derniers clients.

    - 2/ je saisie donc 4 dans le champ a saisir , et je valide.

    - 3/ la requête recherche les 4 derniers clients (ou ajouts), récupère le champs "Prix" de ces 4 client et les additionne et les additionne entre eux .

    - 4/ Ensuite je récupère ce montant que j'inclus dans ma calculette qui est faite.

    Si je saisie 5 il me fait pareil avec les 5 derniers client (ou ajouts) dans la base


    Voila j'espère avoir été plus clair j'avoue ne plus trop savoir comment expliqué.

  17. #17
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    include('conf.php');	
     $requete=mysql_query("SELECT SUM(prix) FROM client");
    $donnee = mysql_fetch_array($requete);
    $somme=$donnee['SUM(prix)'];
    ?>
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    include('conf.php');	
     $requete=mysql_query("SELECT SUM(prix) 
    FROM (SELECT prix FROM client ORDER BY id DESC LIMIT ".intval($_POST['nb']).");");
    $donnee = mysql_fetch_array($requete);
    $somme=$donnee['SUM(prix)'];
    ?>
    Et ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form method="post" action="#">
    <input type="text" name="nb"/>
    <br/>
    <input type="submit" value="Envoyer"/>
    </form>
    Dans le fichier HTML.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    Je te remercie de ton aide

    J'ai une erreur que je ne resoud pas :
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\www\pages\facturation2.inc.php on line 38
    La ligne 38 en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $donnee = mysql_fetch_array($requete);
    Merci de ton aide

  19. #19
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    Surement une erreur SQL, je n'ai pas vérifiée la requete j'ai pris celle de Seb33300.

    Par contre j'avais mis un guillemet en trop peut être que vous avez récupéré le bout de code avant que j'ai le temps d'éditer.

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 71
    Points : 17
    Points
    17
    Par défaut
    J'ai beau vérifié et recopié et recollé toujours la même erreur je ne vois pas ou cela cloche

    Ps: arrête de dire vous

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/03/2008, 21h03
  2. Mixage de deux requetes SQL
    Par Myogtha dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 05/11/2007, 12h59
  3. Requete SQL et affichage page
    Par hommefitness dans le forum ASP
    Réponses: 9
    Dernier message: 22/08/2007, 17h36
  4. [SQL] Mise en page d'un tableau oui/non
    Par Seb981 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 31/07/2007, 08h29
  5. [phpBB] 16 Requêtes SQL sur la page index
    Par Heptaeon dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 21/09/2006, 17h12

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