Wat is er fout aan deze code?
Quote:
$qwy = mysql_query("SELECT `id`,`price`,`owner` FROM `items` WHERE `owner`='{$_SESSION['naam']}' AND `item_id`=2"); OR
("SELECT `id`,`price`,`owner` FROM `items` WHERE `owner`='{$_SESSION['naam']}' AND `item_id`=9");
$free = mysql_fetch_object($qwy);
("SELECT `id`,`price`,`owner` FROM `items` WHERE `owner`='{$_SESSION['naam']}' AND `item_id`=9");
$free = mysql_fetch_object($qwy);
Hoe zorg ik ervoor dat wanneer `item_id`=2" niet vindbaar is. Maar `item_id`=9" of beide wel, dat het dan die selecteert?
Gewijzigd op 11/08/2015 00:35:34 door Roy helmich
Randy Flujowa op 11/08/2015 00:44:31:
"SELECT `id`,`price`,`owner` FROM `items` WHERE `owner`='{$_SESSION['naam']}' AND (`item_id`=9 OR item_id = 2)");
Leesvoer voor erbij klik
Leesvoer voor erbij klik
Nu selecteert hij alleen `item_id`=2 en verschijnt er geen query voor item_id`=9
Ik probeer het namelijk zo in te stellen:
wanneer de `item_id`=2 tabel op 0 staat dan selecteert hij item_id`=9 (indien deze wel hoger dan 0 is) of wanneer beide hoger dan 0 zijn.
Gewijzigd op 11/08/2015 01:11:54 door roy helmich
in de query vraag je naar records waar item_id een waarde heeft van 2 of 9.
Ook haal je maar 1 record op uit de database. misschien iets van een loop omheen zetten om ze beide op te halen?
Gewijzigd op 11/08/2015 01:20:46 door Randy vsf
Zullen we wel netjes blijven programmeren en niet die vieze backticks en inline code gaan aanleren...
Roy, ik begrijp ook niet wat je precies wil. Geef eens wat voorbeeld data en het resultaat wat je wilt.
Roy helmich op 11/08/2015 01:07:29:
Nu selecteert hij alleen `item_id`=2 en verschijnt er geen query voor item_id`=9
Dat komt waarschijnlijk omdat de naam van de owner van item_id 9 niet overeen komt met $_SESSION['naam'], deze conditie leg je zelf op dat het resultaat-record daar aan moet voldoen.
Ben je nagegaan dat de owner klopt?
Snap je hoe AND en OR werken?
Thomas van den Heuvel op 11/08/2015 14:01:00:
Dat komt waarschijnlijk omdat de naam van de owner van item_id 9 niet overeen komt met $_SESSION['naam'], deze conditie leg je zelf op dat het resultaat-record daar aan moet voldoen.
Ben je nagegaan dat de owner klopt?
Snap je hoe AND en OR werken?
Roy helmich op 11/08/2015 01:07:29:
Nu selecteert hij alleen `item_id`=2 en verschijnt er geen query voor item_id`=9
Dat komt waarschijnlijk omdat de naam van de owner van item_id 9 niet overeen komt met $_SESSION['naam'], deze conditie leg je zelf op dat het resultaat-record daar aan moet voldoen.
Ben je nagegaan dat de owner klopt?
Snap je hoe AND en OR werken?
Hallo, ja ik begrijp een beetje hoe de OR, AND werken. Ik probeer dus twee dingen uit de database te selecteren en deze in 1 query weer te geven.
Dus item_2 (bv 50 in database) en item_2 (bv 20 in database) en dat die twee dan opgeteld worden bij elkaar. Of maak ik nou een omweg?
Misschien eens wat beter toelichten wat je wilt? dan kunnen we je een stuk beter helpen :)
Hoe ziet je database er bv uit?
Gewijzigd op 11/08/2015 17:56:21 door Randy vsf
Code (php)
1
2
3
4
2
3
4
SELECT id, price, owner
FROM items
WHERE owner = '{$_SESSION['naam']}'
AND (item_id = 9 OR item_id = 2)
FROM items
WHERE owner = '{$_SESSION['naam']}'
AND (item_id = 9 OR item_id = 2)
Dit wil zeggen:
Geef mij de id, price en owner kolommen
van de tabel items
waar de owner gelijk is aan $_SESSION['naam']
en het item_id gelijk is aan 9 of 2.
Met name die haken op de laatste regel zijn veel bepalend.
De query geeft dus resultaten terug voor de volgende twee gevallen:
1. de owner is gelijk aan $_SESSION['naam'] EN het item_id is gelijk aan 9
OF
2. de owner is gelijk aan $_SESSION['naam'] EN het item_id is gelijk aan 2
In beide gevallen moet de owner dus gelijk zijn aan $_SESSION['naam'], mogelijk ontstaat daar de verwarring?
Vandaar mijn eerdere vragen:
Ben je nagegaan dat de owner klopt?
Hiermee bedoelde ik dus: heb je geverifieerd dat zowel bij item_id 2 alsmede item_id 9 owner overeenkomt?
Snap je hoe AND en OR werken?
Deze logica komt vrij nauw.
Er is een wereld van verschil tussen:
A AND (B OR C)
en
(A AND B) OR C
waarbij A, B en C verschillende condities zijn.
De eenvoudigste manier om dit uit te pluizen is het uitschrijven van een waarheidstabel:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
.A | B | C | A AND (B OR C) | (A AND B) OR C
---+---+---+----------------+---------------
0 | 0 | 0 | 0 | 0
---+---+---+----------------+---------------
0 | 0 | 1 | 0 | 1
---+---+---+----------------+---------------
0 | 1 | 0 | 0 | 0
---+---+---+----------------+---------------
0 | 1 | 1 | 0 | 1
---+---+---+----------------+---------------
1 | 0 | 0 | 0 | 0
---+---+---+----------------+---------------
1 | 0 | 1 | 1 | 1
---+---+---+----------------+---------------
1 | 1 | 0 | 1 | 1
---+---+---+----------------+---------------
1 | 1 | 1 | 1 | 1
---+---+---+----------------+---------------
0 | 0 | 0 | 0 | 0
---+---+---+----------------+---------------
0 | 0 | 1 | 0 | 1
---+---+---+----------------+---------------
0 | 1 | 0 | 0 | 0
---+---+---+----------------+---------------
0 | 1 | 1 | 0 | 1
---+---+---+----------------+---------------
1 | 0 | 0 | 0 | 0
---+---+---+----------------+---------------
1 | 0 | 1 | 1 | 1
---+---+---+----------------+---------------
1 | 1 | 0 | 1 | 1
---+---+---+----------------+---------------
1 | 1 | 1 | 1 | 1
Gewijzigd op 11/08/2015 21:04:06 door Thomas van den Heuvel