Toon posts:

[PHP]Agenda Probleem

Pagina: 1
Acties:
  • 152 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik ben bezig met een agenda in PHP, waar mensen zich ziek kunnen melden of verlof kunnen plannen. Nu wil ik dat als ze bijvoorbeeld op vakantie gaan en dus 2 weken vrij moeten nemen dat ze dat aan kunnen geven en dat er dan op elke dag in die 2 weken staat dat ze afwezig zijn.
Dit is het formulier waar ze dat mee kunnen doen:

Afbeeldingslocatie: http://img97.imageshack.us/img97/391/formulierxs4.jpg

Als ze op toevoegen drukken gebeurt er dit
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
<?php
include ("formulier.php");

    // afhandelen
    if(isset($_POST['submit'])) {
        if(empty($_POST)) {
            echo '<fieldset><legend>Fouten:</legend><font color="red">Errror! Je hebt niet alle verplichte waardes ingevuld!</font></fieldset>';
        }

        
        $postdatum = "".$_GET['dag']."-".$_GET['maand']."-".$_GET['jaar']."";

        ?>

        <?php
        $id = $_POST['id'];
        $omschrijving = $_POST['omschrijving'];
        $door = $_POST['door'];
        $sql = mysql_query("INSERT INTO `kalender` ( `id` , `omschrijving` , `door` , `datum`) VALUES ('$id', '$omschrijving', '$door', '$postdatum'") or die(mysql_error());
        echo '<font color="green">De afspraak is succesvol toegevoegd.</font>';
}
        }
    }
}
?>


Nu voegt ie het dus maar 1 keer toe, en dat op de dag die geselecteerd is.
Hoe krijg ik het zodat hij het elke dag toevoegt binnen de opgegeven periode?

  • messi
  • Registratie: Oktober 2001
  • Laatst online: 05:28
Maak een veld date_from en een veld date_to , met andere woorden 2 velden voor de begin en eind data. Of je maakt nog een veld met het aantal dagen dat deze afspraak geld.

Onze excuses voor het ontbreken van de ondertiteling.


Verwijderd

door een lus te bouwen die elke dag afgaat een een record toevoegt....vrij standaard, lijkt me
Let wel op feest en weekenddagen, die zou je eigenlijk moeten overslaan.

Verwijderd

Topicstarter
messi schreef op maandag 11 september 2006 @ 12:00:
Maak een veld date_from en een veld date_to , met andere woorden 2 velden voor de begin en eind data. Of je maakt nog een veld met het aantal dagen dat deze afspraak geld.
ik heb dat al gedaan maar heb ze periode1 en periode2 genoemd.
maar als ik die in de mysql query zou toevoegen dan zou die alsnog alleen dat opslaan en niet op de genoemde data's en ertussen in de afspraak toevoegen.
En dat is dus het hele probleem

  • wolly_a
  • Registratie: September 2002
  • Niet online
Zoals FFrenzy zegt, een lusje maken. Ik heb het in een hobbyprojectje als eens zo opgelost:

$datum = $startdatum;

while ($datum != $totdatum) {
$query = "INSERT INTO planning (blablablabla) VALUES ('$blabla', '$blabla')";
$resultaat = mysql_query($query) or die ("query mislukt");

$dag = substr($datum, 0, 2);
$maand = substr($datum, 3, 2);
$jaar = substr($datum, 6, 4);
$dag++;
$datum = date ("d-m-Y", mktime (0,0,0,$maand,$dag,$jaar));
}

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

ot

Zou je je postdatum gewoon niet beter opslaan in time()? Dan kan je er naderhand nog alles mee doen

Going for adventure, lots of sun and a convertible! | GMT-8


Verwijderd

Topicstarter
Snake schreef op maandag 11 september 2006 @ 12:08:
ot

Zou je je postdatum gewoon niet beter opslaan in time()? Dan kan je er naderhand nog alles mee doen
wat bedoel je?

trouwens:
code:
1
2
3
4
5
6
7
$postdatum = "".$_GET['dag']."-".$_GET['maand']."-".$_GET['jaar']."";

$id = $_POST['id'];
        $omschrijving = $_POST['omschrijving'];
        $door = $_POST['door'];
        $sql = mysql_query("INSERT INTO `kalender` ( `id` , `omschrijving` , `door` , `datum`) VALUES ('$id', '$omschrijving', '$door', '$postdatum'") or die(mysql_error());
        echo '<font color="green">De afspraak is succesvol toegevoegd.</font>';


hij voegt het dus toe op postdatum....en dat is gewoon de datum die geselecteerd is

[ Voor 53% gewijzigd door Verwijderd op 11-09-2006 12:16 ]


  • Andre-85
  • Registratie: April 2003
  • Niet online

Andre-85

Sid

Snake schreef op maandag 11 september 2006 @ 12:08:
ot

Zou je je postdatum gewoon niet beter opslaan in time()? Dan kan je er naderhand nog alles mee doen
Wanneer je een datum als unix timestamp (het resultaat van time() ) als int in mysql opslaat, kan je de date en time functies van mysql niet meer gebruiken terwijl deze juist erg handig zijn ;) wil je in je php aplicatie gebruik wilt maken van bijvoorbeeld de date() en time() functies kan je de mysql functies UNIX_TIMESTAMP en FROM_UNIXTIME gebruiken.
Verwijderd schreef op maandag 11 september 2006 @ 12:05:
[...]

ik heb dat al gedaan maar heb ze periode1 en periode2 genoemd.
maar als ik die in de mysql query zou toevoegen dan zou die alsnog alleen dat opslaan en niet op de genoemde data's en ertussen in de afspraak toevoegen.
En dat is dus het hele probleem
Dat is toch geen probleem? Je weet een begin datum en een einddatum, alle tussen liggende datums zijn dan ook bezet, dat hoeft helemaal niet in je tabel komen te staan...

[ Voor 32% gewijzigd door Andre-85 op 11-09-2006 12:23 ]

Lorem
Whenever we feel the need to comment something, we write a method instead. - Martin Fowler
People who think they know everything really annoy those of us who know we don't - Bjarne Stroustrup


Verwijderd

Topicstarter
Andre-85 schreef op maandag 11 september 2006 @ 12:21:
Dat is toch geen probleem? Je weet een begin datum en een einddatum, alle tussen liggende datums zijn dan ook bezet, dat hoeft helemaal niet in je tabel komen te staan...
maar hij moet het ook posten op elke datum
Dus als je vakantie neemt van 11-09-2006 tot 18-09-2006, moet er op elke tussenliggende datum staan dat je op afwezig bent.

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

De functie die bepaald of een datum 'bezet' is of niet kan toch kijken of de einddatum groter is dan de datum die op dat moment weergegeven moet worden ?

pseudocode:
code:
1
2
3
4
5
if (displaydate >= date_from && displaydate < date_to) {
  bezet
} else {
 niet bezet
}

[ Voor 8% gewijzigd door TheRookie op 11-09-2006 13:37 . Reden: code tag ]


Verwijderd

Topicstarter
TheRookie schreef op maandag 11 september 2006 @ 13:36:
De functie die bepaald of een datum 'bezet' is of niet kan toch kijken of de einddatum groter is dan de datum die op dat moment weergegeven moet worden ?

pseudocode:
code:
1
2
3
4
5
if (displaydate >= date_from && displaydate < date_to) {
  bezet
} else {
 niet bezet
}
Het gaat er niet om of het bezet is of niet. Er kunnen zoveel afspraken gemaakt worden op een dag alsdat ze zelf willen. Het gaat erom dat op elke tussenliggende datum de afspraak weergeven moet worden.

Verwijderd

Verwijderd schreef op maandag 11 september 2006 @ 13:39:
[...]
Het gaat er niet om of het bezet is of niet. Er kunnen zoveel afspraken gemaakt worden op een dag alsdat ze zelf willen. Het gaat erom dat op elke tussenliggende datum de afspraak weergeven moet worden.
Even aannemende dat je een begin en einddatum opneemt in je tabel, dus iedere entry maar 1 keer toevoegt, dan kun je met de volgende SQL alle afspraken voor die ene dag ophalen.
[begindatum selectie] en [einddatum selectie] zijn dus resp. het begin en einde van de periode waarvan je de afspraken wilt hebben.
SQL:
1
2
3
4
5
6
7
Select 
  * 
from 
  afspraak 
where 
  not (einddatum < [begindatum selectie] OR 
       begindatum > [einddatum selectie])

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

lees "bezet" dan als "Afspraak weergeven" en "niet bezet" als "Afspraak niet weergeven" ...

Verwijderd

Topicstarter
ok nieuw stukje code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            $postdatum = "".$_GET['dag']."-".$_GET['maand']."-".$_GET['jaar']."";
        ?>

        <?php
        $id = $_POST['id'];
        $omschrijving = $_POST['omschrijving'];
        $door = $_POST['door'];
        $periode2 = "".$_POST['pdag']."-".$_POST['pmaand']."-".$_POST['pjaar']."";
          $sql = mysql_query("INSERT INTO `kalender` ( `id` , `omschrijving` , `door` , `datum` , `periode1` , `periode2` ) VALUES ('$id', '$omschrijving', '$door', '$postdatum', '$periode1', '$periode2')") or die(mysql_error());
        echo '<font color="green">De afspraak is succesvol toegevoegd.</font>';
}
        }
    }
}
?></td>


hij schrijft nu periode1 en periode2 weg in de database, maar de afspraken per datum laat hij zien d.m.v. $postdatum.
dus hij moet eigenlijk meerdere keren het bericht in de database schrijven.
Ik snap er niks meer van!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Misschien niet de meest efficiente manier, maar bij deze een alternatief voorbeeldje dat ik ooit een keer geschreven heb:
$Meetings['omschrijving']['periode1']= StartDatum
$Meetings['omschrijving']['periode2']= EindDatum
$Meetings['omschrijving']['duur']= EindDatum-StartDatum
PHP:
1
2
3
4
5
6
// Bouw per meeting een lijst op met alle data waarop deze moet worden weergegeven
foreach($Meetings as $Meeting=>$info){
    for($x=0;$x<$Meetings[$Meeting]["duur"];$x++){
        $Meets[$Meeting]["Dates"][]=date("j-n-Y",mktime(0,0,0,$Meetings[$Meeting]["StartDate_mm"],$Meetings[$Meeting]["StartDate_dd"]+$x,$Meetings[$Meeting]["StartDate_yy"]));
    }
}


Vervolgens kijk je per dag of er een meeting is die op dag weergegeven moet worden....
PHP:
1
2
3
4
5
foreach($Meets as $Meeting=>$Info){
    if(in_array("$dispDay-$dispMonth-$curYear",$Meets[$Meeting]["Dates"])){
        // Afspraak weergeven
    }
}

[ Voor 0% gewijzigd door TheRookie op 11-09-2006 15:31 . Reden: typo's ]


  • messi
  • Registratie: Oktober 2001
  • Laatst online: 05:28
Verwijderd schreef op maandag 11 september 2006 @ 15:09:

hij schrijft nu periode1 en periode2 weg in de database, maar de afspraken per datum laat hij zien d.m.v. $postdatum.
dus hij moet eigenlijk meerdere keren het bericht in de database schrijven.
Ik snap er niks meer van!
Iets meerdere keren in de database schrijven is nutteloos en verbruikt onnodige ruimte in je db.

Je moet bij de kant van weergave (je daadwerkelijke agenda) kijken of er op die dag een afspraak staat, OF die dag tussen de begin en eindtijd van een afspraak ligt. Dat is wat iedereen duidelijk probeert te maken. je moet dus aan de weergave kant je code veranderen zodat ie dat checked, en dan ben je er ;)

Onze excuses voor het ontbreken van de ondertiteling.


Verwijderd

messi schreef op maandag 11 september 2006 @ 18:55:
Iets meerdere keren in de database schrijven is nutteloos en verbruikt onnodige ruimte in je db.

Je moet bij de kant van weergave (je daadwerkelijke agenda) kijken of er op die dag een afspraak staat, OF die dag tussen de begin en eindtijd van een afspraak ligt. Dat is wat iedereen duidelijk probeert te maken. je moet dus aan de weergave kant je code veranderen zodat ie dat checked, en dan ben je er ;)
Klopt, maar toch ook weer niet... ;)
Voor een vakantie ("ik ben er die 2 weken niet") is 't simpel, gewoon begin- en einddatum checken.
Voor iets als "de komende 2 weken moet ik elke dag van 9 tot 10 met m'n dochtertje naar zwemles, behalve op woensdag" wordt 't dan opeens een stuk lastiger. En als je die 2 mogelijkheden wilt kunnen combineren, wordt 't helemaal grappig...

Wanneer je je aan de weergave-kant in 3 bochten moet wringen om de juiste gegevens uit de DB te halen en snel te verwerken, is 't vaak handiger om 't toch redundant per "afspraak" in de DB op te slaan. "onnodige ruimte in je db" is dan minder duur dan onnodige wachttijden voor je gebruikers. ;)

Verwijderd

Topicstarter
messi schreef op maandag 11 september 2006 @ 18:55:
[...]


Iets meerdere keren in de database schrijven is nutteloos en verbruikt onnodige ruimte in je db.

Je moet bij de kant van weergave (je daadwerkelijke agenda) kijken of er op die dag een afspraak staat, OF die dag tussen de begin en eindtijd van een afspraak ligt. Dat is wat iedereen duidelijk probeert te maken. je moet dus aan de weergave kant je code veranderen zodat ie dat checked, en dan ben je er ;)
Ik ga het morgen proberen, maar voor zover ik lees moet dat inderdaad lukken.
Een optie waar ik dus niet aan gedacht had.
Ik denk weer is veel te moeilijk :)
Bedankt

Verwijderd

Topicstarter
Dit is de code waarmee ik al de afspraken laat zien

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            <?php
            $sql = mysql_query("SELECT * FROM kalender WHERE datum='$datum'") or die(mysql_error());
            // zijn er afspraken?
            if(mysql_num_rows($sql) == 0)
            {
                echo '<font color="red">Er zijn geen afspraken voor deze dag weggezet.';
            }
            else
            {
                while($data = mysql_fetch_assoc($sql)) {
            ?>
            <hr>

                <b>Omschrijving</b>: <?=$data['omschrijving'];?><br>
                <strong>Periode</strong>
                : van <?=$data['periode1'];?> tot <?=$data['periode2'];?><br>
                <b>Door</b>: <?=$data['door'];?>


Nu zou ik dus dit stukje moeten aanpassen?
code:
1
$sql = mysql_query("SELECT * FROM kalender WHERE datum='$datum'")


Stel dat ik dit zou doen en van Where datum= (tussen periode1 en periode2).
Zou dit dan werken, want elke afspraak heeft zijn eigen periode1 en periode2
Hoe weet hij dan welke hij moet laten zien

Verwijderd

Even ontzettend offtopic, maar hoe maak je die omlijning van die vlakken?
Die lijn dus waar bijv. "Voornaam en Achternaam:" doorheen staat?

Is daar een speciale css methode voor?

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Verwijderd schreef op dinsdag 12 september 2006 @ 09:26:
Dit is de code waarmee ik al de afspraken laat zien

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
            <?php
            $sql = mysql_query("SELECT * FROM kalender WHERE datum='$datum'") or die(mysql_error());
            // zijn er afspraken?
            if(mysql_num_rows($sql) == 0)
            {
                echo '<font color="red">Er zijn geen afspraken voor deze dag weggezet.';
            }
            else
            {
                while($data = mysql_fetch_assoc($sql)) {
            ?>
            <hr>

                <b>Omschrijving</b>: <?=$data['omschrijving'];?><br>
                <strong>Periode</strong>
                : van <?=$data['periode1'];?> tot <?=$data['periode2'];?><br>
                <b>Door</b>: <?=$data['door'];?>


Nu zou ik dus dit stukje moeten aanpassen?
code:
1
$sql = mysql_query("SELECT * FROM kalender WHERE datum='$datum'")


Stel dat ik dit zou doen en van Where datum= (tussen periode1 en periode2).
Zou dit dan werken, want elke afspraak heeft zijn eigen periode1 en periode2
Al geprobeerd? Je kan toch eerst iets proberen en dan hier de uitkomst vertellen en wat er dan nog niet lukt?
Hoe weet hij dan welke hij moet laten zien
je moet ongeveer een volgende query maken.

code:
1
SELECT * FROM afspraak WHERE beginDatum < now() AND eindDatum > now()

Dan krijg je al je afspraken waar NU tussen de begin en einddatum liggen.

Verwijderd

Topicstarter
[fieldset]
...
[/fieldset]

Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 09:39:
je moet ongeveer een volgende query maken.

code:
1
SELECT * FROM afspraak WHERE beginDatum < now() AND eindDatum > now()

Dan krijg je al je afspraken waar NU tussen de begin en einddatum liggen.
Ik heb het geprobeerd, maar het lukt niet

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
            $sql = mysql_query("SELECT * FROM kalender WHERE datum = periode1 < now() AND periode2 > now()") or die(mysql_error());
            
            
            // zijn er afspraken?
            if(mysql_num_rows($sql) == 0)
            {
                echo '<font color="red">Er zijn geen afspraken voor deze dag weggezet.';
            }
            else
            {
                while($data = mysql_fetch_assoc($sql)) {
            ?>
            <hr>

                <b>Omschrijving</b>: <?=$data['omschrijving'];?><br>
                <strong>Periode</strong>
                : van <?=$data['periode1'];?> tot <?=$data['periode2'];?><br>
                <b>Door</b>: <?=$data['door'];?>


Hij geeft nu geen enkele afspraak meer weer

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Verwijderd schreef op dinsdag 12 september 2006 @ 09:55:
[...]


Ik heb het geprobeerd, maar het lukt niet

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
            $sql = mysql_query("SELECT * FROM kalender WHERE datum = periode1 < now() AND periode2 > now()") or die(mysql_error());
            
            
            // zijn er afspraken?
            if(mysql_num_rows($sql) == 0)
            {
                echo '<font color="red">Er zijn geen afspraken voor deze dag weggezet.';
            }
            else
            {
                while($data = mysql_fetch_assoc($sql)) {
            ?>
            <hr>

                <b>Omschrijving</b>: <?=$data['omschrijving'];?><br>
                <strong>Periode</strong>
                : van <?=$data['periode1'];?> tot <?=$data['periode2'];?><br>
                <b>Door</b>: <?=$data['door'];?>


Hij geeft nu geen enkele afspraak meer weer
uhm ja, er staat nou ook niet hetzelfde als dat ik in mijn voorbeeld gezet heb.

Hoezo "WHERE datum = periode1 < now()" en niet gewoon "WHERE periode1 < now()" :? Wat doet het woord datum daar ??

Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 11:22:
uhm ja, er staat nou ook niet hetzelfde als dat ik in mijn voorbeeld gezet heb.

Hoezo "WHERE datum = periode1 < now()" en niet gewoon "WHERE periode1 < now()" :? Wat doet het woord datum daar ??
Dat is gewoon iets wat ik probeerde, omdat jou code ook niet werkte
deze dus

code:
1
$sql = mysql_query("SELECT * FROM kalender WHERE periode1 < now() AND periode2 > now()") or die(mysql_error());

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Ja wat werkt er dan niet. Krijg je een error? krijg je geen data terug? Wat gebeurd er als je even in phpmyadmin (of ander tooltje) de query draait?

Met alleen het werkt niet kom je niet ver natuurlijk.

Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 11:57:
Ja wat werkt er dan niet. Krijg je een error? krijg je geen data terug? Wat gebeurd er als je even in phpmyadmin (of ander tooltje) de query draait?

Met alleen het werkt niet kom je niet ver natuurlijk.
Dat is waar, sorry.
Het werkt niet in de zin van, hij weergeeft geen enkele afspraak meer.

Als ik de query in phpmyadmin uitvoer zegt hij dit:

code:
1
2
3
4
Uw SQL-query is succesvol uitgevoerd.
 
SQL-query :
SELECT * FROM kalender WHERE periode1 < now() AND periode2 > now() LIMIT 0, 30

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

ja en hoe zet jij de datum in de DB??

now() geeft de volgende waarde terug: 2006-09-12 12:03:22

en in je topic start zie ik dat jij het opslaat als dag maand jaar. Lijkt me logisch dat je niks terug krijgt.

[ Voor 36% gewijzigd door TwoR op 12-09-2006 12:06 ]


Verwijderd

Topicstarter
Ik zet mijn datum in de DB d.m.v.

$datum = "".$_GET['dag']."-".$_GET['maand']."-".$_GET['jaar']."";

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

dan zet je het toch of anders in de DB of je zorgt dat je de info op dezelfde manier ophaalt als dat je het erin zet.

[ Voor 56% gewijzigd door TwoR op 12-09-2006 12:10 ]


Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 12:09:
dan zet je het toch of anders in de DB of je zorgt dat je de info op dezelfde manier ophaalt als dat je het erin zet.
dan zou het dit moeten zijn

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$datum = "".$_GET['dag']."-".$_GET['maand']."-".$_GET['jaar']."";
$sql = mysql_query("SELECT * FROM kalender WHERE periode1 < $datum AND periode2 > $datum ") or die(mysql_error());
    // zijn er afspraken?
            if(mysql_num_rows($sql) == 0)
            {
                echo '<font color="red">Er zijn geen afspraken voor deze dag weggezet.';
            }
            else
            {
                while($data = mysql_fetch_assoc($sql)) {
            ?>
            <hr>

                <b>Omschrijving</b>: <?=$data['omschrijving'];?><br>
                <strong>Periode</strong>
                : van <?=$data['periode1'];?> tot <?=$data['periode2'];?><br>
                <b>Door</b>: <?=$data['door'];?>
                <?
                $id = $data['id'];?>


maar helaas, hij weergeeft weer : Er zijn geen afspraken voor deze dag weggezet

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

PHP:
1
$datum = "".$_GET['dag']."-".$_GET['maand']."-".$_GET['jaar']."";

is voor zover ik weet geen geldige opmaak voor een date/time veld in mysql; sla je de datum niet toevallig als string op ?

Zo ja, dan gaat dit niet werken. Sla de datum bij voorkeur in een datetime veld in yyyy-mm-dd hh:mm:ss formaat of in een int veld als unix-timestamp op

Verwijderd

Topicstarter
TheRookie schreef op dinsdag 12 september 2006 @ 13:04:
PHP:
1
$datum = "".$_GET['dag']."-".$_GET['maand']."-".$_GET['jaar']."";

is voor zover ik weet geen geldige opmaak voor een date/time veld in mysql; sla je de datum niet toevallig als string op ?

Zo ja, dan gaat dit niet werken. Sla de datum bij voorkeur in een datetime veld in yyyy-mm-dd hh:mm:ss formaat of in een int veld als unix-timestamp op
de tijd word niet als string opgeslagen maar gewoon als datum.
12-09-2006 bijvoorbeeld.

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Dat begrijp ik, maar welk type hebben de velden die je hiervoor gebruikt in je database ?

[ Voor 10% gewijzigd door TheRookie op 12-09-2006 13:09 . Reden: meervoud ! ]


Verwijderd

Topicstarter
TheRookie schreef op dinsdag 12 september 2006 @ 13:08:
Dat begrijp ik, maar welk type hebben de velden die je hiervoor gebruikt in je database ?
code:
1
2
3
4
5
6
id  int(11)   Nee    auto_increment  Veranderen  Verwijderen  Primaire sleutel  Index  Unieke waarde  Voltekst  
   omschrijving  varchar(255)   Nee      Veranderen  Verwijderen  Primaire sleutel  Index  Unieke waarde  Voltekst  
   door  varchar(50)   Nee      Veranderen  Verwijderen  Primaire sleutel  Index  Unieke waarde  Voltekst  
   datum  varchar(50)   Nee      Veranderen  Verwijderen  Primaire sleutel  Index  Unieke waarde  Voltekst  
   periode1  varchar(50)   Nee      Veranderen  Verwijderen  Primaire sleutel  Index  Unieke waarde  Voltekst  
   periode2  varchar(50)   Nee      Veranderen  Verwijderen  Primaire sleutel  Index  Unieke waarde  Voltekst


dit is wat er staat in me tabel

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Gebruik dan ook gewoon een DATE of DATETIME datatype voor datums. Of desnoods een INT als je timestamps op wil slaan. Sowieso is het nogal onzin om 50 karakters (!) te reserveren voor een string die nooit langer is dan 10 tekens. :X

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Daar hebben we de boosdoener: je bent strings aan het vergelijken, terwijl je datums wil vergelijken.
Je zal datum, periode1 en periode2 om moeten zetten in datetime; pas dan hebben de vergelijkingen zin...

Zie mijn eerdere post

[ Voor 11% gewijzigd door TheRookie op 12-09-2006 13:26 ]


Verwijderd

Topicstarter
TheRookie schreef op dinsdag 12 september 2006 @ 13:23:
Daar hebben we de boosdoener: je bent strings aan het vergelijken, terwijl je datums wil vergelijken.
Je zal datum, periode1 en periode2 om moeten zetten in datetime; pas dan hebben de vergelijkingen zin...
Ik gebruik verder geen tijd dus zou ik ook alleen DATE kunnen doen?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:34

Creepy

Tactical Espionage Splatterer

Ja dat kan. -NMe- geeft dat ook al aan. Daarnaast heeft MySQL documentatie waar de verschillen tussen de datatypes ook netje sin staat uitgelegd dus bekijk die ook even ;)

"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


  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Lees de relevante pagina uit de mysql documentatie er eens op na ...

Verwijderd

Topicstarter
TheRookie schreef op dinsdag 12 september 2006 @ 13:29:
Lees de relevante pagina uit de mysql documentatie er eens op na ...
ik heb het gelezen maar ik word er niet veel wijzer van dan dat ik al was
Hij slaat het nu op als DATE in de DB, maar wel als YYYY-MM-DD.
Ik heb nu dus ingesteld dat hij het ook zo invoegt.
Als ik nu een afspraak toevoeg, komen de data's ook netjes in de DB te staan, maar het lukt nog steeds niet om ze op het scherm afgebeeld te krijgen

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Wat lukt er dan precies niet?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Verwijderd schreef op dinsdag 12 september 2006 @ 13:41:
[...]
ik heb het gelezen maar ik word er niet veel wijzer van dan dat ik al was
Hij slaat het nu op als DATE in de DB, maar wel als YYYY-MM-DD.
Ik heb nu dus ingesteld dat hij het ook zo invoegt.
Als ik nu een afspraak toevoeg, komen de data's ook netjes in de DB te staan, maar het lukt nog steeds niet om ze op het scherm afgebeeld te krijgen
En wat is je code nu dan ?? En op welke manier zet je de datum? In je vorige voorbeeld had je
code:
1
$datum = "".$_GET['dag']."-".$_GET['maand']."-".$_GET['jaar']."";

Maar heb je die waardes wel echt mee gestuurd via GET ?

En zoals ik al zei, Als je niet wat meer info geeft kan ook niemand je helpen met "het lukt niet" komt niemand een steek verder

[ Voor 8% gewijzigd door TwoR op 12-09-2006 13:45 ]


Verwijderd

Topicstarter
Het is de bedoeling dat als ik een afspraak (bijvoorbeeld een vakantie) toevoeg, waarin ik ook de periode opgeef. Stel ik geef op dat het van 12-09-2006 tot 19-09-2006 is. Dan moet op elke pagina (12-09-2006, 13-09-2006 .......19-09-2006) de afspraak afgebeeld worden.
Dit gebeurt nu simpelweg niet.
En wat is je code nu dan ?? En op welke manier zet je de datum? In je vorige voorbeeld had je
code:
1
code:
1
$datum = "".$_GET['dag']."-".$_GET['maand']."-".$_GET['jaar']."";



Maar heb je die waardes wel echt mee gestuurd via GET ?

En zoals ik al zei, Als je niet wat meer info geeft kan ook niemand je helpen met "het lukt niet" komt niemand een steek verder
nu heb ik
code:
1
$datum = "".$_GET['jaar']."-".$_GET['maand']."-".$_GET['dag']."";

[ Voor 34% gewijzigd door Verwijderd op 12-09-2006 13:48 . Reden: code ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Verwijderd schreef op dinsdag 12 september 2006 @ 13:46:
Het is de bedoeling dat als ik een afspraak (bijvoorbeeld een vakantie) toevoeg, waarin ik ook de periode opgeef. Stel ik geef op dat het van 12-09-2006 tot 19-09-2006 is. Dan moet op elke pagina (12-09-2006, 13-09-2006 .......19-09-2006) de afspraak afgebeeld worden.
Dit gebeurt nu simpelweg niet.
En heb je al gedebugd? Kijk je of alle waarden die je doorkrijgt gevuld zijn? Lukt de query wel? Komen daar geen errors uit? Zit je misschien ergens in een if waarvan de conditie helemaal niet true kan worden? Lees ook onze FAQ eens na, en dan met name het stukje over debuggen en de PHP-FAQ.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Zoals al vaker gezegd, wat meer (en volledigere) informatie zou wel prettig zijn:
1) welke SQL query gebruik je nu (output je query eens op de pagina, dan zie je wat er daadwerkelijk wordt uitgevoerd)
2) wat is de inhoud van de rij die je verwacht terug te krijgen
3) krijg je uberhaupt resultaten terug van de query
4) wordt de afspraak op geen enkele dag getoond, of bijvoorbeeld wel op de eerste dag

[edit]
:w -NMe- :P

[ Voor 10% gewijzigd door een moderator op 12-09-2006 14:04 ]


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Verwijderd schreef op dinsdag 12 september 2006 @ 13:46:
[...]

nu heb ik
code:
1
$datum = "".$_GET['jaar']."-".$_GET['maand']."-".$_GET['dag']."";
Ja en var_dump de datum eens onder die regel. Krijg je dan een datum te zien of is dat een lege string ?

Krijg je een lege string dan geef je dus niks mee en is het logisch dat je niks terug krijgt.

[ Voor 13% gewijzigd door TwoR op 12-09-2006 14:01 ]


Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 14:00:
[...]

Ja en var_dump de datum eens onder die regel. Krijg je dan een datum te zien of is dat een lege string ?

Krijg je een lege string dan geef je dus niks mee en is het logisch dat je niks terug krijgt.
Als ik hem var_dump geeft hij
code:
1
NULL

[ Voor 4% gewijzigd door Verwijderd op 12-09-2006 14:08 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

En hoe komt dan nu het jaar ineens weer achteraan? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Verwijderd schreef op dinsdag 12 september 2006 @ 14:04:
[...]


Als ik hem var_dump geeft hij
code:
1
string(8) "9-9-2006"
WTF hoe kan het jaar nu inees weer achteraan staan als je het zo mee stuurt:
code:
1
$datum = "".$_GET['jaar']."-".$_GET['maand']."-".$_GET['dag']."";


Dit soort dingen kan je toch zelf ook vinden of moeten wij nu elke stap code debuggen :?

mmm te laat -NME- is sneller

[ Voor 15% gewijzigd door TwoR op 12-09-2006 14:11 ]


Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 14:08:
[...]

WTF hoe kan het jaar nu inees weer achteraan staan als je het zo mee stuurt:
code:
1
$datum = "".$_GET['jaar']."-".$_GET['maand']."-".$_GET['dag']."";


Dit soort dingen kan je toch zelf ook vinden of moeten wij nu elke stap code debuggen :?

mmm te laat -NME- is sneller
nu staat hij goed

code:
1
string(8) "2006-9-9"


maar kan het niet komen doordat hij in de database opgeslagen word als 2006-09-09 en hier als 2006-9-9 staat?

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Verwijderd schreef op dinsdag 12 september 2006 @ 14:13:
[...]


nu staat hij goed

code:
1
string(8) "2006-9-9"
Nu staat ie inderdaad wel goed ja maar net stond het jaartal achteraan.
maar kan het niet komen doordat hij in de database opgeslagen word als 2006-09-09 en hier als 2006-9-9 staat?
wat kan niet komen??? Werkt het niet werkt het wel werkt het half krijg je een error. Geef toch eens gewoon info. Code, DB dump, errors?

Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 14:17:
[...]

Nu staat ie inderdaad wel goed ja maar net stond het jaartal achteraan.

[...]

wat kan niet komen??? Werkt het niet werkt het wel werkt het half krijg je een error. Geef toch eens gewoon info. Code, DB dump, errors?
codes heb ik over het hele topic al verspreid, maar hier heb je me DB DUMP
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
# phpMyAdmin MySQL-Dump
# version 2.3.0-rc3
# http://phpwizard.net/phpMyAdmin/
# http://www.phpmyadmin.net/ (download page)
#
# Host: localhost
# Generatie Tijd:   Sept 2006 om 14:19
# Server versie: 4.00.00
# PHP Versie: 4.2.2
# Database : `informatiesysteem`
# --------------------------------------------------------

#
# Tabel structuur voor tabel `kalender`
#

CREATE TABLE kalender (
  id int(11) NOT NULL auto_increment,
  omschrijving varchar(255) NOT NULL default '',
  door varchar(50) NOT NULL default '',
  datum date NOT NULL default '0000-00-00',
  periode1 date NOT NULL default '0000-00-00',
  periode2 date NOT NULL default '0000-00-00',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

#
# Gegevens worden uitgevoerd voor tabel `kalender`
#

INSERT INTO kalender VALUES (1, 'Vakantie', 'X-Ray', '2006-09-09', '2006-09-09', '2006-09-16');


hier nog het stukje code waarmee hij het in de DB Schrijft
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if(isset($_POST['submit'])) {
        if(empty($_POST)) {
            echo '<fieldset><legend>Fouten:</legend><font color="red">Errror! Je hebt niet alle verplichte waardes ingevuld!</font></fieldset>';
        }

            $postdatum = "".$_GET['jaar']."-".$_GET['maand']."-".$_GET['dag']."";
        ?>

        <?php
        $id = $_POST['id'];
        $omschrijving = $_POST['omschrijving'];
        $door = $_POST['door'];
        $periode2 = "".$_POST['pjaar']."-".$_POST['pmaand']."-".$_POST['pdag']."";
          $sql = mysql_query("INSERT INTO `kalender` ( `id` , `omschrijving` , `door` , `datum` , `periode1` , `periode2` ) VALUES ('$id', '$omschrijving', '$door', '$postdatum', '$periode1', '$periode2')") or die(mysql_error());
        echo '<font color="green">De afspraak is succesvol toegevoegd.</font>';
}
        }
    }
}
?>


en hier nog het stukje code waarmee hij de afspraken moet laten zien:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$datum = "".$_GET['jaar']."-".$_GET['maand']."-".$_GET['dag']."";
            echo '<center><b>De afspraken voor datum: '.$datum.'</b></center><p></p><p></p>';?>
            <p align="right"><?php echo '<font color="red"><a href="?dag='.$_GET['dag'].'&maand='.$_GET['maand'].'&jaar='.$_GET['jaar'].'&a=1">Toevoegen</a></font>'; ?></p>
            <?php
            $sql = mysql_query("SELECT * FROM kalender WHERE periode1 < datum AND periode2 > datum") or die(mysql_error());


            // zijn er afspraken?
            if(mysql_num_rows($sql) == 0)
            {
                echo '<font color="red">Er zijn geen afspraken voor deze dag weggezet.';
                            }
            else
            {
                while($data = mysql_fetch_assoc($sql)) {
            ?>
            <hr>

                <b>Omschrijving</b>: <?=$data['omschrijving'];?><br>
                <strong>Periode</strong>
                : van <?=$data['periode1'];?> tot <?=$data['periode2'];?><br>
                <b>Door</b>: <?=$data['door'];?>

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

dat ik hier verder nog tijd aan besteed zeg

Regel 5 laatste code blok lees dat eens goed door en vind de fout

regel 5:
PHP:
1
$sql = mysql_query("SELECT * FROM kalender WHERE periode1 < datum AND periode2 > datum") or die(mysql_error());


Zoals ook al eens gezegd dump je query eens en kijk wat je daadwerkelijk uitvoert. Ook dan zal je de fout zien

[ Voor 57% gewijzigd door TwoR op 12-09-2006 14:31 ]


Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 14:28:
dat ik hier verder nog tijd aan besteed zeg

Regel 5 laatste code blok lees dat eens goed door en vind de fout

regel 5:
PHP:
1
$sql = mysql_query("SELECT * FROM kalender WHERE periode1 < datum AND periode2 > datum") or die(mysql_error());


Zoals ook al eens gezegd dump je query eens en kijk wat je daadwerkelijk uitvoert. Ook dan zal je de fout zien
ehm regel 5 heb ik toch echt gekopieerd uit een reactie van dit topic, omdat hij eerst fout stond.

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Verwijderd schreef op dinsdag 12 september 2006 @ 14:33:
[...]
ehm regel 5 heb ik toch echt gekopieerd uit een reactie van dit topic, omdat hij eerst fout stond.
ja en. Van kopieren en plakken leer je sowieso niks en daarbij kan het ergens hier in dit topic wel als pseudo code staan. Het is uiteraard wel de bedoeling dat je zelf ook even kijkt hoe het moet en dat we je niet alles hoeven voor te kauwen.

Je voegt de GET vars toe aan de var $datum. En wat doe je daarmee in regel 5. En wat klopt er dan niet.

Lees die regel nou nog eens HEEEL goed door en ontdek zelf de fout.

[ Voor 9% gewijzigd door TwoR op 12-09-2006 14:41 ]


  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Zelf nadenken mag nog steeds hoor....

Je geeft het script een datum mee als variable via $_GET maar vervolgens gebruik je die in je query niet

Verwijderd

Topicstarter
TheRookie schreef op dinsdag 12 september 2006 @ 14:36:
Zelf nadenken mag nog steeds hoor....

Je geeft het script een datum mee als variable via $_GET maar vervolgens gebruik je die in je query niet
code:
1
2
3
$datum = "".$_GET['jaar']."-".$_GET['maand']."-".$_GET['dag']."";   

 $sql = mysql_query("SELECT * FROM kalender WHERE periode1 < datum AND periode2 > datum") or die(mysql_error());

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

$datum != datum :|

Verwijderd

Topicstarter
Als ik dat neerzet dan komt er bovenaan te staan
De afspraken voor datum: 1

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

He jammer nu heeft ie het nog steeds niet zelf opgezocht, maar goed gevonden hoor ;) :P
Verwijderd schreef op dinsdag 12 september 2006 @ 14:44:
[...]


Als ik dat neerzet dan komt er bovenaan te staan
De afspraken voor datum: 1
Dude wil je het nou echt niet snappen
Deze regel hoef jue niet aan te passen
PHP:
1
echo '<center><b>De afspraken voor datum: '.$datum.'</b></center>';?>
Dat klopt.

En in je query staat:
PHP:
1
$sql = mysql_query("SELECT * FROM kalender WHERE periode1 < datum AND periode2 > datum") or die(mysql_error());

En nu zegt TheRookie: "$datum != datum"
Doe er je voordeel mee en lees nou die bovenstaande regel code eens letter voor letter door.

[ Voor 5% gewijzigd door TwoR op 12-09-2006 14:52 ]


Verwijderd

Topicstarter
aha ik heb hem

code:
1
$sql = mysql_query("SELECT * FROM kalender WHERE periode1 < $datum != datum AND periode2 > $datum != datum") or die(mysql_error());


alleen nu weergeeft hij hem wel op ELKE DAG, en niet alleen binnen de periode |:(

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Nee natuurlijk niet!!!

PHP:
1
$datum != datum

betekent
"$datum" is ongelijk aan "datum"

Oftewijl in je Query staat "datum" terwijl daar "$datum" zoumoeten staan, want "datum" is niks.

en dan krijg je
PHP:
1
$sql = mysql_query("SELECT * FROM kalender WHERE periode1 < ".$datum." AND periode2 > ".$datum."") or die(mysql_error());


Zo laat nu mijn handje maar weer los en probeer het eens alleen.

[ Voor 38% gewijzigd door TwoR op 12-09-2006 15:00 ]


  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Sorry dat ik het misschien een beetje bot zeg, maar volgens mij heb je nu qua SQL geen flauw idee meer waar je mee bezig bent.
Lees de quickstart van PRG eens door en kijk naar een paar goede SQL queries voordat je alle mogelijke variaties van datum/$datum/periode1 en periode2 door elkaar gaat zetten ....

@TWoR: da's het fnuikende, een van z'n kolommen heet `datum`

[ Voor 9% gewijzigd door TheRookie op 12-09-2006 15:01 ]


Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 14:58:
Nee natuurlijk niet!!!

PHP:
1
$datum != datum

betekent
"$datum" is ongelijk aan "datum"

Oftewijl in je Query staat datum terwijl daar $datum ozu moeten staan, want datum is niks.

en dan krijg je
PHP:
1
$sql = mysql_query("SELECT * FROM kalender WHERE periode1 < ".$datum." AND periode2 > ".$datum."") or die(mysql_error());
ja als ik
code:
1
$sql = mysql_query("SELECT * FROM kalender WHERE periode1 < $datum AND periode2 > $datum") or die(mysql_error());

doe, dan weergeeft ie helemaal niks

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Ga zelf toch eens wat proberen en niet alleen maar zeggen dat het niet werkt.

Standaard debug werk
PHP:
1
2
$test = "SELECT * FROM kalender WHERE periode1 < ".$datum." AND periode2 > ".$datum."";
echo $test;

Nou wat komt daar uit?
Kopieer dat eens en voer die query eens uit in phpMyAdmin of ander SQL tooltje. Krijg je dan records terug krijg je niks terug een error??

Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 15:05:
Ga zelf toch eens wat proberen en niet alleen maar zeggen dat het niet werkt.

Standaard debug werk
PHP:
1
2
$test = "SELECT * FROM kalender WHERE periode1 < ".$datum." AND periode2 > ".$datum."";
echo $test;

Nou wat komt daar uit?
Kopieer dat eens en voer die query eens uit in phpMyAdmin of ander SQL tooltje. Krijg je dan records terug krijg je niks terug een error??
Ik krijg dit terug

code:
1
2
3
4
5
6
7
8
9
10
Fout

SQL-query :  

SELECT * FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13SELECT * FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13 LIMIT 0, 30 

MySQL retourneerde: 


You have an error in your SQL syntax near 'FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13 LIMIT 0, 30' at line 1

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Heb je de foutmelding uberhaupt zelf gelezen ?
als
SELECT * FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13SELECT * FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13 LIMIT 0, 30
de output is van mysql_error() gaat er iets grandioos de mist in ...

[edit]
Los daarvan, lees toch echt eens de mysql manual over date/datetime, en dan met name het stukje na "You can specify DATETIME, DATE, and TIMESTAMP values using any of a common set of formats:"

[ Voor 30% gewijzigd door TheRookie op 12-09-2006 15:22 ]


Verwijderd

Topicstarter
TheRookie schreef op dinsdag 12 september 2006 @ 15:18:
Heb je de foutmelding uberhaupt zelf gelezen ?
als

[...]

de output is van mysql_error() gaat er iets grandioos de mist in ...
ik heb de foutmelding gelezen ja, hij herhaalt gewoon mijn query?
ik snap er niks van

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

ik gok dat je ergens eerder in je script de $query variable al vult, en verderop $query .= doet, waardoor er 2 queries samengevoegd worden ipv dat de inhoud van $query overschreven wordt, want in geen enkele van de voorbeelden die je gegeven hebt van deze query staat bijvoorbeeld die LIMIT erbij ...

Verwijderd

Topicstarter
TheRookie schreef op dinsdag 12 september 2006 @ 15:30:
ik gok dat je ergens eerder in je script de $query variable al vult, en verderop $query .= doet, waardoor er 2 queries samengevoegd worden ipv dat de inhoud van $query overschreven wordt, want in geen enkele van de voorbeelden die je gegeven hebt van deze query staat bijvoorbeeld die LIMIT erbij ...
voor zover ik weet heb ik hem nog niet ervoor gevuld, kan het ook nergens vinden als ik me script doorneem

[ Voor 10% gewijzigd door Verwijderd op 12-09-2006 15:37 ]


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

TheRookie schreef op dinsdag 12 september 2006 @ 15:30:
ik gok dat je ergens eerder in je script de $query variable al vult, en verderop $query .= doet, waardoor er 2 queries samengevoegd worden ipv dat de inhoud van $query overschreven wordt, want in geen enkele van de voorbeelden die je gegeven hebt van deze query staat bijvoorbeeld die LIMIT erbij ...
Ja maar in in phpmyadmin komt er automatisch een limit bij.

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Verwijderd schreef op dinsdag 12 september 2006 @ 15:08:
[...]


Ik krijg dit terug

code:
1
2
3
4
5
6
7
8
9
10
Fout

SQL-query :  

SELECT * FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13SELECT * FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13 LIMIT 0, 30 

MySQL retourneerde: 


You have an error in your SQL syntax near 'FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13 LIMIT 0, 30' at line 1
Waarom staat onder Fout 2 keer de SQL query ?? Heb je dit in phpmyadmin gedaan en perongeluk twee keer geplakt?

Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 15:40:
[...]

Waarom staat onder Fout 2 keer de SQL query ?? Heb je dit in phpmyadmin gedaan en perongeluk twee keer geplakt?
Als ik dit deed

code:
1
2
3
4
<?php 
$test = "SELECT * FROM kalender WHERE periode1 < ".$datum." AND periode2 > ".$datum.""; 
echo $test; 
?>


kreeg ik dat terug

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Ik geef het op ik snap er echt niks meer van.

Lees zoals al een paar gezegt de documentie een keer door van Mysql.

Succes verder met je probleem en ik hoop voor je dat je het opgelost krijgt.

Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 15:46:
Ik geef het op ik snap er echt niks meer van.

Lees zoals al een paar gezegt de documentie een keer door van Mysql.

Succes verder met je probleem en ik hoop voor je dat je het opgelost krijgt.
ik had per ongeluk 2 x echo gedaan vandaar

hij geeft nu aan:

code:
1
2
3
4
Uw SQL-query is succesvol uitgevoerd.
 
SQL-query :
SELECT * FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13 LIMIT 0, 30

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

Verwijderd schreef op dinsdag 12 september 2006 @ 15:48:
[...]
ik had per ongeluk 2 x echo gedaan vandaar
...
hij geeft nu aan:

code:
1
2
3
4
Uw SQL-query is succesvol uitgevoerd.
 
SQL-query :
SELECT * FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13 LIMIT 0, 30
Ja en nog records gevonden? hoeveel? of helemaal niks? verander de data eens zodat je wel records terug krijgt probeer dat dan ook eens in je code. Wat gebeurt er dan. Krijg je dan een error of netjes de afspraak voor je neus, of of of of ofof of of of of of of

les van de dag:
Probeer zelf ook eens wat zonder dat iemand het voorkauwt

Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 15:57:
[...]

...

[...]

Ja en nog records gevonden? hoeveel? of helemaal niks? verander de data eens zodat je wel records terug krijgt probeer dat dan ook eens in je code. Wat gebeurt er dan. Krijg je dan een error of netjes de afspraak voor je neus, of of of of ofof of of of of of of

les van de dag:
Probeer zelf ook eens wat zonder dat iemand het voorkauwt
Dus als ik in PHPMYADMIN naar de tabel Kalender ga, en dan op SQL klik
dan draai ik
code:
1
SELECT * FROM kalender WHERE periode1 < 2006-9-13 AND periode2 > 2006-9-13 LIMIT 0, 30


en dan hoor ik wat terug te krijgen??? hij zegt alleen succesvol uitgevoerd hoor

[ Voor 20% gewijzigd door Verwijderd op 12-09-2006 16:06 ]


  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 11-02 14:04

TwoR

Gekleurde stippen

ja en dus krijg je geen records terug zie mijn vorige post
TwoR schreef op dinsdag 12 september 2006 @ 15:57:

Ja en nog records gevonden? hoeveel? of helemaal niks? verander de data eens zodat je wel records terug krijgt probeer dat dan ook eens in je code. Wat gebeurt er dan. Krijg je dan een error of netjes de afspraak voor je neus, of of of of ofof of of of of of of

les van de dag:
Probeer zelf ook eens wat zonder dat iemand het voorkauwt

Verwijderd

Topicstarter
TwoR schreef op dinsdag 12 september 2006 @ 16:06:
ja en dus krijg je geen records terug zie mijn vorige post


[...]
je zegt me nu dus de data te veranderen MAAR

code:
1
  $sql = mysql_query("SELECT * FROM kalender WHERE periode1 < $datum AND periode2 > $datum") or die(mysql_error());


de data's worden aangeduid door $datum

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

2006-9-13 is een sommetje met als uitkomst 1984. Het is géén datum. Hoe je dan wel een datum in je query vermeldt staat allemaal in de MySQL documentatie die je nu toch echt zelf zal moeten gaan lezen. Wij gaan je in elk geval niet bij elk stapje meer aan het handje houden, iets wat in dit topic al veel teveel gebeurd is. Probeer zelf te leren debuggen en doe dat dan ook, want hier leer je niets van.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.