[PHP] Username zoeken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Probleempje...
Misschien is het heel simpel, maar ik kom er niet meer uit. Zo'n beetje alles gelezen wat er te lezen valt, maar helaas.

Ik ben bezig met een forumpje te bouwen in met PHP/MySQL. Nu wil ik bij het tonen van een topic, natuurlijk ook de username laten zien van degene die post.

Tot zover allemaal prima, voor mijn idee is de structuur zoals ik em nu heb ook in orde, maar die naam krijg ik maar niet in beeld.

Ik zal alleen de relevante tabbelen en code hier posten:

Tabellen

forum_reply:
- reply_id
- reply_body
- reply_user (hier staat dus het user-id in van de reply-er)

forum_user
- user_id
- user_name

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Opzoeken van juiste replies
$qry_reply = "SELECT * FROM forum_reply where reply_topic = '$topicid'";
$query2 = mysql_query($qry_reply)
     or die("Fout bij uitvoeren query");

//loop om replies te echoen
while ($reply = mysql_fetch_array($query2)) {

//Zoek username bij userid
      $userid = $reply['reply_user'];
      $qry_user = "SELECT * FROM forum_user where user_name = '$userid'";
      $query3 = mysql_query($qry_user)
              or die("Fout bij uitvoeren query");

// cel voor username
      echo "\t<td><br />";

//echo username
      while ($user = mysql_fetch_array($query3)) {
              echo $user['user_name'];
      }

//echo de rest

}


Hij laat nu dus alles zien, behalve de username. Het lijkt dus alsof ie nooit die 2e while-loop ingaat. $userid wordt wel gevuld.

Ziet iemand wat ik verkeerd doe? Of kan iemand me een stukje op weghelpen?

Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
Dit kan toch met innerjoins? dat bespaart je een query

edit: eens ff voor je opzoeken :)
woei: Lees dit eens

[ Voor 56% gewijzigd door Helmet op 26-06-2003 11:38 ]

Icons are overrated


Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
waarom innerjoin doen? als het goed is heb je geen null velden.. dus een gewone select van 2 tabellen zou genoeg moeten zijn:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
//Opzoeken van juiste replies met users
$qry_reply = "SELECT * FROM forum_reply r, forum_user u WHERE r.reply_user = u.user_id AND r.reply_topic = '$topicid'"; 
$query2 = mysql_query($qry_reply) 
     or die("Fout bij uitvoeren query"); 

//loop om replies te echoen 
while ($reply = mysql_fetch_array($query2)) { 

// cel voor username 
      echo "\t<td><br />"; 
//echo username 
      while ($user = mysql_fetch_array($query3)) { 
              echo $user['user_name']; 
      } 

//echo de rest 

}
?> 


dit scheeld je ook nog eens gigantisch veel query's.. aangezien je nu met 1 query all reply's met users krijg ipv 1 query voor alle users en dan nog een query voor elke reply :)

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

Verwijderd

OxiMoron schreef op 26 June 2003 @ 11:46:
waarom innerjoin doen? als het goed is heb je geen null velden.. dus een gewone select van 2 tabellen zou genoeg moeten zijn:
En wat denk jij dat een inner join doet? Inderdaad, dat wat jij zegt ;)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

En dat je orginele query niet werkt komt waarschijnlijk omdat je niet goed oplet ;). id is immers niet name..

Maar gooi je code zo snel mogenlijk weg en gebruik die van OxiMoron. Je wil immers niet voor een thread met 100 reacties 101 queries uitvoeren terwijl het ook gewoon in 1 kan.

Een database is gemaakt om gegevens met hun relatie op te slaan en makkelijk toegankelijk te maken. Gebruik het dan ook en probeer die functionaliteit niet in je eigen code te implementeren, de DB zal hier namelijk in bijan alle gevallen sneller in zijn.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Woei! bedankt _O_

Stom van me dat ik daar nooit aan gedacht heb. De structuur was toch niet helemaal goed :)

Het werkt nu zoals OxiMoron zei (er zijn inderdaad geen NULL-velden)

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16-09 09:15

Janoz

Moderator Devschuur®

!litemod

Verwijderd schreef op 26 juni 2003 @ 11:48:
[...]
En wat denk jij dat een inner join doet? Inderdaad, dat wat jij zegt ;)
Een inner join doet meer.. Outer join doet hetzelfde als de query van OxiMoron ;)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Janoz schreef op 26 June 2003 @ 11:51:
[...]


Een inner join doet meer.. Outer join doet hetzelfde als de query van OxiMoron ;)
Inderdaad, ik bedacht me net, zat aan outer te denken maar zit te lullen over inner ;) Doh!

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op 26 June 2003 @ 11:49:
En dat je orginele query niet werkt komt waarschijnlijk omdat je niet goed oplet ;). id is immers niet name..
Dat was em inderdaad |:( Dat voor zoiets stoms uren kan staren) Nog ff geprobeerd met user_id = '$userid' en toen werke het wel.

Sorry voor de nutteloze vulling van de database :+

Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
Verwijderd schreef op 26 June 2003 @ 11:54:
[...]


Dat was em inderdaad |:( Dat voor zoiets stoms uren kan staren) Nog ff geprobeerd met user_id = '$userid' en toen werke het wel.

Sorry voor de nutteloze vulling van de database :+
lol.. idd.. dat was het probleem van je originele code :)

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?

Pagina: 1