[php] 5 maal een lus, met daarin een lus

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Afijn, ik heb dus nu een redelijk gedeelte van een wedstrijdprogramma af.

Ik haal dus zeg maar de wedstrijden op van deze week tot en met over 5 weken. Ik pak dus de eerste dag van de week waar we in zitten, en vanaf daar tel ik 34 dagen bij, en alles wat daartussen valt , haal ik uit de database. Dit werkt reeds.

Nu wil ik dus per week een html tabel genereren met alle wedstrijden van die week. Dit moet dus een dubbele lus worden.

Tot nu toe bestaat mijn .php file uit de volgende paar regels (alleen de regels die van toepassing zijn dan):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
include "includes/functies.php"; 
$conn = connection(); 

$query = "SELECT wedstrijden.*, teams.teamnaam, clubs.clubnaam 
  FROM wedstrijden 
     INNER JOIN teams ON wedstrijden.teamid = teams.teamid 
     LEFT JOIN clubs ON wedstrijden.clubid = clubs.clubid 
  WHERE wedstrijden.datum BETWEEN 
        DATE_SUB(CURRENT_DATE, INTERVAL WEEKDAY(CURRENT_DATE) DAY) 
          AND 
        DATE_SUB(DATE_ADD(CURRENT_DATE, INTERVAL 34 DAY), 
           INTERVAL WEEKDAY(CURRENT_DATE) DAY) ORDER BY wedstrijden.datum"; 

$result = mysql_query($query, $conn) or die(mysql_error()); 

echo "<table width='100%' border='1' cellpadding='1' cellspacing='1' bordercolor='#333333'>". 
     "<tr bgcolor='#333333'>". 
     "<td colspan='6'> </td>". 
     "</tr>"; 

     while ($rij = mysql_fetch_array($result)) { 
    $datum = $rij[datum]; 
    $tijd = $rij[tijd]; 
    $jaar  = substr($datum,0,4);  
    $maand = substr($datum,5,2);  
    $dag   = substr($datum,8,2);  
    $uur   = substr($tijd,0,2); 
    $min   = substr($tijd,2,2); 
    $tijd  = $uur.".".$min; 
    $datum = $dag."-".$maand."-".$jaar; 
    if ($rij[uit]=="0") { 
            $thuis_uit = "Thuis"; 
    } 
    else { 
        $thuis_uit = "Uit"; 
    } 
    if ($rij[afgelast]=="1") { 
        $afgelast = "AFG"; 
    } 
    else { 
        $afgelast = ""; 
    } 
    if ($rij[beker]=="1") { 
        $soortwedstrijd = "Beker"; 
    } 
    elseif ($rij[vriendschappelijk]=="1") { 
        $soortwedstrijd = "Vriendschappelijk"; 
    } 
    else { 
        $soortwedstrijd = "Competitie"; 
    } 
    echo "<tr>". 
         "<td width='15%' class='programmacellen'>". 
         "$datum". 
         "</td>". 
         "<td class='programmacellen'>". 
         "Rood Zwart $rij[teamnaam] - $rij[clubnaam] $rij[team]". 
         "</td>". 
         "<td class='programmacellen'>". 
         "$tijd". 
         "</td>". 
         "<td class='programmacellen'>". 
         "$thuis_uit". 
         "</td>". 
         "<td class='programmacellen'>". 
         "$soortwedstrijd". 
         "</td>". 
         "<td class='programmacellen'>". 
         "$afgelast". 
         "</td>"; 
    } 

    echo  "</tr>". 
          "</table>";


Nu moet ik dus per week kijken welke wedstrijden er zijn. De tabel die om de while lus staat moet dus 5 keer gemaakt worden binnen een andere lus.

Hoe ga ik dit oplossen? Ik heb geen idee hoe ik nu per week de gegevens kan ordenen

[ Voor 16% gewijzigd door ACM op 01-06-2003 18:17 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

zoiets werkt wellicht:
PHP:
1
2
3
4
5
6
7
8
9
10
while(results ...)
{
  if(week_van_dit_record != week_van_vorig_record)
  {
      print("eind van vorige tabel");
      print("new tabel header");
  }

   verdere verloop van je programma.
}

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ACM schreef op 01 June 2003 @ 18:22:
zoiets werkt wellicht:
PHP:
1
2
3
4
5
6
7
8
9
10
while(results ...)
{
  if(week_van_dit_record != week_van_vorig_record)
  {
      print("eind van vorige tabel");
      print("new tabel header");
  }

   verdere verloop van je programma.
}
mja, ziet er goed uit, maar is niet helemaal waterdicht natuurlijk., of zie ik dat verkeerd?

het veld datum in de database is een date-veld. Kan ik nu met een functie van PHP dan de week eruit halen? Met MySQL query's weet ik dat het kan, maar hoe doe je dat dan met PHP?

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 01 June 2003 @ 18:26:
mja, ziet er goed uit, maar is niet helemaal waterdicht natuurlijk., of zie ik dat verkeerd?
Het is perfect waterdicht, maar gewoon incompleet.
het veld datum in de database is een date-veld. Kan ik nu met een functie van PHP dan de week eruit halen? Met MySQL query's weet ik dat het kan, maar hoe doe je dat dan met PHP?
Tuurlijk kan dat, er zijn een heleboel date-functies in php. Maar je kan ook heel simpel de weeknummers met je resultaten uit je mysql-query mee laten komen en die vergelijken in php...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ACM schreef op 01 juni 2003 @ 18:28:
[...]

Het is perfect waterdicht, maar gewoon incompleet.


[...]

Tuurlijk kan dat, er zijn een heleboel date-functies in php. Maar je kan ook heel simpel de weeknummers met je resultaten uit je mysql-query mee laten komen en die vergelijken in php...
De weeknummers... :) ik zal eens even kijken waar ik dat tussen moet voegen.. ff kijken op mysql.com

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
oke, het werkt :) ik heb dit stuk veranderd:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
echo "<table width='100%' border='1' cellpadding='1' cellspacing='1' bordercolor='#333333'>".
        "<tr bgcolor='#333333'>".
        "<td colspan='6'>&nbsp;</td>".
        "</tr>";

while ($rij = mysql_fetch_array($result)) {
    if ($rij[deweek]!=$vorigeweek) {
        $vorigeweek = $rij[deweek];
        echo "</tr>".
                         "</table>".
             "<br><br>".
             "<table width='100%' border='1' cellpadding='1' cellspacing='1' bordercolor='#333333'>".
             "<tr bgcolor='#333333'>".
                                     "<td colspan='6'>&nbsp;</td>".
             "</tr>";
    }
...
...


zoals je ziet, begint hij dus een tabel buiten de lus, en dan controlleer ik op de week, maar $vorigeweek is nog niet gevuld, dus hij sluit de tabel direct weer af.

Hoe zou ik dit op moeten lossen?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:26

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 01 juni 2003 @ 19:05:
oke, het werkt :) ik heb dit stuk veranderd:

... php code hier...

zoals je ziet, begint hij dus een tabel buiten de lus, en dan controlleer ik op de week, maar $vorigeweek is nog niet gevuld, dus hij sluit de tabel direct weer af.

Hoe zou ik dit op moeten lossen?
Je zou misschien $vorigeweek buiten de lus kunnen initialeren.. Misschien zelfs wel met de waarde van de eerste week die je ophaalt. Je zou ook nog kunnen kijken in je if of $vorige week wel een een waarde heeft.

Sorry hoor, maar heb je enigzins nagedacht over de code die je nu hebt met de vraag die je nu stelt? Want dit is wel heel erg simpel op te lossen door gewoon naar je code te kijken en even logisch na te denken.

[ Voor 37% gewijzigd door Creepy op 01-06-2003 19:16 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Creepy schreef op 01 juni 2003 @ 19:16:
[...]

Je zou misschien $vorigeweek buiten de lus kunnen initialeren.. Misschien zelfs wel met de waarde van de eerste week die je ophaalt. Je zou ook nog kunnen kijken in je if of $vorige week wel een een waarde heeft.

Sorry hoor, maar heb je enigzins nagedacht over de code die je nu hebt met de vraag die je nu stelt? Want dit is wel heel erg simpel op te lossen door gewoon naar je code te kijken en even logisch na te denken.
mja, ik had het al opgelost :) maar ik ben de hele dag al aan het scripten, dus ik ben er een beetje gaar van, en het probleem waar ik mee kwam was van een iets ander formaat naar mijn inziens :)

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:26

Creepy

Tactical Espionage Splatterer

Verwijderd schreef op 01 June 2003 @ 19:34:
[...]


mja, ik had het al opgelost :) maar ik ben de hele dag al aan het scripten, dus ik ben er een beetje gaar van, en het probleem waar ik mee kwam was van een iets ander formaat naar mijn inziens :)
$vorigeweek was nog niet gevuld geef je aan. Ik geef je aan hoe je dat op moet lossen (wat je dus zelf had kunnen bedenken). Dus welk iets ander formaat bedoel je precies?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Creepy schreef op 01 juni 2003 @ 21:05:
[...]

$vorigeweek was nog niet gevuld geef je aan. Ik geef je aan hoe je dat op moet lossen (wat je dus zelf had kunnen bedenken). Dus welk iets ander formaat bedoel je precies?
Ik bedoelde de vraag waar ik mee ben gekomen. 5 maal een tabel uitprinten die per tabel een week wedstrijddata laat zien..

maar ik heb een nieuw probleem:

ik kies uit een menu een team, ik stuur dat teamid mee : file.php?viewteamdata=$rij[teamid] op deze manier..

ni kom ik dus bij :

if ($viewteamdata) {
print layout
}

nu heb ik in die layout ook een prullenbakje waarmee ik de record kan verwijderen:

<a href=\"$php_selfe?del=".$rij[wedstrijdid]."\">

Nu ga ik dus naar :

if ($del) {
delete record
}

maar nu wil ik vanaf die $del weer een header sturen, zodat ik weer naar viewteamdata ga met het juiste team. Dit moet dus blijkbaar met globals, maar hoe pak ik dit aan? Ik krijg het niet werkend..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 01 juni 2003 @ 22:15:
[...]


...maar nu wil ik vanaf die $del weer een header sturen, zodat ik weer naar viewteamdata ga met het juiste team. Dit moet dus blijkbaar met globals, maar hoe pak ik dit aan? Ik krijg het niet werkend..
problem solved :)
Pagina: 1