Avatar billede fredney Nybegynder
21. februar 2003 - 15:37 Der er 27 kommentarer

ORDER BY

Jeg mener selv at være fortrolig med funktionen ORDER BY men jeg sidder desperat med et eksempel hvor den bare ikke sorterer dem efter min betingelse.

Er der nogle forhold der kan forhindre denne funktion i at virke??
Avatar billede erikjacobsen Ekspert
21. februar 2003 - 15:40 #1
Ja, fx hvis du putter tal i tekstfelt (CHAR / VARCHAR)
Avatar billede ztyxx Nybegynder
21. februar 2003 - 15:41 #2
ellers ville lidt af din sql sætning og oplysninger om din tabel hjælpe :-)
Avatar billede fredney Nybegynder
21. februar 2003 - 15:56 #3
Jeg har lige checket og det er en INT(11) med 5-6 cifre i.

her er hele kaldet:

$get = "SELECT cal_id, cal_date, cal_time, cal_duration, cal_priority, cal_name, cal_description FROM webcal_entry WHERE cal_access = 'P' AND cal_id = $del[0] AND cal_date >= $idag ORDER BY cal_date ASC";
Avatar billede roo104 Nybegynder
21. februar 2003 - 16:14 #4
er cal_date ikke date ? Du kan da ikke lagre fx 21-02-2003 i en int
Eller bruger du 210203 for så order den efter alle ugedage og ikke år-måned-dag
Avatar billede fredney Nybegynder
21. februar 2003 - 16:17 #5
20030221 (21 februar 2003)

sådan her smider jeg dem ind...
Avatar billede roo104 Nybegynder
21. februar 2003 - 16:27 #6
Den burde sortere dem, selvom det er int.
Sorterer den slet ikke eller gør den det bare forkert ?
Avatar billede fredney Nybegynder
21. februar 2003 - 16:29 #7
du kommer ud i den rækkefølge de er smidt ind...
Avatar billede human Nybegynder
21. februar 2003 - 16:31 #8
Bare for sjov, prøv ORDER BY cal_date DESC
Avatar billede roo104 Nybegynder
21. februar 2003 - 16:32 #9
har du nogle blanke felter eller felter der er null ?
Avatar billede fredney Nybegynder
21. februar 2003 - 16:35 #10
Ja, men jeg tror ikke jeg henter dem....
Avatar billede fredney Nybegynder
21. februar 2003 - 16:59 #11
DESC ændre ingenting, hvilket for mig til at tro at den slet ikke kører funktionen....
Avatar billede roo104 Nybegynder
21. februar 2003 - 17:04 #12
$idag hedder også 20030221 ik ?
du bruger ikke en funktion til at kalde date ?
Avatar billede fredney Nybegynder
21. februar 2003 - 17:08 #13
$idag = date("Ymd");

kalde date??
Avatar billede roo104 Nybegynder
21. februar 2003 - 17:18 #14
OK så er det nok kke det.

Hvis du havde brugt date som dato-type kunne du bruge en masse dato functioner både i mysql og PHP.
fx cal_date >= now() //ren sql
Avatar billede erikjacobsen Ekspert
21. februar 2003 - 19:38 #15
Må vi se al den relevante kode?
Avatar billede fredney Nybegynder
21. februar 2003 - 19:49 #16
<?
?>
<table align="left" cellspacing="5">
<?
    include "db.php";
    $liste = "SELECT nr, titel FROM site WHERE ap = 1 AND id = 0 ORDER BY raekke ASC";
    $resultat = MYSQL_QUERY($liste);
    while($data = mysql_fetch_array($resultat)){
?>

<tr>
<td colspan="2"><strong><a href="<? echo "$PHP_SELF?insite=$data[0]"; ?>" class="titelgra"><? echo $data[1]; ?></a></strong></td>
</tr>
    <?
           
        // Undersider
        $liste9 = "SELECT nr, id, titel FROM site WHERE id = $data[0] AND ap = 1 ORDER BY raekke ASC";
        $resultat9 = MYSQL_QUERY($liste9);
        while($data9 = mysql_fetch_array($resultat9)){
       
        if (($insite == $data9[1]) || ($id == $data9[1])){
    ?>
<tr >
<td width="15%"></td>
<td><li><a href="<? echo "$PHP_SELF?insite=$data9[0]&id=$data9[1]"; ?>" class="teksthvid"><? echo $data9[2]; ?></a></li></td>
</tr>
      <?
}}}
?>

</tr>
</table>

<?
?>
Avatar billede erikjacobsen Ekspert
21. februar 2003 - 19:54 #17
Det var ikke det du skrev kl. 15:56:05
Avatar billede fredney Nybegynder
21. februar 2003 - 19:57 #18
Sorry , det er den forkerte...
Avatar billede fredney Nybegynder
21. februar 2003 - 19:58 #19
<?
    $get1 = "SELECT cal_id FROM webcal_entry_user WHERE cal_status = 'A'";
    $resultat = MYSQL_QUERY($get1);
    while($del = mysql_fetch_array($resultat)){
   
    $idag = date("Ymd");
 
    $get = "SELECT cal_id, cal_date, cal_time, cal_duration, cal_priority, cal_name, cal_description FROM webcal_entry WHERE cal_access = 'P' AND cal_id = '$del[0]' AND cal_date >= '$idag' ORDER BY cal_date ASC";
    $resultat1 = MYSQL_QUERY($get);
    while($tekst = mysql_fetch_array($resultat1)){
    $d = substr($tekst[1], 6);
    $m = substr($tekst[1], 4, 2);
    $y = substr($tekst[1], 0, 4);
    $t = substr($tekst[2], 0, -4);
    $min = substr($tekst[2], -4, 2);
    $str = $tekst[6];
    $content = tagster_format($str, "_blank", "tekst.css");

    ?>
  <tr>
    <td width="20%" class="teksthvid" valign="top"><div align="center"><? echo "$d"." / "."$m"; ?></div></td>
    <td ><a href="<? echo "$PHP_SELF?insite=$insite&text=$tekst[0]"; ?>" class="<? if ($tekst[4] == "3"){ echo "titelgra";} else {echo "teksthvid";}?>" align="left"><? echo $tekst[5]; ?></a>

    <? if ($text == $tekst[0]){
    ?>
    <BLOCKQUOTE dir=ltr style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #808080 2px solid; MARGIN-RIGHT: 0px">

    <span class='teksthvid'>Arrangementet er Kl. <? echo "$t.$min<br><br>$content"; ?></span></BLOCKQUOTE>
    <?
    }
    ?>
    </td>
  </tr>
  <?
    }}
    ?>
Avatar billede erikjacobsen Ekspert
21. februar 2003 - 20:09 #20
Du skriver ikke året ud? Men den sorterer ikke, siger du?
Det er underligt.
Avatar billede fredney Nybegynder
21. februar 2003 - 20:11 #21
ja ik...
Avatar billede erikjacobsen Ekspert
21. februar 2003 - 20:16 #22
Nej, det er ikke underligt. Rækkefølgen bestemmes jo af at du
først løber igennem med
SELECT cal_id FROM webcal_entry_user WHERE cal_status = 'A'
Delresultaterne herfra sorteres - men det vil du jo nok ikke
nøjes med.

Du skal vist bare lave en join.
Avatar billede fredney Nybegynder
21. februar 2003 - 20:18 #23
hvad er det...??
Avatar billede erikjacobsen Ekspert
21. februar 2003 - 20:25 #24
SELECT cal_id, cal_date, cal_time, cal_duration, cal_priority, cal_name, cal_description FROM webcal_entry,webcal_entry_user WHERE webcal_entry_user.cal_status='A' and webcal_entry_user.cal_id=webcal_entry.cal_id AND cal_access = 'P' AND cal_id = '$del[0]' AND cal_date >= '$idag' ORDER BY cal_date ASC

og så nøjes med eet gennemløb
Avatar billede fredney Nybegynder
21. februar 2003 - 20:30 #25
et gennemløb, det må du lige forklare..

Hvorfor ændringen?
Avatar billede erikjacobsen Ekspert
21. februar 2003 - 20:34 #26
Hør nu - det med join skal du lære. Der er ingen vej udenom.
Prøv at læse om det i din databasebog. Jeg skal alligevel
ikke have point, så jeg hopper ud af spørgsmålet. Du har
fået svar på hvorfor, og en løsning (utestet) til det.
Det må være nok for i aften :)
Avatar billede serverservice Praktikant
22. februar 2003 - 00:14 #27
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester