Wat is er fout aan deze code?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roy helmich

roy helmich

11/08/2015 00:31:42
Quote Anchor link
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);


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
 
PHP hulp

PHP hulp

09/11/2024 03:27:05
 
Randy vsf

Randy vsf

11/08/2015 00:44:31
Quote Anchor link
"SELECT `id`,`price`,`owner` FROM `items` WHERE `owner`='{$_SESSION['naam']}' AND (`item_id`=9 OR item_id = 2)");

Leesvoer voor erbij klik
Gewijzigd op 11/08/2015 00:46:27 door Randy vsf
 
Roy helmich

roy helmich

11/08/2015 01:07:29
Quote Anchor link
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


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
 
Randy vsf

Randy vsf

11/08/2015 01:19:31
Quote Anchor link
die snap ik ff niet.

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
 
- wes  -

- wes -

11/08/2015 10:37:09
Quote Anchor link
Zullen we wel netjes blijven programmeren en niet die vieze backticks en inline code gaan aanleren...
 
Jan de Laet

Jan de Laet

11/08/2015 12:49:18
Quote Anchor link
Roy, ik begrijp ook niet wat je precies wil. Geef eens wat voorbeeld data en het resultaat wat je wilt.
 
Thomas van den Heuvel

Thomas van den Heuvel

11/08/2015 14:01:00
Quote Anchor link
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?
 
Roy helmich

roy helmich

11/08/2015 17:45:42
Quote Anchor link
Thomas van den Heuvel op 11/08/2015 14:01:00:
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?
 
Randy vsf

Randy vsf

11/08/2015 17:56:05
Quote Anchor link
Dit is echt zo onduidelijk.
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
 
Thomas van den Heuvel

Thomas van den Heuvel

11/08/2015 21:03:09
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT id, price, owner
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)
PHP script in nieuw venster Selecteer het PHP script
1
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
Gewijzigd op 11/08/2015 21:04:06 door Thomas van den Heuvel
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.