Avatar billede kgp43 Nybegynder
13. august 2004 - 16:06 Der er 16 kommentarer og
1 løsning

Virker fint seperat men ikke sammen

Hejsa,

Når jeg indtaster en værdi i "minprice" ELLER "maxprice" så virker koden som den skal. Hvis jeg derimod BÅDE smider en værdi i "minprice" og "maxprice" så virker det ikke. Er der én der kan se fejlen:

if(!empty($specifications_minprice)) {
  $spec_minprice .= "AND pr.product_price >= '$specifications_minprice' ";
}
if(!empty($specifications_maxprice)) {
  $spec_maxprice .= "AND pr.product_price <= '$specifications_maxprice' ";
}
Avatar billede dsj Nybegynder
13. august 2004 - 16:18 #1
Virker ikke hvordan? Får du en fejl, eller blot et forkert resultat?
Avatar billede eagleeye Praktikant
13. august 2004 - 16:29 #2
Hvordan ser koden ud hvor du samler din SQL, med  $spec_maxprice og  $spec_minprice?
Avatar billede kgp43 Nybegynder
13. august 2004 - 16:30 #3
der kommer ingen fejl.

Når jeg smider en værdi i minprice, så viser den alle produkter der koster mere end x kroner. Hvis jeg indsætter en værdi i maxprice, så viser den alle produkter der koster mindre end x kroner. Hvis jeg indsætter en værdi i begge felter, så skulle den vise produkter der koster mere end minprice og mindre end maxprice, men den viser kun minprice korrekt (og nogle underlige data, når jeg indsætter maxprice).
Avatar billede kgp43 Nybegynder
13. august 2004 - 16:31 #4
koden:

//If the user submitted the specification form, then we make a query to limit the results
if(!empty($specifications_brand)) {
  $spec_brand .= "AND b.id='$specifications_brand' ";
}
if(!empty($specifications_minprice)) {
  $spec_minprice .= "AND pr.product_price >= '$specifications_minprice' ";
}
if(!empty($specifications_maxprice)) {
  $spec_maxprice .= "AND pr.product_price <= '$specifications_maxprice' ";
}

//Make the main query (one table for each active brand)
$query = mysql_query("SELECT
    DISTINCT( b.id )
    ,b.brand
    ,b.brand_link
    ,b.id
FROM
    brand b   
INNER JOIN
    series s
ON
    b.id = s.brand_id
    AND s.type = 'Reels'
    AND s.validation_status = '1'
INNER JOIN
    products p
ON
    s.id = p.series_id
INNER JOIN
    prices pr
ON
    p.id = pr.product_id
    $spec_minprice
    $spec_maxprice
WHERE
    b.status='1'
    AND b.validation_status='1'
    $spec_brand
ORDER BY
    b.brand") or die (mysql_error());
while($fetch = mysql_fetch_array($query)) {
Avatar billede kgp43 Nybegynder
13. august 2004 - 16:34 #5
kan testes her:

Søgesiden:
http://www.tackleprices.com/products/fishing-reels/specifications.php

Resultat siden (kan også anvendes UDEN brug af søgesiden, hvorved den viser alle resultater)
http://www.tackleprices.com/products/fishing-reels/series.php
Avatar billede eagleeye Praktikant
13. august 2004 - 16:34 #6
Jeg vil sige disse linjer:

    $spec_minprice
    $spec_maxprice
WHERE
    b.status='1'
    AND b.validation_status='1'
    $spec_brand

Skal rettes til disse sådan $spec_minprice og $spec_maxprice kommer i where delen:


WHERE
    b.status='1'
    AND b.validation_status='1'
    $spec_brand
    $spec_minprice
    $spec_maxprice
Avatar billede eagleeye Praktikant
13. august 2004 - 16:39 #7
virker det ikke fint, som den er?
Avatar billede kgp43 Nybegynder
13. august 2004 - 16:47 #8
nej. Kun minprice virker som den skal. maxprice virker ikke (hvis jeg erstatter maxprice med minprice, så virker maxprice okay...weird)
Avatar billede eagleeye Praktikant
13. august 2004 - 16:54 #9
Har du prøvet som vist så?
Jeg må erkende jeg syntes nu det ser ud til at virke, også når man angiver max og min pris.
Avatar billede kgp43 Nybegynder
13. august 2004 - 17:01 #10
Det virker stadig ikke. Jeg var lidt i tvivl om opsætningen af minprice og maxprice var rigtig (om man kunne bruge/anvende to på én gang).

Min form:
se kildekoden her:
http://www.tackleprices.com/products/fishing-reels/specifications.php

Queryen:
//If the user submitted the specification form, then we make a query to limit the results
if(!empty($specifications_brand)) {
  $spec_brand .= "AND b.id='$specifications_brand' ";
}
if(!empty($specifications_minprice)) {
  $spec_minprice .= "AND pr.product_price >= '$specifications_minprice' ";
}
if(!empty($specifications_maxprice)) {
  $spec_maxprice .= "AND pr.product_price <= '$specifications_maxprice' ";
}

//Make the main query (one table for each active brand)
$query = mysql_query("SELECT
    DISTINCT( b.id )
    ,b.brand
    ,b.brand_link
    ,b.id
FROM
    brand b   
INNER JOIN
    series s
ON
    b.id = s.brand_id
    AND s.type = 'Reels'
    AND s.validation_status = '1'
INNER JOIN
    products p
ON
    s.id = p.series_id
INNER JOIN
    prices pr
ON
    p.id = pr.product_id
WHERE
    b.status='1'
    AND b.validation_status='1'
    $spec_brand
    $spec_minprice
    $spec_maxprice
ORDER BY
    b.brand") or die (mysql_error());
while($fetch = mysql_fetch_array($query)) {
Avatar billede eagleeye Praktikant
13. august 2004 - 17:05 #11
Der burgte heller ikke være noget problem og det bliver også rigtig:
.. and pr.product_price >= 'X' and pr.product_price <= 'Y'

hvordan er prisen gemt i databasen, hvilke data type er kolonnen?
Avatar billede kgp43 Nybegynder
13. august 2004 - 17:09 #12
product_price = decimal(9,2)
Avatar billede kgp43 Nybegynder
13. august 2004 - 17:13 #13
nej, nej, nej, nej.... jeg viste jeg havde lavet en bummert :P
Jeg har 2 queries hvor minprice og maxprice indgår, havde sku glemt at rette den sidste :P

Det virker superb nu. Ligger du et svar, så er der point :)
Avatar billede eagleeye Praktikant
13. august 2004 - 17:14 #14
Ok, hmm jeg kan se hvad du mener med det ikke helt virker. Dog har jeg prøve at skrive 100 som max og fik ting ud hvis pris var >200
Avatar billede eagleeye Praktikant
13. august 2004 - 17:14 #15
Ok :)
Det burgte også virker samme hvis de virker hver for sig
Avatar billede kgp43 Nybegynder
13. august 2004 - 17:20 #16
Yep :)

"Dog har jeg prøve at skrive 100 som max og fik ting ud hvis pris var >200"
- Det er fordi jeg ikke har sorteret i disse resultater endnu :P
Avatar billede kgp43 Nybegynder
13. august 2004 - 17:20 #17
takker for hjælpen
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