Bekijk Volledige Versie : Wat wordt er eigenlijk gelezen?
Hallo,
Onderstaand scriptje 'werkt perfect' (ik bouw, zoals jullie misschien al
weten, eerst de basis, dan pas 'validatie' en andere 'veiligheden') maar
er is slechts één probleempje: de datum. Die wordt telkens afgebeeld als
zijnde 0000-00-00 terwijl de data écht wel zijn ingevuld. (Bijvoorbeeld
2004-01-12). De overige gegevens worden wel correct uit de tabel
uitgelezen.
Vraag is: hoe kan ik dit oplossen en eigenlijk ook: waar haalt hij die
0000-00-00?
alvast hartelijk bedankt!
<?php
error_reporting(0);
$gebruiker = $_SESSION['sUser'];
$sql = "SELECT * FROM
ngb_inschrijvingen inschrijvingen,
ngb_members_website website
WHERE inschrijvingen.Deleted = 'N'
AND inschrijvingen.Lidnr = website.Lidnr
AND website.Level = '$level'
ORDER BY inschrijvingen.Lidnr ASC,
inschrijvingen.Datum_inschrijving DESC";
$resultaat = mysql_query($sql) or die(MySQL_Error());
if (mysql_num_rows($resultaat) == 0)
{
Niet_gevonden();
}
else
{
?>
<table border="0" cellpadding="5" cellspacing="10">
<tr>
<td class="secure_vet">Lidnr</td>
<td class="secure_vet">Datum <br /> Inschrijving</td>
<td class="secure_vet">Categorie</td>
<td class="secure_vet">Groep</td>
<td class="secure_vet">Subgroep</td>
<td class="secure_vet">Uur</td>
</tr>
<?php
while ($Rij = mysql_fetch_array($resultaat))
{
if($Rij[Deleted] == 'J')
{
Niet_gevonden();
}
else
{
// Controles op ingevulde velden
switch($Rij[Categorie])
{
case "Z":
$Categorie = "Lesgever";
break;
case "T":
$Categorie = "20 Beurtenkaart";
break;
case "L":
$Categorie = "Bestuurslid";
break;
case "G1":
$Categorie = "Lessenreeks 1 kinderen";
break;
case "G2":
$Categorie = "Lessenreeks 2 kinderen";
break;
case "G3":
$Categorie = "Lessenreeks 3 kinderen";
break;
case "V":
$Categorie = "Lessenreeks volwassenen";
break;
case "R1":
$Categorie = "Gevorderden 1";
break;
case "R2":
$Categorie = "Gevorderden 2";
break;
case "B":
$Categorie = "Recreanten";
break;
case "B1":
$Categorie = "Recreanten 1";
break;
case "B2":
$Categorie = "Recreanten 2";
break;
}
if($Rij[Categorie] == G1 OR $Rij[Categorie] == G2 OR
$Rij[Categorie] == G3)
{
$Groep = $Rij[Groep];
$Subgroep = $Rij[Subgroep];
$Uur = $Rij[Uur];
}
else
{
$Groep = "-";
$Subgroep = "-";
$Uur = "-";
}
?>
<tr>
<td class="secure"><?php print($Rij[Lidnr]);
?></td>
<td class="secure"><?php print($Rij
[Datum_inschrijving]); ?></td>
<td class="secure"><?php print($Categorie); ?>
</td>
<td class="secure"><?php print($Groep); ?>
</td>
<td class="secure"><?php print($Subgroep); ?>
</td>
<td class="secure"><?php print($Uur); ?></td>
</tr>
<?php
} // End if Deleted
} // end while
print("</table>");
/*
if($_SESSION['sUserLevel'] > 3)
{
print("<a href=\"inschrijvingen_change1.php\">Klik
hier om deze gegevens te wijzigen</a>");
}
*/
} // End if
?>
--
Groeten,
StriKe
http://www.internetfreakz.be
Arnoud Galactus Engelfriet
15/07/05, 11:25
In article <Xns96946F010826Busenetinternetfreakz@195.130.132.7 0>,
StriKe <usenet@internetfreakz.be> wrote:
>Onderstaand scriptje 'werkt perfect' (ik bouw, zoals jullie misschien al
>weten, eerst de basis, dan pas 'validatie' en andere 'veiligheden') maar
>er is slechts één probleempje: de datum. Die wordt telkens afgebeeld als
>zijnde 0000-00-00 terwijl de data écht wel zijn ingevuld. (Bijvoorbeeld
>2004-01-12). De overige gegevens worden wel correct uit de tabel
>uitgelezen.
Hoe is het veld "Datum_inschrijving" gedeclareerd in de tabel?
Wat gebeurt er als je handmatig een query als
SELECT Datum_inschrijving FROM
ngb_inschrijvingen inschrijvingen,
ngb_members_website website
WHERE inschrijvingen.Lidnr = 1 /* kies er eentje */;
uitvoert?
Arnoud
--
Arnoud Engelfriet, Dutch patent attorney - Speaking only for myself
Patents, copyright and IPR explained for techies: http://www.iusmentis.com/
galactus@stack.nl (Arnoud "Galactus" Engelfriet) schreef in news:db7vdb
$27pi$1@toad.stack.nl:
> Hoe is het veld "Datum_inschrijving" gedeclareerd in de tabel?
Dit is de structuur van mijn tabel:
CREATE TABLE `ngb_inschrijvingen` (
`Lidnr` varchar(5) NOT NULL default '',
`Categorie` char(2) NOT NULL default '',
`Datum_inschrijving` date NOT NULL default '0000-00-00',
`Betaald` char(1) NOT NULL default '',
`Printen` char(1) NOT NULL default '',
`Bedrag` double NOT NULL default '0',
`Badmuts` char(3) NOT NULL default '',
`Groep` tinyint(4) NOT NULL default '0',
`Subgroep` tinyint(2) NOT NULL default '0',
`Uur` char(2) NOT NULL default '',
`Aanwezig` tinyint(4) NOT NULL default '0',
`Afwezig` tinyint(4) NOT NULL default '0',
`Verontschuldigd` tinyint(4) NOT NULL default '0',
`Betaal_datum` date NOT NULL default '0000-00-00',
`Betaal_wijze` varchar(20) NOT NULL default '',
`Opmerkingen_van_lesgevers` mediumtext NOT NULL,
`Deleted` char(1) NOT NULL default 'N',
PRIMARY KEY (`Lidnr`,`Datum_inschrijving`)
) TYPE=MyISAM;
> Wat gebeurt er als je handmatig een query als
>
> SELECT Datum_inschrijving FROM
> ngb_inschrijvingen inschrijvingen,
> ngb_members_website website
> WHERE inschrijvingen.Lidnr = 1 /* kies er eentje */;
>
> uitvoert?
Dan drukt hij de datum wel af.
--
Groeten,
StriKe
http://www.internetfreakz.be
Daniel Tryba
15/07/05, 11:55
StriKe <usenet@internetfreakz.be> wrote:
> Onderstaand scriptje 'werkt perfect' (ik bouw, zoals jullie misschien al
> weten, eerst de basis, dan pas 'validatie' en andere 'veiligheden') maar
> er is slechts ??n probleempje: de datum. Die wordt telkens afgebeeld als
> zijnde 0000-00-00 terwijl de data ?cht wel zijn ingevuld. (Bijvoorbeeld
> 2004-01-12). De overige gegevens worden wel correct uit de tabel
> uitgelezen.
> <?php
>
> error_reporting(0);
[knip lang script]
Als je met problemen zit is dit natuurlijk niet echt behulpzaam. Zet
error_reporting op max en maak een heel kort script met de nodige
"debug" output.
Daniel Tryba
15/07/05, 12:55
StriKe <usenet@internetfreakz.be> wrote:
>> Als je met problemen zit is dit natuurlijk niet echt behulpzaam. Zet
>> error_reporting op max en maak een heel kort script met de nodige
>> "debug" output.
>
> Mjah, die error_reporting(0) staat er voorlopig om volgende notices te
> voorkomen:
> Notice: Use of undefined constant Deleted - assumed 'Deleted' in c:
> \server_root\www\ngb\secure2\scripts\inschrijvinge n_view2.php on line 36
Fix it!
> Maar zonder de error_reporting geen enkele error die op die fout wijst ivm
> de datum :(
En daarom moet je dus een minimaal script met de nodige debugging output
maken om even te checken of je beweringen echt wel kloppen (ik geloof er
zelf helemaal niets van (tenzij het een bug is in php, maar dan is er
vast iets te vinden in de bugs database)).
Ronald Klip
15/07/05, 12:55
StriKe schreef:
> Daniel Tryba <partmapsswen@invalid.tryba.nl> schreef in
> news:42d7869c$0$37799$c5fe704e@news6.xs4all.nl:
>
> >> error_reporting(0);
> > [knip lang script]
> >
> > Als je met problemen zit is dit natuurlijk niet echt behulpzaam. Zet
> > error_reporting op max en maak een heel kort script met de nodige
> > "debug" output.
>
> Mjah, die error_reporting(0) staat er voorlopig om volgende notices te
> voorkomen:
> Notice: Use of undefined constant Deleted - assumed 'Deleted' in [..]
Dus je bent op zoek naar een fout maar schakelt het tonen van
foutmeldingen uit?
De correcte syntax is $rij['Deleted'].
En: komt het veld Datum_inschrijving misschien in beide tabellen voor?
--
groet, Ronald
Daniel Tryba <partmapsswen@invalid.tryba.nl> schreef in
news:42d793ad$0$40171$c5fe704e@news6.xs4all.nl:
> StriKe <usenet@internetfreakz.be> wrote:
>>> Als je met problemen zit is dit natuurlijk niet echt behulpzaam. Zet
>>> error_reporting op max en maak een heel kort script met de nodige
>>> "debug" output.
>>
>> Mjah, die error_reporting(0) staat er voorlopig om volgende notices
>> te voorkomen:
>> Notice: Use of undefined constant Deleted - assumed 'Deleted' in c:
>> \server_root\www\ngb\secure2\scripts\inschrijvinge n_view2.php on line
>> 36
>
> Fix it!
Is intussen gebeurd ('' rond de velden gezet die ik uit mijn tabel ophaal).
> En daarom moet je dus een minimaal script met de nodige debugging
> output maken om even te checken of je beweringen echt wel kloppen (ik
> geloof er zelf helemaal niets van (tenzij het een bug is in php, maar
> dan is er vast iets te vinden in de bugs database)).
Dat 'minimale script' heb ik intussen eens voor mezelf geschreven en op
basis daarvan al gemeld (zie antwoord op Arnoud) dat hij dan de datum wel
correct uitleest.
Hieronder dat scriptje:
<?php
$sql = "SELECT inschrijvingen.Datum_inschrijving FROM
ngb_inschrijvingen inschrijvingen,
ngb_members_website website
WHERE inschrijvingen.Lidnr = 'R001'";
$resultaat = mysql_query($sql) or die(MySQL_Error());
while ($Rij = mysql_fetch_array($resultaat))
{
print($Rij['Datum_inschrijving']);
}
?>
Probleem is alleen dat ik dan alle data van de tabel krijg, dus niet alleen
die van lidnummer R001.
Ik denk echter wel dat we de oorzaak moeten zoeken in wat Ronald zegt: in
de tabel ngb_members_website zit namelijk ook een veld datum_inschrijving.
--
Groeten,
StriKe
http://www.internetfreakz.be
Ronald Klip <nieuws@bladibla.net.invalid> schreef in
news:MPG.1d41b26ec976e9e09896cd@news.xs4all.nl:
> Dus je bent op zoek naar een fout maar schakelt het tonen van
> foutmeldingen uit?
> De correcte syntax is $rij['Deleted'].
Die errors zijn intussen gefixed, bedankt!
> En: komt het veld Datum_inschrijving misschien in beide tabellen voor?
Dat is inderdaad het geval. Zowel in ngb_inschrijvingen als
ngb_members_website zit een veld Datum_inschrijving, met exact dezelfde
eigenschappen bovendien.
--
Groeten,
StriKe
http://www.internetfreakz.be
Ronald Klip
15/07/05, 14:15
StriKe schreef:
> Ronald Klip <nieuws@bladibla.net.invalid> schreef in
> news:MPG.1d41b26ec976e9e09896cd@news.xs4all.nl:
>
> > En: komt het veld Datum_inschrijving misschien in beide tabellen voor?
>
> Dat is inderdaad het geval. Zowel in ngb_inschrijvingen als
> ngb_members_website zit een veld Datum_inschrijving, met exact dezelfde
> eigenschappen bovendien.
Maak dan gebruik van aliassen om die velden te onderscheiden:
SELECT *, ngb_inschrijvingen.Datum_inschrijving AS i_datum,
ngb_members_website.Datum_inschrijving AS m_datum
FROM [..]
in je loop uit te lezen als $rij['i_datum'] etc.
Nog beter is om in de query alleen die velden te selecteren die je
daadwerkelijk gaat gebruiken. Dat houdt de result set kleiner.
--
groet, Ronald
Ronald Klip <nieuws@bladibla.net.invalid> schreef in
news:MPG.1d41c635106d34019896ce@news.xs4all.nl:
> Maak dan gebruik van aliassen om die velden te onderscheiden:
> SELECT *, ngb_inschrijvingen.Datum_inschrijving AS i_datum,
> ngb_members_website.Datum_inschrijving AS m_datum
> FROM [..]
>
> in je loop uit te lezen als $rij['i_datum'] etc.
Bedankt, is inderdaad een goeie oplossing.
> Nog beter is om in de query alleen die velden te selecteren die je
> daadwerkelijk gaat gebruiken. Dat houdt de result set kleiner.
Inderdaad. Heb ik even aangepast.
--
Groeten,
StriKe
http://www.internetfreakz.be
Arnoud Galactus Engelfriet
15/07/05, 20:55
In article <Xns9694753DA4E6usenetinternetfreakz@195.130.132.70>,
StriKe <usenet@internetfreakz.be> wrote:
> `Datum_inschrijving` date NOT NULL default '0000-00-00',
De output 0000-00-00 kan komen doordat je een ongeldige waarde
in de tabel stopt. MySQL stopt er dan de default waarde in.
Anders zou ik het zo niet weten. Je zou nog de sql statement
kunnen laten afdrukken in het script en dat statement dan eens
handmatig uitvoeren. Of misschien zie je aan het statement al
gelijk dat 'ie iets verkeerd selecteert.
Arnoud
--
Arnoud Engelfriet, Dutch patent attorney - Speaking only for myself
Patents, copyright and IPR explained for techies: http://www.iusmentis.com/
galactus@stack.nl (Arnoud "Galactus" Engelfriet) schreef in news:db90mq
$16nr$1@toad.stack.nl:
> In article <Xns9694753DA4E6usenetinternetfreakz@195.130.132.70>,
> StriKe <usenet@internetfreakz.be> wrote:
>> `Datum_inschrijving` date NOT NULL default '0000-00-00',
>
> De output 0000-00-00 kan komen doordat je een ongeldige waarde
> in de tabel stopt. MySQL stopt er dan de default waarde in.
>
> Anders zou ik het zo niet weten. Je zou nog de sql statement
> kunnen laten afdrukken in het script en dat statement dan eens
> handmatig uitvoeren. Of misschien zie je aan het statement al
> gelijk dat 'ie iets verkeerd selecteert.
>
> Arnoud
>
>
Nog bedankt voor je reactie maar 't probleem is intussen opgelost zoals
je al kon lezen eerder in de tread.
--
Groeten,
StriKe
http://www.internetfreakz.be