Krijg je een mysql error of iets in die richtingrnOf sorteert hij niet naar jou wensenrn
roy - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
PHP gevorderde
hij sorteerd helemaal niet, ik heb het ook geprobeerd op 1 kolomS (en ik krijg geen foutmelding, hij toont wel de resultaten)rnrnIn de kolommen waarop gesorteerd moet worden staan getallenrndit is het hele scriptrnrn[code]rnPHPrnfunction uitlezen($dir){ rn$uitlees=opendir($dir); rn$bestanden=array(); rnwhile(($dit_bestand = readdir($uitlees))!==false){ rn$bestanden[] = $dit_bestand; rn} rnclosedir($uitlees); rnreturn $bestanden; rn} rnrnecho ik haal alle bestanden op uit ,$eindlocatie, br;rnrn$arree = uitlezen($eindlocatie);rn$bestanden = uitlezen($eindlocatie); rnforeach ($arree as $url) { rn$basename = basename($url); is de bestandsnaam!rnrn$query=SELECT FROM `tacx` WHERE .$uniekveld.='.$basename.' AND Round='.$round.' ORDER BY Ts ASC, Tm ASC, Th ASC;rnrnnu worden de gegevens geselecteerd en ze worden gerangschikd op id dus nieuw komt eerst rn $sql=mysql_query($query) or die (mysql_error()); rnrn while ($obj=mysql_fetch_object($sql)) { rn $id = $obj-user; rn $Dd = $obj-Dd; rn $Dm = $obj-Dm; rn $Dy = $obj-Dy; rn $Th = $obj-Th; rn $Tm = $obj-Tm; rn $Ts = $obj-Ts;rn rn $query=SELECT FROM `gebruikers` WHERE id='.$id.'; rnnu worden de gegevens geselecteerd en ze worden gerangschikd op id dus nieuw komt eerst rn $sql=mysql_query($query) or die (mysql_error()); rnrn while ($obj=mysql_fetch_object($sql)) { rn $name = $obj-naam; rn $country = $obj-country;rnrn trrn td width=10%php echo $i; tdrn td width=10% echo $Dd; - echo $Dm; - echo $Dy; tdrn td width=10%PHP echo .$name.; tdrn td width=10%img src= echo $country border=0 align=centertdrn td width=10% echo $Th; echo $Tm; echo $Ts; tdrn td width=10% tdrn td width=10% tdrn td width=10% echo $Th; echo $Tm; echo $Ts; tdrn td width=10%PHP echo $h; tdrn td width=10%PHP echo $h; tdrn trrnrnrn php rn $i++; rn $h--;1 tot 5 rn} rnrnrn}rnrnrn}rnrn tablern centerrndivrnrn[code]rnrnweet iemand hoe ik wel kan sorteren
dat script ziet er niet goed uit. Een aantal dingen die meteen opvallenrnrn- je springt (bijna) niet in, dat maakt het onoverzichtelijkrn- waarom plak je hier 2 lege strings aan de variabele bij het echoën Heeft geen zin.rn[code]PHP echo .$name.; [code]rn- de resultaten van het query resultaat $sql wil je in een while weergeven. In die while kopieer je eerst allerlei variabelen, wat ook geen zin heeft. Daarna overschrijf je $sql met een nieuwe query, waardoor de 1e while maar 1x uitgevoerd wordt. Je zult je variabelen dus andere namen moeten geven.rn[edit]ik lette niet zo goed op. Bij je 2e query wil je maar 1 rij ophalen, dus hoef je geen while te gebruiken.[edit]rnrnVerder weet ik niet of dit de beste manier is. Ipv bij elk record de naam en het land van de gebruiker op te halen met een andere query zou je ook een join kunnen gebruiken, of beter een subquery. Subquery worden echter alleen ondersteund door de nieuwste mysql versie(s) (4.1 dacht ik).
Wat betreft de netheid, heb je gelijk, maar dat mag geen invloed op het sorteren hebben..rnrndie 2 strings zijn weg..rnrnOok als ik de tweede query weghaal kan er niet gesorteerd worden s op geen enkele kolom
je zegt kan er niet gesorteerd worden maar je zegt ook dat je geen error krijgt van mysql.rnrnWelke rijen heb je precies in je tabel, in welke volgorde worden ze nu geselecteerd en hoe zou je het willen hebben
[b]rijen in de tabel[b]rnrnvelden eerste rijtweede rijrnid 46 47 rnuser 11 12 rnDd 01 01 rnDm 01 01rnDy 2002 2002rnTh 00 00rnTm 05 04rnTs 15 00rnRound Round 9 Round 9 rnrn[b]Zo komen ze nu[b]rn01-01-2002 000515 rn01-01-2002 000400 rn rn[b]Zo moeten ze komen[b]rn01-01-2002 000400 (snelste eerst)rn01-01-2002 000515 rnrnrnNu zijn het maar twee rijen, uiteindelijk moeten het er veel meer worden.
Thomas - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
Moderator
Euh, MySQL weet wel hoe die moet sorteren, jij waarschijnlijk niet... Wil je eerst op seconden sorteren, dan op minuten en dan op uren Ik denk dat je het juist andersom wilt doen rnrnMySQL sorteert standaard oplopend (ASC).rnrnHet moet dus zijnrnORDER BY Th, Tm, Ts
Ehm round is volgensmij een gereserveerd woord lijkt me,rnrn[code]SELECT FROM `tabelnaam` rnWHERE `.$uniekveld.` = '.$basename.' rnAND `Round` = '.$round.'rn ORDER BY `Ts`,`Tm`,`Th`[code]
roy - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
PHP gevorderde
dat dacht ik ook, maar het werkt niet....rn rnmijn Scriptrnrn[code]rnPHPrn$tabelnaam = tacx; naam van de tabelrn$origineelveld = origineel; naam van de velden in je tabelrn$uniekveld = uniek; naam van de velden in je tabelrn$mimeveld = mime; naam van de velden in je tabelrn$i = 1; rn$h = 75;rnvolgende var is het pad waar alles wordt opgeslagen.rn$eindlocatie = $_SERVER['DOC_ROOT'].varwwwhtmlChrisfilestacx; echo deze variabele als je niet zeker bent!rnrnrnrnrnfunction uitlezen($dir){ rn$uitlees=opendir($dir); rn$bestanden=array(); rnwhile(($dit_bestand = readdir($uitlees))!==false){ rn$bestanden[] = $dit_bestand; rn} rnclosedir($uitlees); rnreturn $bestanden; rn} rnrnecho ik haal alle bestanden op uit ,$eindlocatie, br;rnrnrn$arree = uitlezen($eindlocatie);rn$bestanden = uitlezen($eindlocatie); rnforeach ($arree as $url) { rn$basename = basename($url); is de bestandsnaam!rnrn$query=SELECT FROM `tacx` WHERE .$uniekveld.='.$basename.' AND Round='.$round.' ORDER BY Th, Tm, Ts DESC; rnnu worden de gegevens geselecteerd en ze worden gerangschikd op id dus nieuw komt eerst rn $sql=mysql_query($query) or die (mysql_error()); rnrn while ($obj=mysql_fetch_object($sql)) { rn $did = $obj-user; rn $Dd = $obj-Dd; rn $Dm = $obj-Dm; rn $Dy = $obj-Dy; rn $Th = $obj-Th; rn $Tm = $obj-Tm; rn $Ts = $obj-Ts;rn rn $query=SELECT FROM `gebruikers` WHERE id='.$did.'; rnnu worden de gegevens geselecteerd en ze worden gerangschikd op id dus nieuw komt eerst rn $sql=mysql_query($query) or die (mysql_error()); rnrn while ($obj=mysql_fetch_object($sql)) { rn $name = $obj-naam; rn $country = $obj-country;rnrn trrn td width=10%php echo $i; tdrn td width=10% echo $Dd - echo $Dm - echo $Dy tdrn td width=10%PHP echo a href=pagesbestand.phpbestand=.stripslashes($basename)..$name.abr; tdrn td width=10%img src= echo $country border=0 align=centertdrn td width=10% echo $Th echo $Tm echo $Ts tdrn td width=10% tdrn td width=10% tdrn td width=10% echo $Th echo $Tm echo $Ts tdrn td width=10%PHP echo $h;; tdrn td width=10%PHP echo $h;; tdrn trrnrn php rn $i++; rn $h--;1 tot 5 rn} rnrnrn}rnrnrn}rnrn tablern centerrndiv[code]
Thomas - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
Moderator
[quote]MySQL sorteert standaard oplopend (ASC).[quote]rnAls je de [b]oudste[b] entries bovenaan wilt hebben staan zul je DESCending (aflopend) moeten sorteren op jaar, (èn aflopend) op maand, (èn aflopend) op dag, (èn aflopend) op uur, (èn aflopend) op minuut en (aflopend) op seconden (in die volgorde!)...rnOmdat [i]nieuwere[i] entries ook automatisch een hoger id hebben, zou je ook (in plaats van de hele bovenstaande zooi) AFlopend kunnen sorteren op id... dus gebruik ORDER BY id [b][u]DESC[u][b].rnrnNB Zoals ik al zei sorteert MySQL standaard [u]op[u]lopend - wil je op één of meer attributen [u]af[u]lopend sorteren, zul je voor [b]elk[b] element aan moeten geven dat dit aflopend dient te gebeuren... Het moet dus waarschijnlijk niet ORDER BY Th, Tm, Ts [b]DESC[b] zijn zoals ik hierboven zag, maar ORDER BY Th [b]DESC[b], Tm [b]DESC[b], Ts [b]DESC[b] - en dan heb je nog geen rekening gehouden met dag, maand en jaar, maar het kan dus simpeler, met behulp van id.
ik begrijp wel hoe het werkt, ik weet denk ik ook waarom het bij mij fout gaat.rnrnHet komt omdat hij die directory uitleest. Als ik dat stuk script weghaal dan werkt het wel, maja dat is nou net een belangrijk stuk script.rnrnHoe kan ik ervoor zorgen dat hij toch de directory uitleest en sorteert gaat zover ik heb geprobeerd niet met een include.rn
Thomas - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
Moderator
Heb je al eens gekeken naar wat $arree inhoudt rnDit zou ik eerst eens doen. $arree levert ook de bestanden . en .. op, en ook subfolders (zo die er zijn) - deze kun je sowieso weglaten Hierna zou je eens kunnen kijken naar elk (geldig) bestand, en de hierbij behorende query. Doorloop deze stuk voor stuk (of in ieder geval een paar) om te kijken waar het fout gaat.rnrnScheid dus je probleem in stukken, en kijk bij elk stuk of er zich problemen voordoen. Maak het voor jezelf gemakkelijk.
roy - 30/11/1999 00:00 (laatste wijziging 30/11/1999 00:00)
PHP gevorderde
$arree geeft de bestandsnamen die in die directory staan (3465236, 65436345, 3465534) waarbij later de originele bestand naam over wordt gezet.rnrnja het zijn allemaal geldige bestanden, zonder het sorteren krijg ik gewoon de resultaten maar niet in mijn gewenste volgorde.