aan alle goede dingen komt een eind, webmasterplein.net 2003 - 2013
wij danken jullie voor al mooie momenten die dankzij dit forum ontstonden - Derk, Rutger en Stef

Kalender

Je komt er niet helemaal uit bij het scripten? Übergoede functie geschreven? Alles met betrekking tot scripting, kun je hier terecht.

Kalender

Berichtdoor Weeeyaa » 23 jan 2009 19:15

Hallo,

Ik heb weer een probleempje, dit keer wat makkelijker op te lossen dan de vorige hoop ik!

Ik heb een kalender en een database met de velden datum_1, datum_2 en datum_3.
datum_1 is de dag (1, 2, 3...)
datum_2 is de maand (1, 2, 3...)
datum_3 is het jaar (2008, 2009...)

Ik probeer met de functie in_array() van elke datum die in de database staat ($gegevens) een link te maken in de kalender. Zie onderstaande code:
Code: Selecteer alles

    $query 
= mysql_query("SELECT datum_1 FROM kalender WHERE datum_2='$maand' AND datum_3='$jaar'");
    $gegevens = mysql_fetch_array($query);
    
//Voor iedere dag in de week gaan we nu een loopje beginnen!
foreach($dagen as $dag2)
{
    
    
//Welke weegdag is het?
    $dagindeweek = date('w', mktime(0,0,0,$maand,$dag2,$jaar));
            
    
//Als het 1 is (maandag) begint er een nieuwe rij!
    if($dagindeweek == 1)
    {
        echo '<tr>';
    } 
    
    
//Stel dat het toevallig dezelfde datum als vandaag is? Dan willen we een rood randje!
    if(($dag2 == date('j')) && ($maand == date('n')) && ($jaar == date('Y')))
    {
        echo '<td class="deze_dag">'; 
    
}else{
        echo '<td>'; 
    
}
    
    
//Stel dat de datum uit de database hetzelfde is als de datum in de maand    
    if(in_array($dag2, $gegevens))
    {
      echo '<a href="index.php?page=kalender">'.$dag2.'</a></td>';
    }else{
      echo ''.$dag2.'</td>';
    }
    
    
//Als het dag 0 is (zondag) willen we de rij eindigen!
    if($dagindeweek == 0)
    {
        echo '</tr>';
    }    
}
 


Wat er nu echter gebeurt is dat er slechts van een datum een link wordt gemaakt, ook als er drie activiteiten in de zelfde maand in de database staan.

Het originele script heb ik van hier.

Ik hoop dat jullie een beetje begrijpen wat de bedoeling is :P

Alvast bedankt,
Thijs
Avatar gebruiker
Weeeyaa
wmpr
 
Berichten: 2796
Geregistreerd: 10 jul 2004 07:39

Re: Kalender

Berichtdoor libia » 24 jan 2009 02:06

wat staat er in $gegevens? (doe eens een var_dump)
Avatar gebruiker
libia
wmpr
 
Berichten: 4149
Geregistreerd: 23 okt 2005 14:14
Woonplaats: Alphe!!

Re: Kalender

Berichtdoor Weeeyaa » 24 jan 2009 18:35

Hoi,

De uitkomst is de volgende:
array(2) { [0]=> string(2) "11" ["datum_1"]=> string(2) "11" }

Er gaat dus iets fout bij het maken van de $gegevens. Wie kan me helpen dit op te lossen? :P
nogmaals, m'n tabel ziet er als volgt uit:
| id | datum_1 | datum_2 | datum_3 |
| 1 | 1 | 1 | 2009 | -> een januari 2009
| 2 | 11 | 1 | 2009 | -> elf januari 2009
| 3 | 26 | 9 | 2009 | -> zesentwintig september 2009

Misschien doe ik iets fout bij het selecteren uit de database?

Groet,
Thijs
Avatar gebruiker
Weeeyaa
wmpr
 
Berichten: 2796
Geregistreerd: 10 jul 2004 07:39

Re: Kalender

Berichtdoor Derk » 24 jan 2009 20:07

Zo werkt fetch array helemaal niet. Je moet deze voor elke rij aanroepen. Blijkbaar is 11 jan de eerste ingevoerde datum in je database, en deze laat hij dus zien. Wat je kan doen is het volgende:
Code: Selecteer alles
while(list($dagmaand)=mysql_fetch_array($query))
{
$gegevens[]=$dagmaand;
}

in plaats van
Code: Selecteer alles
$gegevens = mysql_fetch_array($query);


Dan is $gegevens een array met alle dagen er in dat je wat hebt.
Afbeelding
Avatar gebruiker
Derk
Beheerder
Beheerder
 
Berichten: 12634
Geregistreerd: 27 nov 2003 19:50
Woonplaats: Houten

Re: Kalender

Berichtdoor Weeeyaa » 25 jan 2009 10:18

Hallo,

Bedankt! het werkt :)
Nu kan m'n website bijna online, kunnen jullie zien waar al die moeite goed voor was :P

Groetjes,
Thijs
Avatar gebruiker
Weeeyaa
wmpr
 
Berichten: 2796
Geregistreerd: 10 jul 2004 07:39

Re: Kalender

Berichtdoor Weeeyaa » 06 feb 2009 22:00

Nog een vraagje over die kalender:
ik heb een array met de getallen 01,02,03,04...10,11...20,...30

Nu wil ik dat elke voorgaande nul wordt weggepoetst (dus 01 wordt 1 en 10 blijft 10).

Wie kan mij helpen?

Alvast bedankt!

Groet,
Thijs
Avatar gebruiker
Weeeyaa
wmpr
 
Berichten: 2796
Geregistreerd: 10 jul 2004 07:39

Re: Kalender

Berichtdoor KillerSponge » 06 feb 2009 23:26

Gebeurt dat niet automagisch dan? PHP maakt zo heel leuk geen onderscheid tussen integers, strings, etc, dus op het moment dat je die (blijkbaar string), 'cast' naar een integer door er (int) voor te zetten, zou het moeten werken.

Dan krijg je dus dit:

Code: Selecteer alles
<?php
$nummer = '02';
echo (int)$nummer; //Output: 2
?>
Blabla en andere onzin - http://killersponge.nl
Avatar gebruiker
KillerSponge
Beheerder
Beheerder
 
Berichten: 14456
Geregistreerd: 24 aug 2004 13:05

Re: Kalender

Berichtdoor Weeeyaa » 07 feb 2009 17:44

Volgens mij wekt dat in ieder geval niet voor mijn doel.
Ik heb in de database dus staan 01, 02...
die voorafgaande nul is nodig zodat 11 niet voor 6 komt als er gesorteerd wordt.

De kalender waar het hier om gaat laat de dagen echter zien als 1, 2...

Hij maakt nu dus geen link omdat 01 niet gelijk is aan 1

De website kunnen jullie zien op: http://www.gvleonidas.nl
De kalender op de homepage en de kalender onder het kopje algemeen maken gebruik van dezelfde database. Als een datum onder algemeen->kalender staat is het de bedoeling dat er een link in de kalender op de homepage komt.

Bedankt!!

Thijs

Edit: Als tabeltype heb ik trouwens Varchar omdat bij Int die 0 sowieso al wordt weggehaald.
Avatar gebruiker
Weeeyaa
wmpr
 
Berichten: 2796
Geregistreerd: 10 jul 2004 07:39

Re: Kalender

Berichtdoor Weeeyaa » 07 feb 2009 18:16

Het selecteren uit de database gaat overigens al fout.
ik doe dit:
Code: Selecteer alles
    $query mysql_query("SELECT datum_1 FROM kalender WHERE datum_2='$maand' AND datum_3='$jaar'");
    while(list(
$dagmaand)=mysql_fetch_array($query))
    {
      
$gegevens[]=$dagmaand;
    } 


maar $maand is 1,2,3,4...
en datum_2 is 01,02,03...

Misschien dat dat (int) daarom al geen effect heeft omdat de array geen gegevens bevat...

Ik hoop dat jullie me kunnen helpen!

Groet
Avatar gebruiker
Weeeyaa
wmpr
 
Berichten: 2796
Geregistreerd: 10 jul 2004 07:39

Re: Kalender

Berichtdoor Remi » 07 feb 2009 18:21

Je kan altijd nog preg_replace gebruiken
$output = preg_replace('/^0{1,}([0-9]{1,}?)$/','$1',$input) ;
Avatar gebruiker
Remi
wmpr
 
Berichten: 3010
Geregistreerd: 04 apr 2006 15:22

Re: Kalender

Berichtdoor Derk » 07 feb 2009 20:50

Je probleem zit hem dus in de ifjes. Als je ervoor zorgt dat je vlak nadat je het uit de datbase haalt er een int van maakt, heb je dit probleem niet meer. Je kunt daarna als je dat wilt wel de nullen weer toevoegen.
Afbeelding
Avatar gebruiker
Derk
Beheerder
Beheerder
 
Berichten: 12634
Geregistreerd: 27 nov 2003 19:50
Woonplaats: Houten

Re: Kalender

Berichtdoor KillerSponge » 08 feb 2009 11:54

Ik snap het probleem niet helemaal... Als je met MySQL ordened zet hij gewoon netjes de 7 voor de 11 hoor :P
Blabla en andere onzin - http://killersponge.nl
Avatar gebruiker
KillerSponge
Beheerder
Beheerder
 
Berichten: 14456
Geregistreerd: 24 aug 2004 13:05

Re: Kalender

Berichtdoor Derk » 08 feb 2009 13:18

KillerSponge schreef:Ik snap het probleem niet helemaal... Als je met MySQL ordened zet hij gewoon netjes de 7 voor de 11 hoor :P

Hij heeft denk ik geen INT waarden in mysql maar tekst of varchar. Anders zouden die nullen er niet voor kunnen.
Afbeelding
Avatar gebruiker
Derk
Beheerder
Beheerder
 
Berichten: 12634
Geregistreerd: 27 nov 2003 19:50
Woonplaats: Houten

Re: Kalender

Berichtdoor Weeeyaa » 08 feb 2009 13:39

't was inderdaad stom van mij om niet voor het databasetype int te kiezen. Ik heb dit nu gedaan en warempel, het werkt :D

Nogmaals, jullie kunnen zien waar alle moeite goed voor was op www.gvleonidas.nl

Groet,
Thijs
Avatar gebruiker
Weeeyaa
wmpr
 
Berichten: 2796
Geregistreerd: 10 jul 2004 07:39


Keer terug naar PHP, ASP, SQL



cron