Avatar billede allandk Nybegynder
18. juni 2013 - 15:28 Der er 7 kommentarer og
1 løsning

Hjælp ønskes til to løkker, der driller...

Jeg har en: tæl 1-5 løkker for hvert tal ønsker jeg at der smides et resultat fra en tidligere query og for hvert af de resultater ønsker jeg endnu en query smidt i en dropdown.

Det virker NÆSTEN.

...
for($day=1; $day<=5; $day++)
{
while ($menurow=mysql_fetch_array($menuresult2)) {
$dage_ugedage=$menurow["dage_ugedage"];
$dage_datoer=$menurow["dage_datoer"];
$dage_retter=$menurow["dage_retter"];
?>
<tr>
<td width="200"><?php echo ucfirst($dage_ugedage); ?><input name="dato[<?php echo $day; ?>]" id="dato[<?php echo $day; ?>]" type="text" value="<?php echo $dage_datoer; ?>" readonly="true" /></td>
<td width="30">
<select name="course[<?php echo ucfirst(utf8_encode($dage_retter)); ?>]" id="course[<?php echo ucfirst(utf8_encode($dage_retter)); ?>]">
<?php foreach($menuresult_array1 as $menuresult1): ?><?php if($menuresult1 == $dage_retter) { ?>
<option value="<?php echo ucfirst(utf8_encode($menuresult1)); ?>" selected="selected"><?php echo ucfirst(utf8_encode($menuresult1)); ?></option>
<?php } else {?>
<option value="<?php echo ucfirst(utf8_encode($menuresult1)); ?>"><?php echo ucfirst(utf8_encode($menuresult1)); ?></option>
<?php } ?><?php endforeach; ?>
</select>
</td></tr>
<?php
}
}
...

Problemet er: dato[<?php echo $day; ?>] der alle får værdien 1 og ikke 1-5.

Hvis jeg rykker for-løkken en tak ned, tæller den fint, men så henter mit tidligere queryresult også fem gange og jeg får en monsterstor udskrivning.

Hvad kan jeg gøre anderledes?
Avatar billede michael_stim Ekspert
18. juni 2013 - 16:28 #1
$day=1;
while(.....){
  //Alt din kode
  ...
  ...
  $day++;
}

Det eneste du bruger din for-løkke til, er jo at tælle.
Avatar billede allandk Nybegynder
18. juni 2013 - 17:44 #2
... men jeg vil gerne have at den fra fra 1 til 5 og ikke længere. Skal der så ikke en betingelse ind ($day<=5)?
Avatar billede michael_stim Ekspert
18. juni 2013 - 18:15 #3
Kan du ikke tage den i din sql med limit 5?
Avatar billede michael_stim Ekspert
18. juni 2013 - 18:18 #4
Ellers er det bare en condition mere i din while sammen med &&.
Avatar billede allandk Nybegynder
18. juni 2013 - 18:34 #5
Jeg kender ikke syntaksen, kan du give mig en sætning?
Avatar billede michael_stim Ekspert
19. juni 2013 - 16:03 #6
1. I din SQL, SELECT * FROM... LIMIT 5
2. I din while, while ($menurow=mysql_fetch_array($menuresult2) && $day < 6) {

Noget á la det. Du skal kun bruge én af dem.
Avatar billede allandk Nybegynder
26. juni 2013 - 22:34 #7
Det virker tilsyneladende heller ikke.

Kan du vise mig hvor:

...
$menuquery2="SELECT * FROM minskolebod_dage WHERE dage_datoer BETWEEN '$monday' AND '$friday'";
$menuresult2 = mysql_query($menuquery2) or die ("Query to get data failed: ".mysql_error());
if (mysql_num_rows($menuresult2) > 0) { 

// 1. I din SQL, SELECT * FROM... LIMIT 5
// 2. I din while, while ($menurow=mysql_fetch_array($menuresult2) && $day < 6) {

$result_array2 = array();
while ($menurow2 = mysql_fetch_array($menuresult2))
{
    //$menuresult_array2[] = $menurow2[0];
    $dage_ugedage=$menurow2["dage_ugedage"];
    $dage_datoer=$menurow2["dage_datoer"];
    $dage_retter=$menurow2["dage_retter"];   
}

?>

<form action="admin.php?side=addWeekPlan&week_no=<?php echo $week_number; ?>" method="post" name="updateweekplan"> 
<table>
    <thead>
    <tr>
        <th width="80">DAGE</th>
        <th>RETTER</th>
    </tr>
    </thead>
    <tbody>
<?php
for($day=1; $day<=5; $day++) {

/*
foreach($menuresult_array2 as $menuresult2):
//echo $day;
echo ucfirst(utf8_encode($menuresult2));
endforeach;
*/

//$day=1;   
//while (($menurow=mysql_fetch_array($menuresult2)) && ($day=1; $day<=5; $day++)) {
//while (($menurow=mysql_fetch_array($menuresult2)) && $day < 6) {
//while ($menurow2 = mysql_fetch_array($menuresult2)) {
//$dage_ugedage=$menurow["dage_ugedage"];
//$dage_datoer=$menurow["dage_datoer"];
//$dage_retter=$menurow["dage_retter"];   
//echo $day;
?>
<tr>
<td width="80"><?php echo ucfirst($dage_ugedage); ?><input name="dato[<?php echo $day; ?>]" id="dato[<?php echo $day; ?>]" type="hidden" value="<?php echo $dage_datoer; ?>" readonly="true" /></td>
<td>
<select name="course[<?php echo $day; ?>]" id="course[<?php echo $day; ?>]">
<?php foreach($menuresult_array1 as $menuresult1): ?><?php if($menuresult1 == $dage_retter) { ?>
<option value="<?php echo ucfirst(utf8_encode($menuresult1)); ?>" selected="selected"><?php echo ucfirst(utf8_encode($menuresult1)); ?></option>
<?php } else {?>
<option value="<?php echo ucfirst(utf8_encode($menuresult1)); ?>"><?php echo ucfirst(utf8_encode($menuresult1)); ?></option>
<?php } ?><?php endforeach; ?>
</select>
</td></tr>
<?php
//}
} //include 'closedb.php';
?>
    </tbody>
</table>
<p></p>
<input type="submit" name="updateweekplan" id="updateweekplan" value="Opdatér uge <?php echo $week_number . ' - ' . $mondaykort . ' - ' . $fridaykort; ?>" class="full-width" />
</form>

<?php
}
...
Avatar billede allandk Nybegynder
02. juli 2013 - 18:11 #8
Jeg går efter en anden løsning. Tak for bidrag.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester