[PHP] Agenda via MySQL: wat te doen?

Pagina: 1
Acties:
  • 187 views sinds 30-01-2008
  • Reageer

Onderwerpen


  • BlueAce
  • Registratie: November 2002
  • Laatst online: 09-01-2021
Hier spreken PHP / MySQL newb, hebben probleem met script. ;)

Ik ben bezig met een script dat: EN een agenda laat zien EN afspraken in die agenda laat zien. Dit alles via de volgende database structuur en (bijvoorbeeld) deze inhoud:

id | dag | maand | jaar | naam | tijd |
------------------------------------
1 | 08 | 08 | 2003 | Jantje Pietseren | 07:00 |
2 | 05 | 08 | 2003 | Dirkje Pietseren | 08:00 |
3 | 10 | 06 | 2003 | Hansje Pietseren | 09:00 |

... en de volgende php-code:

code:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<!-- AGENDA.PHP -->

<html>
<head>
<title>Agenda</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<center>
<center>
  <p class="head">Agenda</p>

<?php

// Ophalen van data
$host = "localhost";
$user = "blabla";
$pass = "blablblabla";
$dbname = "Agenda";
$tablename = "agenda";

$connection = mysql_connect ($host, $user, $pass);

$query = "SELECT dag,maand,jaar,naam,tijd FROM $tablename";
$result = mysql_db_query ($dbname, $query, $connection);

$Rij = mysql_fetch_array ($result);



// Maak de agenda
if ( (!$Maand) && (!$Jaar) ) {
    $Maand = date ("m");
    $Jaar = date ("Y");
    }

$Tijdstempel = mktime (0, 0, 0, $Maand, 1, $Jaar);
$MaandNamen = array(
    "Januari","Februari","Maart","April","Mei","April","Juni","Juli","Augustus");
$MaandNummer = date("n", $Tijdstempel);
$MaandNaam = $MaandNamen[$MaandNummer];
print ("<table width=300 border=0 cellspacing=0 cellpadding=0>
<tr><td colspan=7><center>$MaandNaam $Jaar</center></td></tr>
    <tr> 
      <td><b>Zo</b></td>
      <td><b>Ma</b></td>
      <td><b>Di</b></td>
      <td><b>Wo</b></td>
      <td><b>Do</b></td>
      <td><b>Vr</b></td>
      <td><b>Za</b></td>
    </tr>");
$MaandBegint = date("w", $Tijdstempel);
if ($MaandBegint == 0) {
    $MaandBegint = 7;
}
$LaatsteDag = date("d", mktime(0, 0, 0, $Maand+1, 0, $Jaar) );
$BeginDatum = -$MaandBegint;
for ($k = 1; $k <= 6; $k++) {
    print "\n<tr>";
    for ($i = 1; $i <= 7; $i++) {
        $BeginDatum++;
        if ( ($BeginDatum <= 0) || ($BeginDatum > $LaatsteDag) ) {
            print "<td>&nbsp</td>";
        } elseif ( ($BeginDatum >= 1) && ($BeginDatum <= $LaatsteDag) ) {
            print "<td>$BeginDatum";



            // Geef de afspraken weer
            if ( ($Jaar == $Rij[jaar]) && ($Maand == $Rij[maand]) && ($BeginDatum == $Rij[dag]) ) {
            print "<br>$Rij[naam]<br>$Rij[tijd]</td>\n";
            } else { print "<br>&nbsp</td>\n"; }




        }
    }
    print "</tr>";
}
print "</table>";


print "<p><form action=\"agenda.php\" method=get>
    Kies de maand die u wilt weergeven: 
<select name=Maand>
<option value=1>Januari</option>
<option value=2>Februari</option>
<option value=3>Maart</option>
<option value=4>April</option>
<option value=5>Mei</option>
<option value=6>Juni</option>
<option value=7>Juli</option>
<option value=8>Augustus</option>
<option value=9>September</option>
<option value=10>Oktober</option>
<option value=11>November</option>
<option value=12>December</option>
</select>
<select name=Jaar>
<option value=2003>2003</option>
<option value=2004>2004</option>
</select>
<input type=submit value=\"Verzenden\"></form>";
?>

</center>
</body>
</html>


Het enige probleem is (zoals je misschien al kunt zien): hij geeft alleen de afspraak weer bovenaan in de database. Wat hij dus zou moeten doen is kijken bij elke "gemaakte" dag of er een afspraak voor is en die printen.

Iemand enig idee welke aanpassingen ik moet maken? Alvast mega bedankt _/-\o_

[ Voor 19% gewijzigd door BlueAce op 14-08-2003 23:06 ]


Verwijderd

while ($rij=(mysql_fetch_array($result))) {
.......
}

Google: "mysql_fetch_array loop", eerste result.

  • BlueAce
  • Registratie: November 2002
  • Laatst online: 09-01-2021
Nou bedankt iig maar waar precies deze statement te zetten? Als k het neerzet bij "// Geef de afspraken weer" dan krijg ik in ieder geval geen resultaat. Domme vraag, simpel antwoord, i know...

[edit] Zo dus:

code:
1
2
3
4
5
6
            // Geef de afspraken weer
            while ($Rij=(mysql_fetch_array($result))) { 
            if ( ($Jaar == $Rij[jaar]) && ($Maand == $Rij[maand]) && ($BeginDatum == $Rij[dag]) ) {
            print "<br>$Rij[naam]<br>$Rij[tijd]</td>\n";
            } else { print "<br>&nbsp</td>\n"; } 
            }

[ Voor 46% gewijzigd door BlueAce op 14-08-2003 22:00 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik denk dat je het andersom moet doen, eerst de loop over je resultset en daarin pas de loop over je datums.
Als je dat niet wilt, zal je je resultset moeten resetten bij "// Geeft afspra...."
Je kan namelijk maar 1x door je result set heenlopen.
Zie http://lists.evolt.org/ar...-Mon-20020729/119668.html
Je moet dan dus mysql_data_seek() gebruiken.

Acties:
  • 0 Henk 'm!

Verwijderd

Wat mij opviel is dat je zoveel moeite doet met dit

PHP:
1
2
3
4
5
$Tijdstempel = mktime (0, 0, 0, $Maand, 1, $Jaar);
$MaandNamen = array(
    "Januari","Februari","Maart","April","Mei","April","Juni","Juli","Augustus");
$MaandNummer = date("n", $Tijdstempel);
$MaandNaam = $MaandNamen[$MaandNummer];


Om de naam van een maand in het Nederlands te krijgen (tenzij ik dat verkeerd zie ?)

Zelf zet ik altijd bovenaan mijn scripts:

PHP:
1
setlocale(LC_TIME, "Dutch");


En dit heeft altijd perfect gewerkt, misschien ook een ideetje voor jou?

Je moet dan echter wel ipv de date() functie de strftime() functie gebruiken, maar dat mag geen probleem zijn toch?

Zie ook: www.php.net/setlocale & www.php.net/strftime

[ Voor 21% gewijzigd door Verwijderd op 15-08-2003 09:41 ]


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
waarom heb je er trouwens voor gekozen om dag maand en jaar apart op te slaan en niet alles gewoon in een DATE() veld. Volgens mij maakt dit het alleen maar ingewikkelder....

Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
code:
1
while ($Rij=(mysql_fetch_array($result)))


waarom begin je na de = weer met een ( :?

code:
1
while ($Rij = mysql_fetch_array($result))

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
SWINX schreef op 15 augustus 2003 @ 12:36:
code:
1
while ($Rij=(mysql_fetch_array($result)))


waarom begin je na de = weer met een ( :?

code:
1
while ($Rij = mysql_fetch_array($result))
Dat is netter :)

volgens mij zou het zo moeten werken:
PHP:
1
2
3
4
5
6
// Geef de afspraken weer
if ( ($Jaar == $Rij[jaar]) && ($Maand == $Rij[maand]) && ($BeginDatum == $Rij[dag]) ) {
print "<br>$Rij[naam]<br>$Rij[tijd]</td>\n";
} else { 
print "<br>&nbsp</td>\n"; 
}


veranderen in:
PHP:
1
2
3
4
5
6
7
8
//Geef de afspraken weer
while ($Rij = mysql_fetch_array($result)) {
if ( ($Jaar == $Rij[jaar]) && ($Maand == $Rij[maand]) && ($BeginDatum == $Rij[dag]) ) {
print "<br>$Rij[naam]<br>$Rij[tijd]</td>\n";
} else { 
print "<br>&nbsp</td>\n"; 
}
}


je moet ook de eerste regel met '$Rij = mysql_fetch_array($result)' even weghalen.

offtopic:
ik zie een aantal keer <center> en </center> staan, volgens de nieuwe HTML standaard mag dit eigenlijk niet meer en moet je in plaats van <center> bijvoorbeeld <td align="center"> gebruiken... even een tabelletje eromheen dus :)

Acties:
  • 0 Henk 'm!

Verwijderd

sinds wanneer is haakjes rond een functie schrijven netter?! :)

het is geen prolog hoor

Acties:
  • 0 Henk 'm!

Verwijderd

Waarom gebruik je niet een kolom van het type date? Lijkt me stukken makkelijker met rekenen enzo.

edit: ow spuit 11

[ Voor 10% gewijzigd door Verwijderd op 15-08-2003 13:21 ]


Acties:
  • 0 Henk 'm!

  • BlueAce
  • Registratie: November 2002
  • Laatst online: 09-01-2021
Wat mij opviel is dat je zoveel moeite doet met dit
Aah das inderdaad handig, geen idee dat zoiets iets bestond. Kzal t wel eens proberen.
waarom heb je er trouwens voor gekozen om dag maand en jaar apart op te slaan en niet alles gewoon in een DATE() veld
Nou....
Hier spreken PHP / MySQL newb
Weet ik veel dat zoiets kan. Deze methode snap ik en werkt :)
volgens de nieuwe HTML standaard mag dit eigenlijk niet meer
... en KAN het ook niet meer? Beetje nutteloos om een tabel toe te gaan voegen lijkt me...

@ _BRAINLESS: Ik had in mn 2e reactie al verteld dat dit niet werkt :) Ik krijg alleen weer de datums en geen naam en tijd.

@ Bierdopje: Aah, wederom mijn vraag: zou je dit kunnen toelichten met een voorbeeld, ik kan niet zeggen dat ik er volledig wijs uit kom :)

Remind me om een beter PHP boek te kopen zeg, omg.... Bedankt iedereen iig! :)

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • BlueAce
  • Registratie: November 2002
  • Laatst online: 09-01-2021
Een directe nette vraag beantwoorden met een reference-database...... :s

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Ik reageerde op:
BlueAce schreef op 15 August 2003 @ 18:57:
Remind me om een beter PHP boek te kopen zeg, omg.... Bedankt iedereen iig! :)
En op www.php.net zijn erg goede tutorials te vinden :)

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Ik heb nog ergens een php-agenda op mijn schijf dwalen, multi user, beheer, multi-laguage enz. redlijk uit gebreid. ooit eens gedownload van sourforge.net

Missischien heb je er wat aan en kun je het als basis voor je eigen scripts gebruiken.

dump maar een bericht op mijn ICQ 146423250

Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
BlueAce schreef op 15 augustus 2003 @ 18:57:
quote: waarom heb je er trouwens voor gekozen om dag maand en jaar apart op te slaan en niet alles gewoon in een DATE() veld

Nou....

quote: Hier spreken PHP / MySQL newb
Kijk hier eens: Date and Time Functions
Die zullen je leven een stuk plezieriger maken :)

Acties:
  • 0 Henk 'm!

Verwijderd

Sorry ik ga niet de hele code voor je uit schrijven.
Zoek eerst maar eens in google voor wat voorbeelden.
PS: Ik heb nog nooit wat gedaan met PHP en MySql.....

Acties:
  • 0 Henk 'm!

  • nl2dav
  • Registratie: Juni 2001
  • Laatst online: 13-09 14:07
Waarom reageren als je a) niets gaat uitschrijven en b) nog nooit wat met PHP en MySQL hebt gedaan? Daar heeftie lekker veel aan! (edit: excuses, ik had niet gezien dat eerdere postings in dit topic ook van Bierdopje afkomstig waren)

Ik gebruik zelf deze kalenderopzet;

http://www.intranet2inter...lt.asp?PAGE=sscript&ID=18

En heb daarbij een extra MySQL gedeelte bij geschreven die gebruik maakt van de GoToDay variabele. Ik krijg nu netjes de afspraken per dag te zien en gesorteerd op tijd! (Dat is wat je wilde dacht ik?)

Het is nog wel US, maar ik zie hier geloof ik een oplossing voor, eens proberen :7

* Ohja bijna vergeten, in dat script zit een dubbele fout, je moet even tweemaal een width="100%" escapen door er width=\"100%\" van te maken.

[ Voor 23% gewijzigd door nl2dav op 19-08-2003 12:21 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

nl2dav schreef op 19 August 2003 @ 12:14:
Waarom reageren als je a) niets gaat uitschrijven en b) nog nooit wat met PHP en MySQL hebt gedaan? Daar heeftie lekker veel aan!
offtopic:
In veel gevallen, net zoals hier, is een taal volstrekt irrelevant, maar is de methodiek belangrijker c.q. het probleem.
Als je weet hoe je een probleem moet aanpakken, dan kan je zelf het probleem oplossen. Immers, niet ieder probleem hoeft uitgekauwd te worden met voorbeelden in de taal.
Er wordt netjes een methodiek geschetst hoe je het probleem kan oplossen.

[ Voor 9% gewijzigd door gorgi_19 op 19-08-2003 12:18 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1