[PHP] Array en MySQL

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Is het mogelijk om in een Mysqlquery een celwaarde te vergelijken met een array?

PHP:
1
2
3
4
5
6
$resultaat=mysql_query("SELECT * FROM $rubriektable WHERE Subrubriek=0 AND MOD(Plaatsing,2) = 1");
while ($row = mysql_fetch_array($resultaat)) {
$huidigerubriek = $row[RubID];
$resultaat3=mysql_query("SELECT Parubriek FROM $rubriektable WHERE RubID=$huidigerubriek");
$res3 = mysql_fetch_row($resultaat3);
$resultaat2=mysql_query("SELECT * FROM $adstable WHERE Rubriek=$res3 ORDER BY DatumTijd DESC limit 7");


$res3 is dus een array die alle subrubrieken van een bepaalde hoofdrubriek bevat. Nu wil ik graag per hoofdrubriek 7 ads afdrukken die het nieuwste zijn. In de adstabel in mysqldatabase staan de ads met een RubriekID. Deze verwijst naar een andere tabel in mysql waarin alle rubrieken staan.

Dit is mijn database opbouw:
Ads tabel:
ID (int) -> verwijst naar de ads ID (auto incremental)
Rubriek (int) -> verwijst naar de RubID waarin de ad staat
Titel (varchar) -> Titel van de advertentie
Tekst (longtext) -> advertentie tekst

Rubrieken Tabel:
RubID (int auto incremental) -> geeft de ID van de rubriek
Naam (varchar) -> Titel van de rubriek
Subrubriek (int(1)) -> 0 als geen subrubriek; 1 als het een subriek betreft
Parubriek (int) -> geeft de hoofdrubriek zijn RubID; als het om een hoofdrubriek zelf betreft is deze waarde gewoon gelijk aan de hoofdrubriek RubID

Ik hoop dat het zo duidelijk is, heb al verschillende dingen geprobeert zoals een if-functie in combinatie met een teller (for functie) maar dat lukte mij niet. Iemand bruikbare tips? B)

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Kijk eens naar de werking van JOINS :)

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt, zal kijken of ik er wat aan heb in mijn situatie!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
$resultaat=mysql_query("SELECT * FROM $rubriektable WHERE Subrubriek=0 AND MOD(Plaatsing,2) = 1");
while ($row = mysql_fetch_array($resultaat)) {
$resultaat2=mysql_query("SELECT * FROM $adstable, $rubriektable WHERE Parubriek=$row[RubID] ORDER BY DatumTijd DESC limit 7");


Dit moet gelijk zijn aan een innerjoint maar nu drukt hij veel te veel advertenties af in de erop volgende while functie.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mmm, lijkt erop dat het gelukt is! Bedankt!

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Goed, dan kan ik nog wat algemeen commentaar geven op je code:
  1. Lijn je code wat uit, dan is het veel beter leesbaar. Zie ook P&W FAQ - Algemeen, vooral onder het kopje "Inspringen". :)
  2. Zet error_reprorting(E_ALL); bovenaan in je code. Zie daarvoor ook P&W FAQ - PHP
  3. En wanneer je het tweede puntje in je code hebt verwerkt, krijg je ineens een notice op regel 3: $row[RubID] kan niet, dat moet $row['RubID'] zijn. PHP vervangt de niet bestaande constante RubID onder water wel naar de string "RubID", maar netjes is het niet. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • aex351
  • Registratie: Juni 2005
  • Laatst online: 21-09 02:04

aex351

I am the one

Code is inderdaad erg onoverzichtelijk, kijk dit is als voorbeeld duidelijker leesbaar : [rml]aex351 in "[ PHP] Variabelen counter"[/rml]

< dit stukje webruimte is te huur >


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Voor de codeuitlijning is dat inderdaad een mooi voorbeeld, al is het commentaar dat je erbij hebt gezet wat ten overvloede, dat volgt 9 van de 10 keer namelijk ook wel uit de code zelf. :P Wat betreft code-opmaak zou ik inderdaad vreeke1 willen aanraden om die code van jou als voorbeeld te nemen, maar wat betreft manier van becommentariëren weer niet zo. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Persoonlijk vind ik het toch minder hoe je die query inspringt. Beter is om die query in een aparte variabel te zetten en de eerste clause niet meer dan 1 tab in te springen. Daarop volgende zaken kun je dan wel verder inpsringen, maar dat heeft dan te maken met de logische structuur van je query.

Verder zit je er ook een beetje naast met de naamgeving van je variabelen. Je noemt het resultaat van je query namelijk $query, beter is om de query zelf in een variabel met die naam te zetten en dan het resultaat $result of $queryResult te noemen. Verder fetch je steeds een rij in de variabel $output, terwijl het weinig te maken heeft met output. Beter is om hem dan $row of $record te noemen.

Noushka's Magnificent Dream | Unity

Pagina: 1