php en mysql

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joop Mol

Joop Mol

10/01/2006 17:33:00
Quote Anchor link
Is het mogelijk om bij een SELECT het onderdeel ORDER BY bijvoorbeeld te gebruiken in de vorm van substr($flipsen,3,5).
Of moet dit toch anders?????
 
PHP hulp

PHP hulp

24/11/2024 00:28:03
 
Frank -

Frank -

10/01/2006 17:36:00
Quote Anchor link
Ehhh, wat probeer je hier te vragen? Wat heeft de SQL-syntax ORDER BY te maken met de PHP-functie substr() ?

Ik heb echt geen idee waar je heen wilt.
 
Arjan Kapteijn

Arjan Kapteijn

10/01/2006 17:45:00
Quote Anchor link
Je kan geen php in de SQL query gebruiken. Maar je kan wel eerst je string bewerken voordat je hem in je query propt...

Bijv:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$waarde
= mysql_real_escape_string($_POST['waarde']);
$waarde = substr($waarde,3,5);
mysql_query("SELECT * FROM tabel WHERE waarde = '".$waarde."'");
?>
 
Joop Mol

Joop Mol

10/01/2006 17:59:00
Quote Anchor link
Wat ik bedoelde te vragen, kan je een veld in een datebase met ORDER BY zo opdelen ten behoeve van een bepaalde volgorde van sorteren.
Is dit oetwat duidelijker?
 
Arjan Kapteijn

Arjan Kapteijn

10/01/2006 18:03:00
Quote Anchor link
Tuurlijk kan dat, maar echt duidelijker word het er voor mij niet door...

http://dev.mysql.com/doc/refman/5.0/en/sorting-rows.html
 
Joop Mol

Joop Mol

10/01/2006 18:26:00
Quote Anchor link
Een voorbeeld:
in een veld staat de de datum geregegistreerd op de wijze "03/04/2006" maar ik zou graag tijdelijk dit veld t.b.v. het sorteren zien als "2006/04/03"
 
Arjan Kapteijn

Arjan Kapteijn

10/01/2006 18:43:00
Quote Anchor link
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

Maar waarschijnlijk heb je de datum niet in een DATETIME, DATE, of TIMESTAMP type opgeslagen...
 

10/01/2006 19:02:00
Quote Anchor link
En desnoods:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<? $jaar= substr($DATUM,4,4);
$dag=substr($DATUM,0,2);
$maand =substr($DATUM,2,2);

$Datum = $jaar."-". $maand."-".$dag ;

En deze zet je in een DATETIME veld in je DB kun je hierop sorteren
 

10/01/2006 19:02:00
Quote Anchor link
EDIT zonder streepjes :)
 
Joop Mol

Joop Mol

10/01/2006 19:05:00
Quote Anchor link
Inderdaad de datum is gewoon als een string opgeslagen. Wat nu gedaan?
 
Willem vp

Willem vp

10/01/2006 20:05:00
Quote Anchor link
Als ik ervan uit ga dat het datumveld datum heet, zou je iets kunnen proberen als de volgende query:

SELECT *, STR_TO_DATE(datum,'%d/%m/%Y') as isodate
FROM tabel
ORDER BY isodate
 
Joop Mol

Joop Mol

10/01/2006 23:05:00
Quote Anchor link
Inderdaad de datum is gewoon als een string opgeslagen. Wat nu gedaan?
 
Jan Koehoorn

Jan Koehoorn

10/01/2006 23:09:00
Quote Anchor link
Ja, zie de post van Willem op hetzelfde tijdstip.
 
Robert Deiman

Robert Deiman

10/01/2006 23:12:00
Quote Anchor link
SCherp opgemerkt jan, maar de 1e keer
"Inderdaad de datum is gewoon als een string opgeslagen. Wat nu gedaan?" was een uur eerder dan het antwoord van willem, en de 2e was 3 uur later..
 
Joop Mol

Joop Mol

11/01/2006 15:12:00
Quote Anchor link
Dank voor jullie informatie, maar ik ben er nog niet uit want......zie dit bericht:
You have an error in your SQL syntax etc.....near

'STR_TO_DATE(date,'%d/%m/%Y') AS isodate FROM agenda WHERE genre='activiteit' OR' at line 1
dit foutbericht verschijnt zowel op mijn "localhost" als wel bij mijn hostingprovider.
-------------------------------------
Wat nu wel lukt op m'n "localhost" is:
ORDER BY substr(date,4,7)
echter is dit een ordering van maand en jaar.
Maar probeer ik dit laatste bij mijn hostingprovider dan werkt dit niet.
 
Willem vp

Willem vp

11/01/2006 15:28:00
Quote Anchor link
order by str_to_date(enzovoort) zou dan op je localhost ook moeten lukken. Ik vrees echter dat je provider een andere (lees: oudere) MySQL-versie heeft en dat het dan lastig gaat worden om het toch aan de praat te krijgen, aangezien oudere versies niet kunnen sorteren op aliasen.

Wat je als paardemiddel nog zou kunnen doen is een extra datetime-veld toevoegen met daarin een "echte" timestamp die hetzelfde is als het date-veld. Daar kun je wel op sorteren.

Nog mooier zou zijn om het date-veld zelf te converteren naar een datetime-veld, dan kun je sorteren *en* heb je geen redundante data.
 
Joop Mol

Joop Mol

11/01/2006 15:45:00
Quote Anchor link
Jouw opmerking:
order by str_to_date(enzovoort) zou dan op je localhost ook moeten lukken. Dat is ook zo....neem mij niet kwalijk.

Misschien is toch de weg om een ander in te converteren. En ander.......het paardenmiddel.

Ik zal ook nog informeren bij mijn provider ......
In elke geval aan eenieder mijn dank.
 
Joop Mol

Joop Mol

12/01/2006 13:08:00
Quote Anchor link
Ter afsluiting:
1 Mijn provider werkt nog met MYSQL 4.1.... De latere versies zijn nog in de pilot. Vandaar...!!

2 Dus dan maar het paardenmiddel toegepast en dat werkt uiteraard. Niet fraai maar vooruit.

Nogmaals dank voor de ondersteuning.
 
Willem vp

Willem vp

12/01/2006 13:36:00
Quote Anchor link
Ach, troost je... op mijn eigen server heb ik nog 3.23.53 ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.