Forum de discussions pour les webmasters et les web developpeurs. (PHP, SQL, XHTML, JavaScript, Référencement, Positionnement,...)
Vous n'êtes pas identifié.
Re !
Alors voici le problème :
Ici, les informations ont été enregistrées dans la table CLIENTS.
J'ai fai une boucle de toutes les dates existantes dans la table DATES.
Elles s'afficheront donc en boucle selon ce code :
echo $jour_debut.' - '.$jour_fin.' : '.$prix_periode.' € <input type="checkbox" name="delete[]" value="'.$id_date.'"> <br /> ';
Donc ici, on a la belle liste de checkox.
Une fois la/les checkbox séléctionnées, on arrive sur une page : confirmation_reservation.php
Sur cette page, dès l'arrivée, les dates qui ont été cochées passent en " En attente " ( le statu )
Et une ou plusieur lignes ont été créées dans ta table RESERVER ( qui contient id_reserver id_client et id_date )
Ensuite j'affiche les id_date :
$teste=sizeof($delete);
foreach ($delete as $valeur){
echo " ".$valeur."<br/>";
...
}Où $valeur correspond aux id_date
J'ai donc ces id, par exemple 2 3 et 4
Comment faire dans cette boucle pour afficher jour_debut, jour_fin .. de ces id_date ?
Info des tables :
CLIENTS
DATES :
RESERVER :
Dernière modification par mic54800 (04-04-2008 23:54:05)
Hors ligne
Pour commencer tu peu récupérer tes dates avec cette requête:
SELECT jour_debut, jour_fin FROM Client,Dates,Reserver WHERE Client.id_client = Reserver.id_client AND Dates.id_date = Reserver.id_date AND Client.id_client = ID
Hors ligne
Bon voici la suite de mon problème :
J'ai cette boucle :
$teste=sizeof($delete);
foreach ($delete as $valeur){
$info_dates = mysql_query("SELECT * FROM DATES WHERE id_date='$valeur'");
while ( $info_dates_b = mysql_fetch_array($info_dates)) {
$jour_debut=$info_dates_b['jour_debut'];
$jour_fin=$info_dates_b['jour_fin'];
$prix=$info_dates_b['prix'];
}
}Je dois envoyer dans un E-mail jour_debut, $jour_fin et $prix autant de fois qu'ils éxistent.
J'aurais donc voulu intégrer cette boucle dans l'E-mail mais c'est impossible de couper le champ $email_client="..."; pour y intégrer une boucle !
Comment faire pour remédier à ce problème ?
Merci bien !!
Hors ligne
$teste=sizeof($delete);
$Dates='';
$Deja = false;
foreach ($delete as $valeur){
$info_dates = mysql_query("SELECT * FROM DATES WHERE id_date='$valeur'");
while ( $info_dates_b = mysql_fetch_array($info_dates)) {
$jour_debut=$info_dates_b['jour_debut'];
$jour_fin=$info_dates_b['jour_fin'];
$prix=$info_dates_b['prix'];
if($Deja) $Dates .= ' et';
$Dates .= ' du '.$jour_debut.'au'.$jour_fin;
$Deja = true;
}
}Normalement ça doit marcher avec ce code.
(Les dates sont des $Dates)
Hors ligne
Rooh nikel !!
Milles merci !!!!
Pourrais-tu juste m'expliquer le fonctionnement de ça :
if($Deja) $Dates .= ' et';
$Dates .= ' du '.$jour_debut.'au'.$jour_fin;Le if($Deja) ...
Je ne comprends pas comment il marche, mais je sais à quoi il sert ![]()
Hors ligne
En faite:
if($Deja) $Dates .= ' et';
C'est pour ajouter 'et' pour le premier passage dans la boucle.
$Deja est initialisé à fase et prend true à la fin de la premier la première boucle.
$Dates .= ' du '.$jour_debut.'au'.$jour_fin;
est égale à:
$Dates = $Dates.' du '.$jour_debut.'au'.$jour_fin;
Hors ligne
Ok dac, je m'en suis reservi ailleur de cette fonction, tout marche nikel maintenant !
Il me reste un dernier problème maintenant !
Si tu as besoin d'un soutient en image, mes tables sont en image au début de ce forum.
Donc j'ai besoin de récupérer grace à la table RESERVER les info de CLIENTS et DATES
Je n'arrive qu'à récupérer les id qui sont stockés dans la table RESERVER
Mais, avec ces id, il faudrait que je récupère les info cachées derrière ..
Et j'ai un petit soucis, je n'y arrive pas !
Je pense qu'il s'agit d'une résolution pas foreach mais je ne gère pas cette fonction !
Tu pourrais m'éclairer s'il te plait ?
Pour plus d'info ( si c'est pas clair ) demande des précisions !
Merci beaucoup !!
Hors ligne
Effectivement, j'étai pressé et j'me suis dit que si t'avais l'esprit tordu comme moi tu pouvais comprendre lol
Mais heureusement pour toi tu l'as pas lol
Donc j'ai fai un petit shema .. :
En fait, grace à la table RESERVER, j'ai un lien entre mes tables DATES et CLIENTS
Ensuite, dans la partie administration, il faudrait que j'affiche le contenu de CLIENTS et de DATES grâce à la table RESERVER
Donc pour le moment, j'arrive à afficher une boucle des id_reserver, id_clients et id_dates.
Il faut que j'affiche une boucle du contenu des tables DATES et CLIENTS
En fait, il faut que j'exploite l'id_dates et l'id_clients.
Tu comprends ?
Une boucle du contenu de DATES et CLIENTS grâce à la table RESERVER
Hors ligne
Tu peu tous récupérer avec un simple requête:
SELECT civilite_client, nom_client, ... FROM Client A, Dates B, Reserver C WHERE Client.id_client = Reserver.id_client AND Dates.id_date = Reserver.id_date
Avec ce type de requête tu récupères toutes les informations que tu à besoin. ![]()
Hors ligne
J'ai du mal a capter le code ![]()
J'ai essayé de l'adapter en faisant ce que je pense être correct mais ça ne doit pas être le cas ..
<?php
$requete=mysql_query("SELECT civilite_client, nom_client FROM CLIENTS, DATES, RESERVER WHERE CLIENTS.id_client = RESERVER.id_client AND DATES.id_date = RESERVER.id_date");
while($affiche=mysql_fetch_array($requete))
{
$id_client = $affiche['id_client'];
echo $id_client;
}
?>C'est quoi la/les grosse(s) erreur(s) là dedans ?
Hors ligne
Tu demandes à la BDD de sélectionner UNIQUEMENT les champs suivants : civilite_client, nom_client.
Mais dans la boucle de récupération, tu lui demande d'afficher l'id_client qui n'a pas été sélectionné dans ta requête.
De plus :
FROM clients a, dates b, reserver c
Le marquage en gras correspond aux champs renommés :
- plutôt que d'avoir à écrire lors des jointures (where tablea.x = tableb.z) en précisant a chaque fois le nom de la table utilisée (qui peut être relativement long et chiant à écrire, ex: latabledemesreves.idduclient = latablequiliemavieamondestin.iddureve) on renomme les tables (table1 renommée en a, et table2 renommée en b, ex : a.id = b.id).
Pour bien comprendre comment fonctionne les jointures :
http://www.phpdebutant.org/article117.php
Bonne journée.
Hors ligne
D'accord, j'ai donc essayé comme ça :
<?php
$requete=mysql_query("SELECT civilite_client, nom_client FROM CLIENTS A, DATES B, RESERVER C WHERE CLIENTS.id_client = RESERVER.id_client AND DATES.id_date = RESERVER.id_date");
while($affiche=mysql_fetch_array($requete))
{
$civilite = A.civilite_client;
echo $civilite;
}
?>Et même comme ça :
<?php
$requete=mysql_query("SELECT civilite_client, nom_client FROM CLIENTS A, DATES B, RESERVER C WHERE CLIENTS.id_client = RESERVER.id_client AND DATES.id_date = RESERVER.id_date");
while($affiche=mysql_fetch_array($requete))
{
$civilite = $affiche['civilite_client'];
echo $civilite;
}
?>Mais rien n'y fait .. j'avou avoir du mal à comprendre cette histoire !
Il n'y aurait pas moyen de me montrer un exemple qui marche en récupérant l'id_client et la table CLIENTS histoire que je comprenne comment coder ?
Avec les boucle while et tout .. ?
Merci de l'aide !!
Hors ligne
J'avoue m'être mal exprimé, voici un code qui devrait mieux fonctionner (en logique) :
<?php
$requete=mysql_query("SELECT id_client, civilite_client, nom_client FROM CLIENTS c, DATES d, RESERVER r WHERE r.id_client = r.id_client AND d.id_date = r.id_date");
while($affiche=mysql_fetch_array($requete))
{
echo $affiche['id_client'];
}
?>Hors ligne
Argument non valide en parlant de la requète ..
( php est bien connecté .. )
Je met ici un exemple simple :
<?php
$requete=mysql_query("SELECT id_client FROM RESERVER, CLIENTS WHERE RESERVER.id_client = CLIENTS.id_client");
while($affiche=mysql_fetch_array($requete))
{
echo $affiche['id_client'];
}
?>Je veux les id_client de la table CLIENTS .. rien ne marche .. galère !
J'ai essayé d'autres solutions .. rien ne marche :\
Il n'y aurait pas moyen d'avoir un exemple le plus simple possible en cherchant simplement civilite_client grace à la table RESERVER et CLIENTS ?
J'avou être largué, pourtant je pense que ça doit être facile ..
Hors ligne