login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Nogmaals: Opvragen uit database en orderen op pagina

Offline ElleRt - 11/09/2004 12:56
Avatar van ElleRtMySQL interesse Heb deze vraag al eens eerder gesteld maar toen geen antwoord gekregen waarmee ik verder kon.
Dus nu nogmaals een poging.

Ik heb een website met database. Deze website gaat over vakantielokaties... Dus denk aan vakantiehuizen,appartementen, hotels etc.

Nu wil ik graag als men op vakantiehuizen klikt alle vakantiehuizen uit de database halen..
Per vakantiehuis wil ik graag een advertentie laten zien. Men krijgt een foto te zien ( foto heeft de naam van de ID ) en de titel, capaciteit, land, plaats, en eigen website.

Dus als Categorie = Vakantiehuizen dan de gegevens laten zien.

Nu lukt het me wel om alle vakantiehuizen te laten zien maar neit om het dan te orderen.. Krijg nu eerst alle titels te zien van alle vakantiehuizen, dan de capaciteit van alle vakantiehuizen etc.
VB:
http://www.vaka...ntiehuizen

Maar het moet er als volgt uitzien:
http://www.vaka...huizen.php

Er werd me verteld dat ik het met ORDER BY moet doen.. maar heb deze functie even opgezoch maar volgens mij is dat niet wat ik meot gebruiken...


Ik heb 1 tabel met de gegevens. In deze tabel staat dus ook de kolom categorie.. en alleen als hier staat vakantiehuizen laat hij ze zien.

De code zonder dat het geordend is:


<table width="604"><tr><td width="21"></td>
<td width="155" height="139">



<IMG SRC="http://www.vakantielokaties.nl/Plaatjes/Foto/<?php
$query = "SELECT * FROM GEGEVENS WHERE categorie = 'Vakantiehuizen'";
$resultaat = mysql_query($query) or die (mysql_error());
while ($rij = mysql_fetch_array($resultaat)){
if ($get['abonnement1']==on)

echo $rij["ID"]."\n";
}
?>.jpg" WIDTH="150">

</td>
<td width="35"></td>
<td width="373">

<B>Titel:</B> <I>
<?php
$query = "SELECT * FROM GEGEVENS WHERE categorie = 'Vakantiehuizen'";
$resultaat = mysql_query($query) or die (mysql_error());
while ($rij = mysql_fetch_array($resultaat)){
echo $rij["Titel"]."\n";
}
?></I><BR><BR>
<B>Land:</B> <I><?php
$query = "SELECT * FROM GEGEVENS WHERE categorie = 'Vakantiehuizen'";
$resultaat = mysql_query($query) or die (mysql_error());
while ($rij = mysql_fetch_array($resultaat)){
echo $rij["landlokatie"]."\n";
}
?></I><BR>
<B>Plaats:</B> <I><?php
$query = "SELECT * FROM GEGEVENS WHERE categorie = 'Vakantiehuizen'";
$resultaat = mysql_query($query) or die (mysql_error());
while ($rij = mysql_fetch_array($resultaat)){
echo $rij["plaatslokatie"]."\n";
}
?></I><BR>
<B>Capaciteit:</B> <I><?php
$query = "SELECT * FROM GEGEVENS WHERE categorie = 'Vakantiehuizen'";
$resultaat = mysql_query($query) or die (mysql_error());
while ($rij = mysql_fetch_array($resultaat)){
echo $rij["capaciteit"]."\n";
}
?></I><BR>
<B>Type accommodatie: </B><I><?php
$query = "SELECT * FROM GEGEVENS WHERE categorie = 'Vakantiehuizen'";
$resultaat = mysql_query($query) or die (mysql_error());
while ($rij = mysql_fetch_array($resultaat)){
echo $rij["categorie"]."\n";
}
?></I> <BR><BR>
<B>Eigen Website:<BR></B> <I><A HREF="<?php
$query = "SELECT * FROM GEGEVENS WHERE categorie = 'Vakantiehuizen'";
$resultaat = mysql_query($query) or die (mysql_error());
while ($rij = mysql_fetch_array($resultaat)){
echo $rij["URL"]."\n";
}
?>" TARGET="_blanc"><?php
$query = "SELECT * FROM GEGEVENS WHERE categorie = 'Vakantiehuizen'";
$resultaat = mysql_query($query) or die (mysql_error());
while ($rij = mysql_fetch_array($resultaat)){
echo $rij["URL"]."\n";
}

?></A></I>
</td></tr> </table>




Iemand ideeen hoe ik dit moet aanpakken?? Zou het zeer waarderen!

ElleRt.

5 antwoorden

Gesponsorde links
Offline Thomas - 11/09/2004 13:15 (laatste wijziging 11/09/2004 13:16)
Avatar van Thomas Moderator Je hoeft die query maar één keer uit te voeren, want je haalt daarmee al alle resultaten van je GEGEVENS tabel (categorie 'Vakantiehuizen') op.

Elk resultaat wil je waarschijnlijk in een eigen tabel afdrukken, zoals op je Vakantiehuizen.php pagina.

Je kan in die ene query vertellen in welke volgorde je de resultaten van je query wilt hebben.

Stel dat je de resultaten van je query op (alfabetische) volgorde van landlocatie wilt hebben, en in de tweede plaats op (alfabetische) plaatslocatie.

De query wordt dan als volgt:
SELECT * FROM GEGEVENS ORDER BY landlokatie, plaatslokatie

ORDER BY ordert de resultaten standaard in oplopende volgorde.
landlokatie is het eerste argument waarop gesorteerd wordt, plaatslokatie het tweede.

Je code en tabellen zien er dan ongeveer als volgt uit:

  1. <?php
  2. // aanname, er is een verbinding met de database
  3. $query = "SELECT * FROM GEGEVENS ORDER BY landlokatie, plaatslokatie";
  4. res = mysql_query($query) or die("woops: ".mysql_error());
  5. while($row = mysql_fetch_assoc($res)) {
  6. ?>
  7. <table border="1">
  8. <tr>
  9. <td><img src="http://www.vakantielokaties.nl/Plaatjes/Foto/<?= $row['ID'] ?>.jpg"></td>
  10. <td>
  11. <b>Titel</b>: <?= $row['titel'] ?><br />
  12. <br />
  13. <b>Land</b>: <?= $row['landlokatie'] ?><br />
  14. <b>Plaats</b>: <?= $row['plaatslokatie'] ?><br />
  15. <b>Capaciteit</b>: <?= $row['capaciteit'] ?><br />
  16. <b>Type</b>: <?= $row['categorie'] ?><br />
  17. <br />
  18. <b>Eigen website</b><br />
  19. <?= $row['url'] ?><br />
  20. </td>
  21. </tr>
  22. </table>
  23. <?php
  24. }
  25. ?>
Offline ElleRt - 11/09/2004 13:23
Avatar van ElleRt MySQL interesse aah tx! hier kan ik verder mee!!!!

Voor degene die deze code ook wil gebruiken:
klein foutje:

res = mysql_query($query) or die("woops: ".mysql_error());
Moet natuurlijk zijn:
$res = mysql_query($query) or die("woops: ".mysql_error());


Heel erg bedankt voor de hulp!!!!
Offline ElleRt - 11/09/2004 15:26
Avatar van ElleRt MySQL interesse Ok... Stel ik heb 2 abonnementen... En de advertenties zijn voor die abonnementen anders.. maar ze moeten wel gewoon door elkaar staan... Hoe kan ik dit dan doen???

Ik heb dus abonnement 1 en abonnement 2

dus:

<?php
$query = "SELECT * FROM GEGEVENS WHERE Categorie = 'Vakantiehuizen' AND abonnement1= 'on' ORDER BY landlokatie, plaatslokatie";
$res = mysql_query($query) or die("woops: ".mysql_error());
while($row = mysql_fetch_assoc($res)) {
?>
<table border="1">
<tr>
<td><img src="http://www.vakantielokaties.nl/Plaatjes/Foto/<?= $row['ID'] ?>.jpg" WIDTH="150"></td>
<td>
<b>Titel</b>:
<A HREF="http://<?= $row['subURL'] ?>.vakantielokaties.nl" TARGET="_blanc"><?= $row['Titel'] ?></A></I><br />
<br />
<b>Land</b>: <?= $row['landlokatie'] ?><br />
<b>Plaats</b>: <?= $row['plaatslokatie'] ?><br />
<b>Capaciteit</b>: <?= $row['capaciteit'] ?><br />
<b>Type</b>: <?= $row['categorie'] ?><br />
<br />
<b>Eigen website</b><br />
<I><A HREF="<?= $row['URL'] ?>" TARGET="_blanc"><?= $row['URL'] ?></A></I><br />
</td>
</tr>
</table>
<?php
}
?>


en


<?php
$query = "SELECT * FROM GEGEVENS WHERE Categorie = 'Vakantiehuizen' AND abonnement2= 'on' ORDER BY landlokatie, plaatslokatie";
$res = mysql_query($query) or die("woops: ".mysql_error());
while($row = mysql_fetch_assoc($res)) {
?>
<table border="1">
<tr>
<td><img src="http://www.vakantielokaties.nl/Plaatjes/Foto/<?= $row['ID'] ?>.jpg" WIDTH="150"></td>
<td>
<b>Titel</b>: <?= $row['Titel'] ?><br />
<br />
<b>Land</b>: <?= $row['landlokatie'] ?><br />
<b>Plaats</b>: <?= $row['plaatslokatie'] ?><br />
<b>Capaciteit</b>: <?= $row['capaciteit'] ?><br />
<b>Type</b>: <?= $row['categorie'] ?><br />
<br />
<b>Eigen website</b><br />
<I><A HREF="<?= $row['URL'] ?>" TARGET="_blanc"><?= $row['URL'] ?></A></I><br />
</td>
</tr>
</table>
<?php
}
?>

Hoe voeg ik deze nu samen dan?
met if abonnement 1 is on
echo....
en if abonnement 2 is on
echo...

Zoiets toch? maar krijg het niet voormekaar.. :S

En ook wil ik dan dat de advertenties eigenlijk niet worden gesorteerd op letters van het land, maar dat ze willekeurig door elkaar staan zodat elke advertentie wel eens bovenaan staat...

Heeft iemand nog hints voor mij?
Offline Thomas - 11/09/2004 16:30
Avatar van Thomas Moderator Vanaf MySQL v3.23:

SELECT * FROM GEGEVENS WHERE abonnement1 = 'on' OR abonnement2 = 'on' ORDER BY RAND()

Geeft elke keer een andere ('random') volgorde.
Offline ElleRt - 12/09/2004 11:14
Avatar van ElleRt MySQL interesse Ok.. kom er helaas weer niet uit.. 

Het is namelijk zo dat mensen met abonnement 2 een andere advertentie krijgen dan mensen met abonnement1. Toch wil ik graag dat deze advertenties wel gewoon doorelkaar staan.. Anders zou ik wel gewoon 2 keer een opvraag query kunnen maken en dan dus eerst vooor abbonement 1 en daarna voor 2.. helaas komen dan dus eerst abonnement 1 op de pagina en hieroonder alle abonnement 2's...

Dus dacht ik het volgende te doen, helaas geeft hij nu alleen abonnement1 weer, en dan ook appartementen en hotels etc.. snap er niets meer van...




<?php

$query = "SELECT * FROM GEGEVENS WHERE abonnement1= 'on' OR abonnement2= 'on' AND Categorie = 'Vakantiehuizen' ORDER BY RAND()";
$res = mysql_query($query) or die("woops: ".mysql_error());
while($row = mysql_fetch_assoc($res)) {
if ($abonnement1 = "on")
{
echo "<table border='1'>
<tr>
<td><img src='http://www.vakantielokaties.nl/Plaatjes/Foto/".$row['ID'].".jpg' WIDTH='150'></td>
<td>
<b>Titel</b>:
<A HREF='http://".$row['subURL']. ".vakantielokaties.nl' TARGET='_blanc'>".$row['Titel']."</A></I><br />
<br />
<b>Land</b>: ".$row['landlokatie']."<br />
<b>Plaats</b>: ".$row['plaatslokatie']."<br />
<b>Capaciteit</b>: ".$row['capaciteit']."<br />
<b>Type</b>:".$row['categorie']."<br />
<br />
<b>Eigen website</b><br />
<I><A HREF='".$row['URL']."' TARGET='_blanc'>".$row['URL']."</A></I><br />
</td>
</tr>
</table> ";

}
}
if ($abonnement2 = "on")
{

echo "<table border='1'>
<tr>
<td><img src='http://www.vakantielokaties.nl/Plaatjes/Foto/".$row['ID'].".jpg' WIDTH='150'></td>
<td>
<b>Titel</b>: ".$row['Titel']."<br />
<br />
<b>Land</b>: ".$row['landlokatie']."<br />
<b>Plaats</b>: ".$row['plaatslokatie']."<br />
<b>Capaciteit</b>: ".$row['capaciteit']."<br />
<b>Type</b>: ".$row['categorie']."<br />
<br />
<b>Eigen website</b><br />
<I><A HREF='".$row['URL']."' TARGET='_blanc'>".$row['URL']."</A></I><br />
</td>
</tr>
</table> ";

}
else
{

echo "Helaas, geen resultaten gevonden<BR>";
}


?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.279s