[PHP/MySQL] Print query

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik ben nieuw op GoT maar lees wel al een tijdje mee. Nu heb ik een vraag over een bepaalde query in php:

Ik heb 3 tabellen, messages, locations en users.

Nu heb ik een pagina location.php?lid=x. Als deze pagina geladen wordt, wil ik dat alle messages die bij deze locatie horen, geprint worden. Verder wil ik dat bovenaan de pagina de locatie gegevens, 1 maal, geprint worden

Goed, dit is mij min of meer gelukt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// De query
$sql = mysql_query("
SELECT 
messages.id AS message_id,
messages.title, 
messages.date,
messages.status,
users.name AS user_name,
users.id AS user_id
FROM
messages, users
WHERE 
messages.location_id = ".$_GET['lid']."
AND
users.id = messages.poster_id
ORDER BY messages.id DESC
LIMIT $from, $max
") or die(mysql_error());


En zo print ik de messages:

PHP:
1
2
3
4
while($data = mysql_fetch_assoc($sql))
{
   // Hier print ik alle berichten
}


Niet zo heel spannend toch? Dacht ik ook. De manier waarop ik de locatie gegevens print is als volgt: Ik heb een simpele functie geschreven die de locatie informatie in een string teruggeeft, mits er een location id geleverd wordt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Functie om locatie info te vinden
function fetch_location_info($lid)
{
  $qry = mysql_query("SELECT * FROM locations WHERE id='".$lid."'");
    
  if(mysql_num_rows($qry) > 0)
  {
    $location = mysql_fetch_assoc($qry);
    $info = "<p><a href=\"location.php?lid=".$location['id']."\"><b>".stripslashes($location['name'])."</b></a><br />".stripslashes($location['adress'])."<br />".$location['zip_code']." ".stripslashes($location['city'])."<br /></p>";
    return $info;
  }
  else
  {
    $error = "Kan de locatie niet vinden. Neem contact op met de beheerder als dit probleem zich voor blijft doen";
    return $error;
  }
}


Goed, werkt ook leuk. Maar nu is mijn vraag of ik niet met de allereerste query, hetzelfde resultaat kan berijken. Is het mogelijk om 2 'afdrukken' van een query te maken? Want in principe vindt mijn eerste query precies dezelfde gegevens als de functie. Alleen kan ik de informatie niet in een while loop gaan zetten, dus is er een andere manier hiervoor?

Ik heb geprobeerd zo duidelijk mogelijk te zijn, als er toch iets niet duidelijk is hoor ik het graag. Houd er aub ook rekening mee dat ik geen doorgewinterde guru ben 8).

Bedankt!

-Jesper

Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
Ik ben bang dat ik niet helemaal begrijp wat je bedoelt. Je wilt in je eerste query al direct de locatie gegevens erbij zetten indien ze bestaan? Da's simpel te doen met een left (outer) join:

SQL:
1
2
3
4
SELECT      * 
FROM        messages
LEFT JOIN   locations
  ON        messages.location_id = locations.id


Waarom je de gegevens niet in een while loop zou kunnen zetten is me een raadsel, SQL resultsets kun je simpel in een n-dimensionale array zetten en daarna doorlopen hoe je zelf wilt. Snelle manier om dat te doen:
PHP:
1
while($result[++$i] = mysql_fetch_assoc($qry)) {}


Hoop dat dit was wat je bedoelde :)

[ Voor 7% gewijzigd door FragFrog op 04-03-2007 14:16 ]

[ Site ] [ twitch ] [ jijbuis ]