Web Developpement

Forum de discussions pour les webmasters et les web developpeurs. (PHP, SQL, XHTML, JavaScript, Référencement, Positionnement,...)

Vous n'êtes pas identifié.

#1 04-04-2008 23:40:24

mic54800
Modérateur
Lieu: Brainville (54)
Date d'inscription: 04-04-2008
Messages: 58
Site web

Problèmes de boucle

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 :

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 :

Code:

$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
http://cust.er.free.fr/img/forum/CLIENTS.jpg

DATES :
http://cust.er.free.fr/img/forum/DATES.jpg

RESERVER :
http://cust.er.free.fr/img/forum/RESERVER.jpg

Dernière modification par mic54800 (04-04-2008 23:54:05)


Mic
~> Cust.er <~

Hors ligne

 

Liens utiles

#2 05-04-2008 00:15:24

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Problèmes de boucle

Pour commencer tu peu récupérer tes dates avec cette requête:

Code:

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

 

#3 15-04-2008 21:29:29

mic54800
Modérateur
Lieu: Brainville (54)
Date d'inscription: 04-04-2008
Messages: 58
Site web

Re: Problèmes de boucle

Bon voici la suite de mon problème :
J'ai cette boucle :

Code:

$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 !!


Mic
~> Cust.er <~

Hors ligne

 

#4 15-04-2008 21:44:23

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Problèmes de boucle

Code:

$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

 

#5 15-04-2008 22:16:41

mic54800
Modérateur
Lieu: Brainville (54)
Date d'inscription: 04-04-2008
Messages: 58
Site web

Re: Problèmes de boucle

Rooh nikel !!
Milles merci !!!!
Pourrais-tu juste m'expliquer le fonctionnement de ça :

Code:

    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 big_smile


Mic
~> Cust.er <~

Hors ligne

 

#6 15-04-2008 22:23:49

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Problèmes de boucle

En faite:

Code:

    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.

Code:

$Dates .= ' du '.$jour_debut.'au'.$jour_fin;

est égale à:

Code:

$Dates = $Dates.' du '.$jour_debut.'au'.$jour_fin;

Hors ligne

 

Liens utiles

#7 19-04-2008 00:37:13

mic54800
Modérateur
Lieu: Brainville (54)
Date d'inscription: 04-04-2008
Messages: 58
Site web

Re: Problèmes de boucle

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 !!


Mic
~> Cust.er <~

Hors ligne

 

#8 19-04-2008 01:06:02

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Problèmes de boucle

Pourrait tu mètre un peu de code pour illustrer ce que tu veux faire, ou expliquer un peux plus clairement:

J'ai pas vraiment compris ce que tu veux obtenir smile

Hors ligne

 

#9 19-04-2008 12:30:10

mic54800
Modérateur
Lieu: Brainville (54)
Date d'inscription: 04-04-2008
Messages: 58
Site web

Re: Problèmes de boucle

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 .. :
http://cust.er.free.fr/img/forum/SE_RESERVER.jpg
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


Mic
~> Cust.er <~

Hors ligne

 

#10 19-04-2008 13:16:30

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Problèmes de boucle

Tu peu tous récupérer avec un simple requête:

Code:

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. smile

Hors ligne

 

#11 20-04-2008 11:59:28

mic54800
Modérateur
Lieu: Brainville (54)
Date d'inscription: 04-04-2008
Messages: 58
Site web

Re: Problèmes de boucle

J'ai du mal a capter le code hmm
J'ai essayé de l'adapter en faisant ce que je pense être correct mais ça ne doit pas être le cas ..

Code:

<?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 ?


Mic
~> Cust.er <~

Hors ligne

 

#12 20-04-2008 13:11:47

Neo6
Modérateur
Lieu: Arras (62)
Date d'inscription: 25-02-2008
Messages: 112
Site web

Re: Problèmes de boucle

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.


-------------------------------
PHP or not
OhMyPix (soon)

Hors ligne

 

#13 20-04-2008 18:11:03

mic54800
Modérateur
Lieu: Brainville (54)
Date d'inscription: 04-04-2008
Messages: 58
Site web

Re: Problèmes de boucle

D'accord, j'ai donc essayé comme ça :

Code:

<?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 :

Code:

<?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 !!


Mic
~> Cust.er <~

Hors ligne

 

#14 20-04-2008 18:54:53

Neo6
Modérateur
Lieu: Arras (62)
Date d'inscription: 25-02-2008
Messages: 112
Site web

Re: Problèmes de boucle

J'avoue m'être mal exprimé, voici un code qui devrait mieux fonctionner (en logique) :

Code:

<?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'];
}
?>

-------------------------------
PHP or not
OhMyPix (soon)

Hors ligne

 

#15 20-04-2008 20:08:13

mic54800
Modérateur
Lieu: Brainville (54)
Date d'inscription: 04-04-2008
Messages: 58
Site web

Re: Problèmes de boucle

Argument non valide en parlant de la requète ..
( php est bien connecté .. )
Je met ici un exemple simple :

Code:

<?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 ..


Mic
~> Cust.er <~

Hors ligne

 

Pied de page des forums

Propulsé par PunBB & édité par Rudy Onfroy

Liens & partenaires