Goedenavond,

ik probeer een website in elkaar te zetten waar de personen een datum invoeren wanneer een ander een afspraak heeft. Dit invoeren lukt wel d.m.v. invoeren via een invoerformulier in de database die er als volgt uitziet.
Afbeelding database


De uitvoer van de opgevraagde gegevens uit deze database is als volgt:
Afbeelding Registratiekaart
Dit ziet er prima uit alleen 1 ding krijg ik niet gedaan. Dat de datum niet als datum weergeven wordt, maar als dagnaam. 01-01-2017 wordt uitgelezen als Zondag bijvoorbeeld.
Script voor de uitvoer is als volgt:

<?php
mysql_connect("localhost", "-------------", "---------------");
mysql_select_db("-----------");

$result = mysql_query("SELECT * FROM registratiekaart WHERE id = '" . $_GET['id'] . "'")
or die(mysql_error());

echo "<table>";
while($data = mysql_fetch_assoc($result)) {
echo "<tr>";
echo "<th colspan='8'> Paraafkaart werken in de studiewerkruimte </th>";
echo "</tr>";
echo "<tr>";
echo "<th colspan='8'>" . $data["voornaam"] . " " . $data["tussenvoegsel"] . " " . $data["achternaam"] . "</th>";
echo "</tr>";
echo "<tr>";
echo "<td> datum </td>";
echo "<td> lesuur </td>";
echo "<td> paraaf </td>";
echo "<td colspan='5'> opmerkingen </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data["datum1"] . "</td>";
echo "<td>" . $data["lesuur1"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data["datum2"] . "</td>";
echo "<td>" . $data["lesuur2"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data["datum3"] . "</td>";
echo "<td>" . $data["lesuur3"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";

echo "</tr>";
echo "<tr>";
echo "<td>" . $data["datum4"] . "</td>";
echo "<td>" . $data["lesuur4"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data["datum5"] . "</td>";
echo "<td>" . $data["lesuur5"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
}
echo "</table>";

?>

Mijn vraag is dus of iemand dit kan veranderen zodat de dagnaam weergeven wordt. Dank u alvast.
Die heb ik al meerdere keren doorgenomen de afgelopen week, maar ik krijg het niet in mijn script verwerkt.
Ik moet deze functie hebben van de DATE_FORMAT ga ik vanuit: %W Weekday name (Sunday-Saturday)
Maar waar moet ik dit dan aanpassen in de query:
<?php
$result = mysql_query("SELECT * FROM registratiekaart WHERE id = '" . $_GET['id'] . "'")
?>
Door niet * te selecteren, maar wat je nodig hebt, waaronder je DATE_FORMAT regel.
Aha, SELECT * vervangen door .........?

<?php
$result = mysql_query("SELECT DATE_FORMAT(datum1,'%W') AS day_date1, dit, dat, dus, zo FROM registratiekaart WHERE id = '" . mysql_real_escape_string($_GET['id'])."'");
if($result === false) {
	echo "Er is een fout opgetreden: ".mysql_error();
} else {
	// hier je afhandeling als de query gelukt is.
	}
	
?>



Verder is het niet netjes en ook in-effecient om velden te nummeren. Probeer zulke databaseconstructies te ontwijken.
Ik heb je query gekopieerd, maar ik moet eerlijk toegeven dat ik hem niet helemaal volg. Het is ook wel handig om te weten dat ik geen programmeur ben of iets doe in de ICT-wereld. Dit is een middelbaar schoolproject namelijk.

<?php
mysql_connect("-------------");
mysql_select_db("-------");


$result = mysql_query("SELECT DATE_FORMAT(datum1,'%W') AS day_date1 FROM registratiekaart WHERE id = '" . mysql_real_escape_string($_GET['id'])."'");
if($result === false) {
echo "Er is een fout opgetreden: ".mysql_error();
} else {



echo "<table>";
while($data = mysql_fetch_assoc($result)) {
echo "<tr>";
echo "<th colspan='8'> Paraafkaart werken in de studiewerkruimte </th>";
echo "</tr>";
echo "<tr>";
echo "<th colspan='8'>" . $data["voornaam"] . " " . $data["tussenvoegsel"] . " " . $data["achternaam"] . "</th>";
echo "</tr>";
echo "<tr>";
echo "<td> datum </td>";
echo "<td> lesuur </td>";
echo "<td> paraaf </td>";
echo "<td colspan='5'> opmerkingen </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data["datum1"]. "</td>";
echo "<td>" . $data["lesuur1"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data["datum2"] . "</td>";
echo "<td>" . $data["lesuur2"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data["datum3"] . "</td>";
echo "<td>" . $data["lesuur3"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";

echo "</tr>";
echo "<tr>";
echo "<td>" . $data["datum4"] . "</td>";
echo "<td>" . $data["lesuur4"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data["datum5"] . "</td>";
echo "<td>" . $data["lesuur5"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
}
echo "</table>";
}
?>

Dit werkt niet, maar wat gaat er hier fout? Alvast bedankt voor alles.
-- Verder is het niet netjes en ook in-effecient om velden te nummeren. Probeer zulke databaseconstructies te ontwijken.
Meer specifiek: Het advies is dus om te normaliseren, je gegevens zoveel mogelijk in de derde normaalvorm afbeelden in je database. De vraag kan nu bijvoorbeeld zijn: Hoe sla je datum6 op wanneer dat nodig blijkt te zijn? Maak je dan een attribuut dtum6 erbij? enzovoort tot datum365?
"AS day_date1" staat er in je query. Dus je moet dan ook day_date1 gebruiken in de index van je $data-variabele.
Aad B op 24/04/2017 21:10:39

-- Verder is het niet netjes en ook in-effecient om velden te nummeren. Probeer zulke databaseconstructies te ontwijken.
Meer specifiek: Het advies is dus om te normaliseren, je gegevens zoveel mogelijk in de derde normaalvorm afbeelden in je database. De vraag kan nu bijvoorbeeld zijn: Hoe sla je datum6 op wanneer dat nodig blijkt te zijn? Maak je dan een attribuut dtum6 erbij? enzovoort tot datum365?

Dat zal niet nodig zijn. Je geeft maar vijf dagen voor een week. Het enige wat ik nog geregeld moet krijgen is het weergeven van een dagnaam en dat lukt me nu juist niet.

Hint: Misschien kan het wat extra punten scoren als je het genormaliseerd aanpakt ;-)

En om je vraag te beantwoorden: Zie mijn reactie.
Super kerel, het is me gelukt. Dit script heb ik nu gebruikt:
<?php
mysql_connect("-------------");
mysql_select_db("--------");


$result = mysql_query("SELECT DATE_FORMAT(datum1,'%W') AS day_date1, DATE_FORMAT(datum2,'%W') AS day_date2, DATE_FORMAT(datum3,'%W') AS day_date3, DATE_FORMAT(datum4,'%W') AS day_date4, DATE_FORMAT(datum5,'%W') AS day_date5 FROM registratiekaart WHERE id = '" . mysql_real_escape_string($_GET['id'])."'");
if($result === false) {
echo "Er is een fout opgetreden: ".mysql_error();
} else {



echo "<table>";
while($data = mysql_fetch_assoc($result)) {
echo "<tr>";
echo "<th colspan='8'> Paraafkaart werken in de studiewerkruimte </th>";
echo "</tr>";
echo "<tr>";
echo "<th colspan='8'>" . $data["voornaam"] . " " . $data["tussenvoegsel"] . " " . $data["achternaam"] . "</th>";
echo "</tr>";
echo "<tr>";
echo "<td> datum </td>";
echo "<td> lesuur </td>";
echo "<td> paraaf </td>";
echo "<td colspan='5'> opmerkingen </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data[day_date1]. "</td>";
echo "<td>" . $data["lesuur1"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data[day_date2] . "</td>";
echo "<td>" . $data["lesuur2"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data[day_date3] . "</td>";
echo "<td>" . $data["lesuur3"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";

echo "</tr>";
echo "<tr>";
echo "<td>" . $data[day_date4] . "</td>";
echo "<td>" . $data["lesuur4"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data[day_date5] . "</td>";
echo "<td>" . $data[lesuur5] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
}
echo "</table>";
}
?>

Het enige probleem is nu dat het lesuur niet weergeven wordt, maar daar ga ik even naar kijken.


[size=xsmall]Toevoeging op 24/04/2017 21:24:18:[/size]

Jaap den Dool op 24/04/2017 21:20:35

Super kerel, het is me gelukt. Dit script heb ik nu gebruikt:
<?php
mysql_connect("localhost", "", "");
mysql_select_db("");


$result = mysql_query("SELECT DATE_FORMAT(datum1,'%W') AS day_date1, DATE_FORMAT(datum2,'%W') AS day_date2, DATE_FORMAT(datum3,'%W') AS day_date3, DATE_FORMAT(datum4,'%W') AS day_date4, DATE_FORMAT(datum5,'%W') AS day_date5 FROM registratiekaart WHERE id = '" . mysql_real_escape_string($_GET['id'])."'");
if($result === false) {
echo "Er is een fout opgetreden: ".mysql_error();
} else {



echo "<table>";
while($data = mysql_fetch_assoc($result)) {
echo "<tr>";
echo "<th colspan='8'> Paraafkaart werken in de studiewerkruimte </th>";
echo "</tr>";
echo "<tr>";
echo "<th colspan='8'>" . $data["voornaam"] . " " . $data["tussenvoegsel"] . " " . $data["achternaam"] . "</th>";
echo "</tr>";
echo "<tr>";
echo "<td> datum </td>";
echo "<td> lesuur </td>";
echo "<td> paraaf </td>";
echo "<td colspan='5'> opmerkingen </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data[day_date1]. "</td>";
echo "<td>" . $data["lesuur1"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data[day_date2] . "</td>";
echo "<td>" . $data["lesuur2"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data[day_date3] . "</td>";
echo "<td>" . $data["lesuur3"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";

echo "</tr>";
echo "<tr>";
echo "<td>" . $data[day_date4] . "</td>";
echo "<td>" . $data["lesuur4"] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . $data[day_date5] . "</td>";
echo "<td>" . $data[lesuur5] . "</td>";
echo "<td> </td>";
echo "<td> </td>";
echo "</tr>";
}
echo "</table>";
}
?>

Het enige probleem is nu dat het lesuur niet weergeven wordt, maar daar ga ik even naar kijken.



Reageren