Navigation : Forums > Forum Général > tableaux complexes

Pages : 1 Poster un nouveau sujet Ajouter un message
Auteur Message
ostead

Messages : 38
Inscrit le : 02/11/2002
Posté le 08/05/2004 à 18:28:45 Message N°1 #
Bonsoir!

Quelqu'un aurait-il un bon lien vers une explication claire des tableaux avec PHP svp?

J'ai une instruction sql qui doit se répéter plusieurs fois, évidemment avec des instructions différentes.

Je pense donc stocker dans un tableau les instruction (ou plutôt leur valeurs, à savoir un WHERE du genre chiffre>=900 AND chiffre<930) afin de faire répéter ça pour différentes valeurs de chiffres, prises dans le tableau crée préalablement.

Voilà, si vous avez un bon lien ou même une petite idée, je suis preneur! :-)


Merci!
Profil Citer
loranger

Messages : 392
Inscrit le : 04/04/2002
Posté le 08/05/2004 à 22:54:56 Message N°2 #
Salut !

Tiens j'espère que ça pourra t'aider.
Sinon, la doc officielle pourra t'être aussi d'un grand secours.
Profil Citer
ostead

Messages : 38
Inscrit le : 02/11/2002
Posté le 10/05/2004 à 11:15:08 Message N°3 #
Merci beaucoup pour les liens!

Voilà donc ce que j'ai bricolé:


<?php

// constante
define ('C_open_tr_td', '<tr><td height="20" valign="top">');

define ('C_top_line','<img src="img/hours_fd_clair.gif" align="absmiddle"> &nbsp;
<font face=tahoma size=1>');

define ('C_no_line','<img src="img/hours_fd_trans.gif" width="6" height="20" align="absmiddle">');

define ('C_close_td_tr', '</td></tr>');






// début du tableau
echo '<table width="550" border="0" cellpadding="0" cellspacing="0" background="img/hours_fd.gif">'."n";
echo '
<tr>'."n".'
<td width="48" rowspan="23" valign="top"><img src="img/hours.gif" width="48" height="457"></td>'."n".'
<td width="550" height="17" valign="top"><img src="img/hours_fd_trans.gif" width="1" height="17"></td>
</tr>'."n";



$h1 = array("900","930","1000","1030","1100","1130",
"1200","1230","1300","1330","1400",
"1430","1500","1530","1600","1630",
"1700","1730","1800","1830","1900");
$h2 = array("930","1000","1030","1100","1130","1200",
"1230","1300","1330","1400","1430","1500",
"1530","1600","1630","1700","1730","1800",
"1830","1900","1930");

$k = key($h1);
$k2 = key($h2);

$val = current($h1);
$val2 = current($h2);

reset($h1);
reset($h2);

// requetes sql pour afficher les évènements dans le calendrier ce jour
$sql_evnt='SELECT id FROM cal_evnt WHERE date="'.$date_corrig.'"';

if($p = @mysql_query($sql_evnt,$c))
{
while ($row = mysql_fetch_array($p))
{
while(list ($k, $val) = each ($h1) AND list ($k2, $val2) = each ($h2))
{
echo C_open_tr_td;
$sql_evnt_heures='SELECT id,titre, heure FROM cal_evnt WHERE date="'.$date_corrig.'" AND heure>="'.$val.'" AND heure<"'.$val2.'"<br>';
if($p2 = @mysql_query($sql_evnt_heures,$c))
{
while ($r = mysql_fetch_array($p2))
{
echo C_top_line."n";
echo rect($r['heure'])."n";
echo $r["titre"]."n";
echo '</font>';
}
}
else
{
echo C_no_line;
}
}



}
}


echo '</table>'."n";

?>


Le problème c'est que cela ne me renvoit aucuns résultats. Ce fichier est en include. Le problème ne vient pas de la connection à la bdd, ni des données stockées dans la bdd... Je ne vois pas ou ça foire?

Avez-vous une idée?
Profil Citer
loranger

Messages : 392
Inscrit le : 04/04/2002
Posté le 10/05/2004 à 14:50:25 Message N°4 #
Heu...
Je sais pas ce que tu veux obtenir ni même à quoi ça sert
;-)

Je te conseille chaudement d'utiliser print_r
print_r($array);
qui permet d'afficher en un coup d' le contenu (et les index) d'un array.

Quand tu doutes de l'état d'un tableau, lance cette fonction dans ton code et tu auras un dump précis de ton tableau. Tips : Affiche la source de ta page -> l'indentation sera respectée et ton array plus lisible.
Profil Citer
ostead

Messages : 38
Inscrit le : 02/11/2002
Posté le 10/05/2004 à 18:10:43 Message N°5 #
C'est très cool cette fonction mais je ne vois pas comment l'utiliser pour faire ce que je veux faire: tout simplement afficher dans une requête sql les résultats des clés du tableaux, et ce tant qu'il y en a.
Je m'explique en gros voilà:

while (){
select ... from ... where clé 1 = $key array 1 AND clé 2 = $key array 2.
}

Vous pigez mieux ou pas? Des fois si vous voyez un moyen plus simple je suis ouvert à toutes propositions...... :cry: Je sais pas comment faire!

A +
Profil Citer
renaud

Messages : 321
Inscrit le : 10/05/2002
Posté le 10/05/2004 à 21:05:28 Message N°6 #
Je pense à un truc : un tableau associatif dont l'indice serait le nom de tes clés dans la table :
$tab = new array ("clé1" => "valeur 1" , ... , "clén" => "valeur n")[/quote] Après tu construs ta requête avec 1 foreach : [quote]$req = "SELECT ... FROM";
$cpt = 0;

foreach ($tab as $key => $value)
{
switch ($cpt)
{
case 0 :
{
$req .= "WHERE " . $key . " = " .$value . " ";
break;
}
default :
{
$req .= "AND " . $key . " = " .$value . " ";
}
}

$cpt++;
}
Mais bon il se peut que j'ai pas compris ce que tu veux et que je sois dans l'erreur ;-)
Profil Citer
ostead

Messages : 38
Inscrit le : 02/11/2002
Posté le 13/05/2004 à 13:30:47 Message N°7 #
Meci bcp à tous, c'est bon ça marche!

A + et bonne journée
Profil Citer

Navigation : Forums > Forum Général > tableaux complexes

Pages : 1 Poster un nouveau sujet Ajouter un message


Se rendre directement sur le forum :