Avatar billede fedespil.dk Nybegynder
04. juni 2002 - 16:13 Der er 6 kommentarer

PHP-kommando i MySQL-sætning?

Jeg skal trække servernavne ud fra en MySQL-database. Servernavnene er dog ikke konstante, og de skal derfor findes vha. et PHP-script. Jeg kan sagtens trække dem ud tilfældigt, men det skal være i alfabetisk orden.

Desværre kan jeg ikke benytte en PHP-kommando i en MySQL-sætning, dette virker i hvert fald ikke:

$query = mysql_query("SELECT * FROM servers order by =$csinfo->m_servervars["servername"]", $connection) or die ("error - 404 - error");

Ligeledes har jeg prøvet at lave udtrækningen vha. af et query, men det virker heller ikke:

$servernavn = $csinfo->m_servervars["servername"];
$query = mysql_query("SELECT * FROM servers order by $servernavn", $connection) or die ("error - 404 - error");

Siden er en CS-serverliste, der som sagt henter servernavnene, hver gang siden loades. Servernavnene er ikke konstant, og navnet skal derfor findes vha. PHP-scriptet.

På forhånd tak for hjælpen.
Avatar billede jakoba Nybegynder
04. juni 2002 - 16:39 #1
hvad med at flytte hele dit udtræk over i en 2dimensionelt array og så sortere første dimension efter servernavn.

$query = mysql_query("SELECT * FROM servers", $connection) or die ("error - 404 - error");

$servere = array();
while ( $temp=mysql_fetch_array($query) ) {
    $temp['noegle'] = $csinfo->m_servervars[$temp['servername']]; // extra sorterbar celle.
    $servere[]=$temp;
}

finction orderfunk( $a, $b ) {
    // funktionen definerer en 'større end' relation til sortering af arrays
    if ( $a['noegle'] > $b['noegle'] {
        return -1;
    } else
    if ( $a['noegle'] == $b['noegle'] {
        return 0;
    } else {
        return +1;    // måske -1 og +1 skal ombyttes for at få din rækkefølge.
    }
}
usort ( $servere, orderfunk ); // sorterer dit array

for [4i=0; $i<count($servere); $i++ ) {
    // udskriv serverne en for en.
}

mvh JakobA
Avatar billede jakoba Nybegynder
04. juni 2002 - 16:41 #2
Ups. det sjal naførselstegn omkring funktionsnavnet i linien:
    usort ( $servere, "orderfunk" ); // sorterer dit array
Avatar billede Soren L. Hansen Nybegynder
04. juni 2002 - 19:24 #3
Dit MySQL query er også forkert. Prøv med noget i stil med:
"SELECT * FROM servers ORDER BY servername;"

Skift "servername" ud med navnet på FELTET i tabellen, som du vil sortere efter.
Avatar billede fedespil.dk Nybegynder
06. juni 2002 - 21:07 #4
hmm, linuxkonsulent, problemet er jo netop, at det, jeg skal sortere efter, IKKE ligger i databasen og IKKE er en fast enhed. Navnet hentes, hver gang siden loades, og er ikke fast!

Kan godt være, jeg er lidt ude med riven, men det vil hjælpe lidt mere, hvis du gad at læse mit spørgsmål, før end du begynder at svare.

Jakoba, prøver at se om din svar kan give en løsning på det. Siger tak for hjælpen :o)
Avatar billede jakoba Nybegynder
06. juni 2002 - 21:13 #5
Ups. kikkede lige på det igen og min kode er ret fuld af fejl:

$query = mysql_query("SELECT * FROM servers", $connection) or die ("error - 404 - error");

$servere = array();
while ( $temp=mysql_fetch_array($query) ) {
    $temp['noegle'] = $csinfo->m_servervars[$temp['servername']]; // extra sorterbar celle.
    $servere[]=$temp;
}

finction orderfunk( $a, $b ) {
    // funktionen definerer en 'større end' relation til sortering af arrays
    if ( $a['noegle'] > $b['noegle'] ) {
        return -1;
    } else
    if ( $a['noegle'] == $b['noegle'] ) {
        return 0;
    } else {
        return +1;    // måske -1 og +1 skal ombyttes for at få din rækkefølge.
    }
}
usort ( $servere, orderfunk ); // sorterer dit array

for ( $i=0; $i<count($servere); $i++ ) {
    // udskriv serverne en for en.
}
Avatar billede Soren L. Hansen Nybegynder
07. juni 2002 - 08:47 #6
Jeg læste skam også dit spørgsmål og troede, jeg forstod, men ak! :-)

Jeg kan ikke helt gennemskue, hvordan din database er bygget op. ORDER BY skal efterfølges af et feltnavn, ikke en feltværdi.

Kan du komme med outputtet fra en "desc servers;" og måske et par række fra tabellen og dit forventede resultat? Jeg kan virkelig ikke gennemskue, hvad du forsøger at gøre med den ORDER BY, du har i dit første MySQL-query..
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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