Avatar billede technux Nybegynder
16. maj 2001 - 16:00 Der er 25 kommentarer og
1 løsning

Condition

Jeg vælger pt. noget i en tabel således:

mysql_query(\"select * from noget where dato >= \'$idag\' order by slut_dato DESC\");

Jeg vil dog gerne have en mere \"condition\" på fx.: \"where dato >= \'$idag\'\" og \"where dato < \'$enandensag\'\".

Hvordan kan man gøre det?
Avatar billede madd Nybegynder
16. maj 2001 - 16:02 #1
mysql_query(\"select * from noget where dato >= \'$idag\' and dato < \'$enandensag\' order by slut_dato DESC\");

/Mattias
Avatar billede technux Nybegynder
16. maj 2001 - 16:06 #2
Det havde jeg faktisk prøvet, da \"AND\" virkede mest logisk. Men den smider \"Warning: Supplied argument is not a valid MySQL result resource\" efter mig.
Avatar billede madd Nybegynder
16. maj 2001 - 16:24 #3
ohh.. mig og min Access... to sek, finder det :)
Avatar billede darkmoon Nybegynder
16. maj 2001 - 16:47 #4
put parenteser rundt om de to conditioner :)
Avatar billede technux Nybegynder
16. maj 2001 - 16:59 #5
synes jeg ikke virker.. kan du give et eksempel?
Avatar billede thomasledet Nybegynder
16. maj 2001 - 18:06 #6
mysql_query(\"select * from noget where (dato >= \'$idag\') and (dato < \'$enandensag\') order by slut_dato DESC\");
Avatar billede technux Nybegynder
16. maj 2001 - 18:11 #7
Det var det jeg gjorde og det virker stadig ikke.
Avatar billede thomasledet Nybegynder
16. maj 2001 - 18:23 #8
mener du i øvrigt ikke or istedet for and?
Avatar billede thomasledet Nybegynder
16. maj 2001 - 18:25 #9
nej du gør ikke... nevermind... i hvilket format har du din dato i? unix-epoch eller? ellers kan det godt være svært at manipulere rundt med datoer...

i følge dokumentationen bør de parenteser virke..
Avatar billede technux Nybegynder
16. maj 2001 - 18:27 #10
Ja, dato er i unix format og det skal være AND. Den giver mig stadig fejlmeddelelse :(
Avatar billede thomasledet Nybegynder
16. maj 2001 - 18:35 #11
hvis det er i unix format, prøv da at slette dine \' rundt om dit query->

mysql_query(\"select * from noget where (dato >= $idag) and (dato < $enandensag) order by slut_dato DESC\");

den slut_dato-ting... skal den hedde slut_dato og ikke bare dato?
Avatar billede technux Nybegynder
16. maj 2001 - 18:41 #12
Den hedder egentlig:

mysql_query(\"select * from tilbud where (slut_dato >= $idag_p) and (start_dato =< $idag_p) order by slut_dato ASC\");

Det andet skrev jeg blot noget for nemhedens skyld og det jeg kunne huske i hovedet.

Det virker dog stadig ikke uden \'\'.
Avatar billede thomasledet Nybegynder
16. maj 2001 - 18:47 #13
hvilken fejl får du helt præcist?
Avatar billede technux Nybegynder
16. maj 2001 - 18:50 #14
Warning: Supplied argument is not a valid MySQL result resource
Avatar billede thomasledet Nybegynder
16. maj 2001 - 18:54 #15
prøv at slette condition 2... det kan ikke passe, at det er den, der har et problem...
Avatar billede thomasledet Nybegynder
16. maj 2001 - 18:55 #16
men prøv alligevel...

->

mysql_query(\"select * from tilbud where (slut_dato >= $idag_p) order by slut_dato ASC\");
Avatar billede technux Nybegynder
16. maj 2001 - 18:56 #17
Det virker, hvis jeg kun har EN condition
Avatar billede technux Nybegynder
16. maj 2001 - 18:57 #18
Når jeg tilføjer nummer 2, så er det faktisk linien nedenunder den brokker sig over. Hele scriptet ser således ud:

<?
        $idag_p = mktime(0,0,0,date(n),date(j),date(Y));
       
        mysql_connect($mysqlhost,$mysqlusr,$mysqlpass);
        mysql_select_db($dbname);
       
        if (mysql_num_rows(mysql_query(\"select * from tilbud\")) != 0) {
            $get = mysql_query(\"select * from tilbud where (slut_dato >= $idag_p) and (start_dato =< $idag_p) order by slut_dato ASC\");
            while ($stuff = mysql_fetch_array($get)) {
?>

    Noget text her
   

<?
        }
        }
        else {
            print \"Ingen tilbud i øjeblikket....\";
        }
?>


Det er altså linien while ($stuff = mysql_fetch_array($get)) { den er gal med når jeg har 2 conditions med. Alt virker perfekt med kun 1.
Avatar billede thomasledet Nybegynder
16. maj 2001 - 19:01 #19
i stedet for mysql_fetch_array prøv da mysql_fetch_row
Avatar billede thomasledet Nybegynder
16. maj 2001 - 19:04 #20
du vil nok også overveje at fordele $stuff ud over nogle flere variable... et \"select *\"-query er som regel noget rod... prøv kun at selecte de felter du skal bruge... og smid dem ind i nogle variabler under fetch_row

->
$get = mysql_query(\"select (flot,ting,dato) from tilbud where (slut_dato.....
while ($flot,$ting,$dato = mysql_fetch_array($get)) {
Avatar billede thomasledet Nybegynder
16. maj 2001 - 19:06 #21
oops... fetch_row... copy-paste...:)
Avatar billede technux Nybegynder
16. maj 2001 - 19:08 #22
Det virker heller ikke med fetch_row. Jeg skal kun hente 4 poster ud og bruge dem alle, derfor har jeg valgt denne løsning.

Kan prøve den anden senere - kan jo være, at det løser problemet.
Avatar billede thomasledet Nybegynder
16. maj 2001 - 19:21 #23
sæt

echo mysql_error();

ind før du kører fetch_array, så kan du få en mere deskriptiv fejlmeddelelse ..
Avatar billede technux Nybegynder
16. maj 2001 - 19:29 #24
Jeg byttede lige om på de start_dato og $idag_p, så den nu hedder: ($idag_p >= start_dato).

Det hele virker nu, selvom det ikke giver meget mening.

Helt sikkert point til dig, dog :)
Avatar billede thomasledet Nybegynder
16. maj 2001 - 19:39 #25
jow tack, da...
Avatar billede technux Nybegynder
16. maj 2001 - 19:46 #26
Nu sidder jeg lige og prøver at anvende _row istedet og får Parse error:

if (mysql_num_rows(mysql_query(\"select * from tilbud\")) != 0) {
                        $get = mysql_query(\"select (overskrift,text,start_dato,slut_dato,billede,glpris,nypris) from tilbud where (slut_dato >= $idag_p) and ($idag_p >= start_dato) order by ID DESC Limit 0, 3\");
            while ($overskrift,$text,$start_dato,$slut_dato,$billede,$glpris,$nypris = mysql_fetch_array($get)) {

blabla

Får parse error på den sidste linie.
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