---
title: "Query i if-sats"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/148293-query-i-if-sats"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "dreas"
published: "2006-06-21T13:22:20.000Z"
updated: "2006-06-24T08:30:58.000Z"
replies: 4
views: 571
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/148293-query-i-if-sats"
---

# Query i if-sats

## #1 — dreas, 2006-06-21T13:22Z

Hej!
Har stött på ett märkligt problem. Har en lista med personer. Dessa personer kan i sin tur delas in i olika kategorier ('cat' i databasen). Där listan presenteras har jag en länk där jag kan välja vilken kategori jag vill lista.
Delar upp en Query i två olika fall - beroende på vad som skickas med i URL:en ($\_REQUEST).
Problemet är, så fort jag tilldelar en person en kategori - försvinner den från listan totalt, även fast jag väljer rätt 'cat'.
Än så länge har jag inte lyckats få tillbaks dessa till listan igen (har försökt med att skippa if-satsen och bara köra $hamta = "SELECT \* FROM cv WHERE typ='yrkesarbetare' && trash!='YES' ORDER BY $getBY ";  ), trots att de är kvar i databasen.
Notering - kolumnen 'cat' är tomm som default.

Har följande kod:

```php
$getBY = $_REQUEST['BY'];
			if (!$getBY)
				$getBY= "ID";
			
				
			$getCAT = $_REQUEST['CAT'];
			
			if ($getCAT==ALLA || !$getCAT) {
				$hamta = "SELECT * FROM cv WHERE typ='yrkesarbetare' && trash!='YES' ORDER BY $getBY ";
			}
			else {
				$hamta = "SELECT * FROM cv WHERE typ='yrkesarbetare' && cat='$getCAT' && trash!='YES' ORDER BY $getBY ";
			}

			
			echo ($hamta);
			$resultat = mysql_query($hamta) or die("Det gick inte att hämta information från databasen!");
```

Någon som förstår vad som går galet?
Är cat ett skyddat namn i PHP?? Men då borde man i sedvanlig ordning få ett felmeddelande om detta. 

Tack på förhand
Andreas

Permalänk: https://www.webforum.nu/p/148293

## #2 — henke, 2006-06-22T13:57Z

Du har glömt hartassarna runt *ALLA*, nu tolkas det som konstanten *ALLA* i *if ($getCAT==ALLA \|\| !$getCAT) {*.

Slå på full felrapportering i php när du utvecklar så hade php varnat om felet.

Permalänk: https://www.webforum.nu/p/1834038

## #3 — dreas, 2006-06-23T10:30Z

Okej, testade det med hartassarna och la även till full felrapportering ( *. mysql_error());*  ), utan resultat.
Kan poängtera att PHP med full felrapportering verkar inte heller klaga på att det stod *$getCAT==ALLA*, men det är som sagt trots allt åtgärdat.

Det konstiga är att om jag tilldelar en person till, säg cat=Elektriker, och väljer just att lista elektriker (med *echo ($hamta);* får jag ); 
$hamta = SELECT \* FROM cv WHERE typ='yrkesarbetare' && cat='Elektriker' && trash!='YES' ORDER BY ID 
så får jag ändå inte fram denna person. 

Har dubbelkollat att de andra kriterna stämmer, *typ='yrkesarbetare'* och att *trash* **inte** är satt till *YES*. Trots detta fungerar det alltså inte och jag får inte heller upp något felmeddelande.

Blir helt vansinnig   x(

Permalänk: https://www.webforum.nu/p/1834228

## #4 — aasah, 2006-06-23T21:57Z

Två saker jag föreslår att du kollar:
1) Hur skickas formuläret, med GET eller POST? Byt ut alla $\_REQUEST mot $\_GET/$\_POST (dvs den metod du skickar med). Orsak $\_REQUEST hämtar värdena från antingen POST, GET eller COOKIE i någon viss bestämd ordning som jag inte har i huvudet. Så om du skickar med en annan metod än den som kollas först och det av någon anledning finns ett värde satt på det som kollas före, så får $\_REQUEST ett annat värde än du tror.

2) Om varken GET, POST eller COOKIE har motsvarande värde satt så får $\_REQUEST\["..."\] värdet 0, 0.0, "" eller annat intetsägande "nollvärde" beroende på typ. Så byt ut enligt:

```php
//från
$getBY = $_REQUEST['BY']; 
//till
if (isSet($_REQUEST['BY']))  //Eller hellre $_GET/$_POST enl 1.
   $getBY = $_REQUEST['BY']; //Dito.
else $getBY = "ID";
```

 Gör samma isSet koll på $getCAT. Annars kan du ha oturen att villkorskollen fungerar som en tilldelning, tror jag. (Har för mig att det kan hända i anomaliska fall.)

Permalänk: https://www.webforum.nu/p/1834303

## #5 — @nders, 2006-06-24T08:30Z

Jag skulle gissa på att MySQL vill ha AND istället för &&.

<http://dev.mysql.com/doc/refman/5.0/en/logical-operators.html>

Permalänk: https://www.webforum.nu/p/1834322

---

Tråden på webben: https://www.webforum.nu/amne/php/148293-query-i-if-sats
