Probleme de recuperation de données

cs_eric21000 Messages postés 13 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 27 novembre 2011 - 27 nov. 2011 à 10:57
cs_eric21000 Messages postés 13 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 27 novembre 2011 - 27 nov. 2011 à 15:16
Bonjour

Je récupère dans une table toutes mes randonnées.
Parfois elles sont classées par type (Plat, montagne ...)

je n'arrive pas a utiliser la variable pour récupérer le type de randonnée

Voici le script
$req = mysql_query("SELECT ridentifiant wid, .......
rtyid wtyid
FROM randonnee
where date_format(rdate,'%m')='11'
and date_format(rdate,'%Y')='2011'
order by rdate")
or die ("Erreur requete: ".mysql_error());

$req2 mysql_query("SELECT tynom wtynom from type_randonnee where tyid '". $donnee[wtyid]."'");


Puis
<?php if (strlen($donnee[wtyid]) > 0 ) { echo 'Type de parcours de prevu '; echo $donnee[wtyid] ; $result = mysql_fetch_array($req2); echo $result[wtynom];} ?>

Le echo echo $donnee[wtyid] fonctionne bien (il me sert de test ) mais le echo $result[wtynom]; ne ramène rien
J'ai surement une erreur de syntaxe mais je ne vois pas

Merci d'avance

14 réponses

TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 nov. 2011 à 12:11
Salut,

Est-ce que tu pourrais stp :
- Mettre la structure de ta table.
- Mettre tout ton code ayant un rapport avec le problème.

Parce que là avec si peu il est compliqué de t'aider.
0
cs_eric21000 Messages postés 13 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 12:23
SAlut

Rtyid int de 2 dans randonne et
Tyid int de 2 dans type_randonnee

et c'est la partie $result = mysql_fetch_array($req2); echo $result[wtynom];} ?> qui ne fonctionne pas

si je mets la valeur 1 dans la requête
$req2 mysql_query("SELECT tynom wtynom from type_randonnee where tyid '". $donnee[wtyid]."'");
a la place de '". $donnee[wtyid]."' cela fonctionne très bien
par contre le echo $donnee[wtyid] fonctionne très bien donc j'ai bien la valeur
<?php if (strlen($donnee[wtyid]) > 0 ) { echo 'Type de parcours de prevu '; echo $donnee[wtyid] ; $result = mysql_fetch_array($req2); echo $result[wtynom];} ?>
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 nov. 2011 à 12:34
Écoutes, ce n'est pas en donnant les infos au compte-gouttes que tu vas obtenir de l'aide. Soit tu met tout ce qu'il faut soit tu cherches tout seul dans ton coin, c'est toi qui vois. On te demande de décrite les tables que tu utilises ? Tu ne passe que le nom et le type de 2 champs au total alors qu'il y en a bien plus et tu n'explique pas la relation qu'il y a entre les deux tables. On te demande tout le code concerné ? Tu ne fais que donner une ligne de plus. Et en plus de ça le peu de code que tu passe est dans tous les sens, on dois jouer au puzzle pour remettre tout à sa place. Alors stp, cette fois met tout ce qu'il faut.
0
cs_eric21000 Messages postés 13 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 12:54
Désole pour le moanque d'info

type_randonnee
Commentaires sur la table: Type de randonnee ou de parcours

Colonne Type Null Défaut Commentaires
tyid int(2) Non
tynom varchar(25) Non

randonnee
Commentaires sur la table: table des randonnees

Colonne Type Null Défaut Commentaires
ridentifiant int(11) Non identifiant de la randonnee
rdate date Non
rnom varchar(50) Non
rdistance varchar(40) Oui NULL
rlieu varchar(40) Non
rville varchar(50) Non
rnomlien1 varchar(20) Oui NULL
rlien1 varchar(100) Oui NULL
rnomlien2 varchar(20) Oui NULL
rlien2 varchar(100) Oui NULL
rhoraire1 varchar(40) Oui NULL
rhoraire2 varchar(40) Oui NULL
rhoraire3 varchar(40) Oui NULL
rhoraire4 varchar(40) Oui NULL
rnomparcours1 varchar(100) Oui NULL
rlienparcours1 varchar(150) Oui NULL
rnomparcours2 varchar(100) Oui NULL
rlienparcours2 varchar(150) Oui NULL
rtyid int(2) Oui NULL lien avec Type de parcours tyid
rinscription int(1) Oui NULL 1 Groupe 2 Nbr de KM 3 Pas d'inscription
rnomlien3 varchar(100) Non
rlien3 varchar(100) Non
rinscrip1 varchar(15) Oui NULL
rinscrip2 varchar(15) Oui NULL
rinscrip3 varchar(15) Oui NULL
rinscrip4 varchar(15) Oui NULL
rinscrip5 varchar(15) Oui NULL

Le lien entre randonnée et type_radonnéée
de randonnée rtyid int(2) Oui NULL lien avec Type de parcours tyid (Présent ou non)
Tous les parcours n'ont pas obligatoirement un type.(cardinalité (0,1)


$req = mysql_query("SELECT ridentifiant wid,
rdate wdate,
rnom wnom ,
rdistance wdistance,
rlieu wlieu,
rville wville,
rlien1 wlien1,
rnomlien1 wnomlien1,
concat(rlien2,'?','wid=',ridentifiant) wlien2,
rnomlien2 wnomlien2,
rhoraire1 whoraire1,
rhoraire2 whoraire2 ,
rhoraire3 whoraire3 ,
rhoraire4 whoraire4 ,
rnomparcours1 wnomparcours1,
rlienparcours1 wlienparcours1,
rnomparcours2 wnomparcours2,
rlienparcours2 wlienparcours2,
rinscription winscrip,
rnomlien3 wnomlien3,
concat(rlien3,'?','wid=',ridentifiant) wlien3,
rinscrip1 inscrip1,
rinscrip2 inscrip2,
rinscrip3 inscrip3,
rinscrip4 inscrip4,
rinscrip5 inscrip5,
rtyid wtyid
FROM randonnee
where date_format(rdate,'%m')='11'
and date_format(rdate,'%Y')='2011'
order by rdate")
or die ("Erreur requete: ".mysql_error());

La requete que j'utilise pour recupérer les les randonnées



$req2 mysql_query("SELECT tynom wtynom from type_randonnee where tyid '". $donnee[wtyid]."'");

Le requete pour recuperer les types.


je recupere bien dans une boucle
while($donnee = mysql_fetch_array($req)){.....

L'ensemble des randonnées

Je vérifie si elle à un type dans ce cas je veux récuperer le type de randonnée

<?php if (strlen($donnee[wtyid]) > 0 ) { echo 'Type de parcours de prevu '; echo $donnee[wtyid] ; $result = mysql_fetch_array($req2); echo $result[wtynom];} ?>

Le echo de echo $donnee[wtyid] fonctionne bien.
Si la radonnée à un type j'ai le chiffre.

Par contre après l'execution de $result = mysql_fetch_array($req2); je n'ai pas le libelle du type de randonnée.
le echo $result[wtynom]; ne ramène rien.
Si je met une valeur fixe 1 par exemple dans le select cela fonctionne.

Vraiment désolé si je ne suis pas assez préçit

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 nov. 2011 à 13:52
Ok, super pour les infos sur la base de donnée. Cependant, poru ce qui est du php, tu n'as toujours pas mis totu le code nécessaire. Vu tes noms de variable il se peut qu'il y ait une erreur bête d'écrasement d'une variable apr une autre ou autre chose de ce genre, alors stp, met tout ton code concernant le sujet. Avec simplement les extraits que tu met il est impossible de déceler une grande partie des erreurs possibles.
0
cs_eric21000 Messages postés 13 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 14:04
Salut

Voici le code

// --- Entete html --- ?>
<html>
<head>
<style type= "text/css">
.style1 {
text-align: left;
border-style: solid;
border-width: 1px;
}
.style2 {
border-width: 0px;
}
.style3 {
font-family: "Courier New";
}
</style>
</head>

Novembre 2011



Les RDV de ce mois




</html>

<?php


function Date_ConvertSqlTab($date_sql) {
$jour = substr($date_sql, 8, 2);
$mois = substr($date_sql, 5, 2);
$annee = substr($date_sql, 0, 4);
$heure = substr($date_sql, 11, 2);
$minute = substr($date_sql, 14, 2);
$seconde = substr($date_sql, 17, 2);

$key = array('annee', 'mois', 'jour', 'heure', 'minute', 'seconde');
$value = array($annee, $mois, $jour, $heure, $minute, $seconde);

$tab_retour = array_combine($key, $value);

return $tab_retour;
}

function DateMoisTxt($mois_brut) {
if($mois_brut=='01') {
return 'Janvier';
} elseif($mois_brut=='02') {
return 'Février';
} elseif($mois_brut=='03') {
return 'Mars';
} elseif($mois_brut=='04') {
return 'Avril';
} elseif($mois_brut=='05') {
return 'Mai';
} elseif($mois_brut=='06') {
return 'Juin';
} elseif($mois_brut=='07') {
return 'Juillet';
} elseif($mois_brut=='08') {
return 'Août';
} elseif($mois_brut=='09') {
return 'Septembre';
} elseif($mois_brut=='10') {
return 'Octobre';
} elseif($mois_brut=='11') {
return 'Novembre';
} elseif($mois_brut=='12') {
return 'Décembre';
};
}

function DateJourTxt($jour_brut) {
if($jour_brut=='Mon') {
return 'Lundi';
} elseif($jour_brut=='Tue') {
return 'Mardi';
} elseif($jour_brut=='Wed') {
return 'Mercredi';
} elseif($jour_brut=='Thu') {
return 'Jeudi';
} elseif($jour_brut=='Fri') {
return 'Vendredi';
} elseif($jour_brut=='Sat') {
return 'Samedi';
} elseif($jour_brut=='Sun') {
return 'Dimanche';
};
}

function DateComplete($date_sql) {
$tab_date = Date_ConvertSqlTab($date_sql);
$mktime_brut = mktime($tab_date['heure'],
$tab_date['minute'],
$tab_date['seconde'],
$tab_date['mois'],
$tab_date['jour'],
$tab_date['annee']);

return DateJourTxt(date('D', $mktime_brut)).' '.$tab_date['jour'].' '.DateMoisTxt(
date('m', $mktime_brut)).' '.$tab_date['annee'];
}

// EXEMPLE //
//echo DateComplete('2008-04-18 10:52:48');
?>
<?php // --- Fin Entete html ---


// Requête pour prendre tout les messages
$req = mysql_query("SELECT ridentifiant wid,
rdate wdate,
rnom wnom ,
rdistance wdistance,
rlieu wlieu,
rville wville,
rlien1 wlien1,
rnomlien1 wnomlien1,
concat(rlien2,'?','wid=',ridentifiant) wlien2,
rnomlien2 wnomlien2,
rhoraire1 whoraire1,
rhoraire2 whoraire2 ,
rhoraire3 whoraire3 ,
rhoraire4 whoraire4 ,
rnomparcours1 wnomparcours1,
rlienparcours1 wlienparcours1,
rnomparcours2 wnomparcours2,
rlienparcours2 wlienparcours2,
rinscription winscrip,
rnomlien3 wnomlien3,
concat(rlien3,'?','wid=',ridentifiant) wlien3,
rinscrip1 inscrip1,
rinscrip2 inscrip2,
rinscrip3 inscrip3,
rinscrip4 inscrip4,
rinscrip5 inscrip5,
rtyid wtyid
FROM randonnee
where date_format(rdate,'%m')='11'
and date_format(rdate,'%Y')='2011'
order by rdate")
or die ("Erreur requete: ".mysql_error());


$req2 mysql_query("SELECT tynom wtynom from type_randonnee where tyid '". $donnee[wtyid]."'");
// $req2 mysql_query("SELECT tynom wtynom from type_randonnee where tyid '1'");

// On prend toutes les valeurs de la requete pour les mettre dans un tableau fetch_array en boucle while
if(mysql_num_rows($req) <1){ echo 'Pas de randonnee ce mois';
}
else{


while($donnee = mysql_fetch_array($req)){
// Sortie du résultat ?>




<td align= "left">


<?php echo $donnee[wnom]; ?>


<?php echo ($donnee[wdistance]); ?>


<?php echo ($donnee[wlieu]); ?>


<?php echo ($donnee[wville]); ?>



<?php if (strlen($donnee[wtyid]) > 0 ) { echo 'Type de parcours de prevu '; echo $donnee[wtyid] ; $result = mysql_fetch_array($req2); echo $result[wtynom];} ?>


<?php echo ' ['.$donnee['wlien1'].' '.$donnee['wnomlien1'].']';?>





<?php echo ' ['.$donnee['wlien2'].' '.$donnee['wnomlien2'].']';?>


<td align="left"> <gras>Le(s) horaire(s) de depart



<?php echo ($donnee[whoraire1]); ?>


<?php echo ($donnee[whoraire2]); ?>


<?php echo ($donnee[whoraire3]); ?>


<?php echo ($donnee[whoraire4]); ?>





<?php if (strlen($donnee[wnomparcours1]) > 0 ) { echo 'Le parcours du Groupe 1'; echo '
';} ?>

<?php echo ' ['.$donnee['wlienparcours1'].' '.$donnee['wnomparcours1'].']';?>

<?php if (strlen($donnee[wnomparcours1]) > 0 ) { echo '

';} ?>
<?php if (strlen($donnee[wnomparcours2]) > 0 ) { echo 'Le parcours du Groupe 2'; echo '
';} ?>

<?php echo ' ['.$donnee['wlienparcours2'].' '.$donnee['wnomparcours2'].']';?>




<?php switch ($donnee[winscrip]) {
case 3:
echo(' Pas d inscription

');
break;
case 2:

echo ' ['.$donnee['wlien3'].' '.$donnee['wnomlien3'].']';
break;
case 1:
echo ' ['.$donnee['wlien3'].' '.$donnee['wnomlien3'].']';
}
?>
</td>







<?php
// On ferme la connexion à MySQL
@mysql_close();
}

//On ferme la boucle while et le else pour si la base de donnée est vide
}
?>
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 nov. 2011 à 14:19
Et bien voila !

Comme on peux enfin le constater, au moment où tu fais te seconde requête, $donnee n'est pas initialisée. Il faut que tu fasses cette seconde requête dans la boucle et non pas avant.
0
cs_eric21000 Messages postés 13 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 14:30
Désolé je n'ai pas compris
la valeur de $donnee[wtyid] que j'affiche dans un echo est bien initialisé car elle afiche 1

ce que m’affiche la page Type de parcours de prevu 1
Ainsi que toute les autres valeur de $donnee
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 nov. 2011 à 14:33
la valeur de $donnee[wtyid] que j'affiche dans un echo est bien initialisé car elle afiche 1

Tout dépends de l'endroit où est fait ton echo.
0
cs_eric21000 Messages postés 13 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 14:36
echo 'Type de parcours de prevu '; echo $donnee[wtyid] ; $result = mysql_fetch_array($req2); echo $result[wtynom];} ?>
juste avant de faire la requête $result
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 nov. 2011 à 14:44
Oui, et le problème c'est que ta requête n'est pas faite à cet endroit là. Elle est fait bien avant la boucle. Il te suffis de déplacer cette requête juste là où tu fais ton echo et ce sera bon.
0
cs_eric21000 Messages postés 13 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 14:51
Je suis extrêmement novice en PHP
Et la je ne vois pas comment faire

Et vraiment un grand merci pour ton aide
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
27 nov. 2011 à 15:09
Ceci :
$req2 mysql_query("SELECT tynom wtynom from type_randonnee where tyid '". $donnee[wtyid]."'");

Tu l'enlève de là où il est et tu le met là juste avant cela :
$result = mysql_fetch_array($req2);
0
cs_eric21000 Messages postés 13 Date d'inscription mercredi 16 avril 2008 Statut Membre Dernière intervention 27 novembre 2011
27 nov. 2011 à 15:16
Ok merci
C'est bien ce que j'avais fait mais j'avais oublié require('db.php');
Donc pas de connexion

Un grand merci pour ton aide

@+
0