Hallo allemaal,

Ik wil een ORDER BY in mijn PHP PDO code plaatsen.
Maar ik lees eigenlijk her en der op internet dat dat niet zomaar kan.

Ik zou het met fetch() of fetchall() moeten doen, maar wat ik ook doe, ik hou een vreemde volgorde.
Ik wil ordenen op datum en dan op nummer.

maar binnen 1 datum zie ik het nummer aftellen van 11 naar 1 en dan van 12 optellen naar 20. Dit moet natuurlijk van 1 naar 20 of anders om zijn.
om mijn regels te tonen, heb ik de volgende code:


<?php
				$sql_journaalposten = "SELECT * FROM tabel_journaalposten WHERE journaalposten_administratie=:journaalposten_administratie AND journaalposten_datum=:journaalposten_datum1";
				$stmt_journaalposten = $dbh->prepare($sql_journaalposten);
				$stmt_journaalposten->bindParam(':journaalposten_datum1',$datum1);
				$stmt_journaalposten->bindParam(':journaalposten_administratie',$adm_id);
				$stmt_journaalposten->execute();
?>


en een stuk verder op heb ik dan in het HTML gedeelte:


								<table align="left" class="hovertabel">
									<th>datum</th>
									<th>nr.</th>
									<th>inkomsten</th><th>uitgaven</th>
									<?php 
									// de volgende regel geeft geen 1e record.
									foreach($stmt_journaalposten->fetchall(PDO::FETCH_BOTH) as $record_journaalposten){
									//$link="index.php?id=" . $record_journaalposten['journaalposten_administratie'];
										echo "<tr><td>";
										echo substr($record_journaalposten['journaalposten_datum'],8,2)."-".substr($record_journaalposten['journaalposten_datum'],5,2)."-".substr($record_journaalposten['journaalposten_datum'],0,4)."</td><td>";
										echo $record_journaalposten['journaalposten_nummer']."\n</td><td>";
										if ($record_journaalposten['journaalposten_inkomsten']) {
											$journaalpostbedrag_debet = $record_journaalposten['journaalposten_bedrag'];
											$journaalpostbedrag_credit = "";
										} else {
											$journaalpostbedrag_debet = "";
											$journaalpostbedrag_credit = $record_journaalposten['journaalposten_bedrag'];
										}
										echo $journaalpostbedrag_debet."</td><td>";
										echo $journaalpostbedrag_credit."</td><td>";
										echo "</td></tr>"; 
									}
									?>
								</table>


Ik ben benieuwd wie me hierbij kan helpen.

Alvast bedankt.
Frits van Leeuwen
Bedankt voor het advies. Ik ga eens kijken wat ik er mee kan.
Ik had voor PDO gekozen omdat ik ergens gelezen had dat mysql uit PHP7 zou wegvallen. En dat PDO meer zou kunnen dan mysqli. Ook het deel dat je eventueel een Access database kan aansturen sprak mij aan.

Het verschil tussen tekst en numeriek is mij bekend. Maar ik heb nu geen logica. Zie mijn eerste bericht.
Ik ga nu eerst nog eens de aanwijzing van Milo S proberen en laat dan weer van me horen. Misschien dat het me toch lukt.





[size=xsmall]Toevoeging op 12/10/2017 21:33:04:[/size]

In phpmyadmin lees ik dat ik date heb gekozen voor de journaalposten_datum en int(3) voor journaalposten_nummer

Waarom het eerder niet werkte weet ik niet, want nu doet hij het wel goed.
Bedankt voor het meedenken en de uitleg. ik heb er toch weer veel van geleerd.
Frits van Leeuwen op 12/10/2017 18:14:35
Ik had voor PDO gekozen omdat ik ergens gelezen had dat mysql uit PHP7 zou wegvallen.

Dat klopt, de standaard MySQL driver (de verzameling mysql_* functies) is niet meer beschikbaar in PHP 7. Deze waren ook al ~10+ jaar verouderd ten opzichte van MySQLi. Dus hoog tijd dat dat oud grut niet meer meegeleverd wordt.

Frits van Leeuwen op 12/10/2017 18:14:35
En dat PDO meer zou kunnen dan mysqli. Ook het deel dat je eventueel een Access database kan aansturen sprak mij aan.

PDO voorziet alleen in standaardisering van het praten met een database, de SQL-taal zelf die gesproken wordt is echter (redelijk) database-specifiek, verschillende dialecten per database-type moet je maar denken. Daarom is alles wat je in PDO doet niet standaard uitwisselbaar tussen verschillende database-typen (nog even los van alle data die daarin zit, die verhuist niet automagisch mee als je van database schakelt).

Daarnaast lijkt mij het willekeurig schakelen tussen databases niet iets wat je uit oogpunt van applicatie-design zou willen.

Dit argument ("ondersteunt" meerdere databases) is dus een non-argument dat geen praktische meerwaarde heeft.

Wederom, de leercurve zit in de database-specifieke drivers. Hier zul je je echt goed in moeten verdiepen voordat je met enige database aan de slag kunt. PDO zelf is simpel, dit is een verzameling van eenvoudige klasses. Het "venijn" zit em in de staart (de drivers).

Als je dan toch enkel van een MySQL-database gebruik maakt is er geen reden om niet van MySQLi gebruik te maken. Het vergt misschien wat meer discipline, maar werkt een stuk intuïtiever dan PDO in combinatie met de MySQL-driver voor PDO.
Bedankt voor de uitleg. Ik kan me er wel in vinden. Ik ga kijken hoe of dat ik mijn programma om kan bouwen naar MYSQLi. Toch weer een hoop geleerd. Bedankt

Reageren