Op wat voor manier uit MySQL database halen?

Pagina: 1
Acties:
  • 53 views sinds 30-01-2008

  • GekkeCoen
  • Registratie: September 2005
  • Laatst online: 20-02-2025
Goededag,

Ik wil graag een aantal gegevens uit een MySQL database halen. Deze is als volgd opgebouwd:

startpagina_categorie
Koloms: cat_id en naam

startpagina_links
Koloms: cat_id, naam, omschrijving en url

De categorie met de bijhorende links hebben de zelfde cat_id (bijvoorbeeld 4). Hoe kan ik ervoor zorgen met een simpele code dat het als volgd afgeprint wordt:

Categorie #1
Link #1
Link #2
Link #3
Link #4
Link #5

Categorie #2
Link #1
Link #2
Link #3
Link #4
Link #5

Enzovoort.

Mvg,
Coen

Edit: Oja nog een vraagje waar ik niet uitkom, hoe kan ik ervoor zorgen dat de slashes gestript wordt bij de volgende code: $record->url? Ik heb begrepen dat dit met stripslashes() moet, maar hoe moet ik die toevoegen?

[ Voor 16% gewijzigd door GekkeCoen op 08-10-2006 16:06 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14:39

gorgi_19

Kruimeltjes zijn weer op :9

Met een JOIN een SQL Statement maken en dit afdrukken? :?

Maar waar zit het probleem? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • tuv
  • Registratie: December 2003
  • Laatst online: 12-10-2025

tuv

Dit zijn wel erg simpele vragen, ik zou zeggen kijk eens op http://www.php.net/docs.php en http://www.mysql.org/doc/refman/4.1/en/select.html .

  • GekkeCoen
  • Registratie: September 2005
  • Laatst online: 20-02-2025
gorgi_19 schreef op zondag 08 oktober 2006 @ 16:11:
Met een JOIN een SQL Statement maken en dit afdrukken? :?

Maar waar zit het probleem? :)
Ik krijg het niet voor elkaar om ze in de goede volgorde af te printen (hoe in de topicstart staat). Het lukt wel zo:

Categorie #1
Categorie #2
Categorie #3
Categorie #4
Categorie #5

Link #1
Link #2
Link #3
Link #4
Link #5

Edit: Ik kan het wel zo doen:

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
26
27
28
29
30
31
db_connect();
$query = "SELECT * FROM startpagina_categorie  WHERE cat_id = 1 ORDER BY cat_id";
$sql = mysql_query($query) or die ( mysql_error( ) );
while($record = mysql_fetch_object($sql)) {
echo "$record->naam<br />\n";
}
$query = "SELECT * FROM startpagina_links  WHERE cat_id = 1 ORDER BY cat_id";
$sql = mysql_query($query) or die ( mysql_error( ) );
while($record = mysql_fetch_object($sql)) {
echo "<a href=\"$record->url\" title=\"$record->omschrijving\">$record->naam</a><br />\n";
}
[/c$query = "SELECT * FROM startpagina_categorie  WHERE cat_id = 2 ORDER BY cat_id";
$sql = mysql_query($query) or die ( mysql_error( ) );
while($record = mysql_fetch_object($sql)) {
echo "$record->naam<br />\n";
}
$query = "SELECT * FROM startpagina_links  WHERE cat_id = 2 ORDER BY cat_id";
$sql = mysql_query($query) or die ( mysql_error( ) );
while($record = mysql_fetch_object($sql)) {
echo "<a href=\"$record->url\" title=\"$record->omschrijving\">$record->naam</a><br />\n";
}
$query = "SELECT * FROM startpagina_categorie  WHERE cat_id = 3 ORDER BY cat_id";
$sql = mysql_query($query) or die ( mysql_error( ) );
while($record = mysql_fetch_object($sql)) {
echo "$record->naam<br />\n";
}
$query = "SELECT * FROM startpagina_links  WHERE cat_id = 3 ORDER BY cat_id";
$sql = mysql_query($query) or die ( mysql_error( ) );
while($record = mysql_fetch_object($sql)) {
echo "<a href=\"$record->url\" title=\"$record->omschrijving\">$record->naam</a><br />\n";
}


Maar als er dan een nieuwe categorie wordt toegevoegd, moet ik ook het .php bestand aanpassen. Dat schiet niet op dus.

[ Voor 65% gewijzigd door GekkeCoen op 08-10-2006 16:29 ]


  • Tepel
  • Registratie: Juni 2006
  • Laatst online: 25-12-2025
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
db_connect();

$query = "SELECT * FROM startpagina_categorie  ORDER BY naam ASC";
$sql = mysql_query($query) or die ( mysql_error( ) );

while($record = mysql_fetch_assoc($sql)) {
    echo $record['naam']."<br />\n";

    $query = "SELECT * FROM startpagina_links  WHERE cat_id = ".$record['cat_id']." ORDER BY naam ASC";
    $sql2 = mysql_query($query) or die ( mysql_error( ) );

    while($record2 = mysql_fetch_assoc($sql2)) {
        echo '<a href="'.$record2['url'].'" title="'.$record2['omschrijving'].'">'.$record2['naam']."</a><br />\n";
    }
}

0x7F


  • GekkeCoen
  • Registratie: September 2005
  • Laatst online: 20-02-2025
@Tepel, heel erg bedankt!

[ Voor 93% gewijzigd door GekkeCoen op 08-10-2006 17:22 ]


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Je gaat natuurlijk niet voor elke categorie een nieuwe query uitvoeren. Dat kan makkelijk in 1 query.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
db_connect();

$query = "SELECT sl.cat_id, sl.naam, sl.url, sl.omschrijving, sc.naam AS cat_naam 
    FROM startpagina_links sl
    INNER JOIN startpagina_categorie sc ON sc.cat_id = sl.cat_id
    ORDER BY sc.naam ASC, sl.naam ASC";
    
$sql = mysql_query($query) or die ( mysql_error() );

$prevCatId = -1;

while ($record = mysql_fetch_assoc($sql)) {
    if (($prevCatId = -1) or ($prevCatId != $record['cat_id'])) {
        $prevCatId = $record['cat_id'];
        echo $record['cat_naam']."<br />\n";
    }
    
    echo '<a href="'.$record['url'].'" title="'.$record['omschrijving'].'">'.$record['naam']."</a><br />\n";
}
?>


Maar hoort dit niet in /14?

| Toen / Nu


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Intentionally left blank


  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
Dit kun je allemaal zo uit een tutorial vissen me dunkt.

Verwijderd

SuperRembo schreef op zondag 08 oktober 2006 @ 22:42:
Je gaat natuurlijk niet voor elke categorie een nieuwe query uitvoeren. Dat kan makkelijk in 1 query.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
db_connect();

$query = "SELECT sl.cat_id, sl.naam, sl.url, sl.omschrijving, sc.naam AS cat_naam 
    FROM startpagina_links sl
    INNER JOIN startpagina_categorie sc ON sc.cat_id = sl.cat_id
    ORDER BY sc.naam ASC, sl.naam ASC";
    
$sql = mysql_query($query) or die ( mysql_error() );

$prevCatId = -1;

while ($record = mysql_fetch_assoc($sql)) {
    if (($prevCatId = -1) or ($prevCatId != $record['cat_id'])) {
        echo $record['cat_naam']."<br />\n";
    }
    
    echo '<a href="'.$record['url'].'" title="'.$record['omschrijving'].'">'.$record['naam']."</a><br />\n";
}
?>


Maar hoort dit niet in /14?
Moet je ergens $prevCatId niet updaten in de while loop? :) Verder lijkt me het inderdaad niet slim om in een for-loop telkens een query uit te voeren...

  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Verwijderd schreef op zondag 08 oktober 2006 @ 23:11:
[...]

Moet je ergens $prevCatId niet updaten in de while loop? :)
Je hebt gelijk, was ik vergeten :)

| Toen / Nu


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Mischa_NL schreef op zondag 08 oktober 2006 @ 23:07:
Dit kun je allemaal zo uit een tutorial vissen me dunkt.
Dat ben ik met je eens, maar als je niet meer kan melden dan alleen dat, dan kun je beter niets zeggen in een topic. ;)

Omdat ik het er verder wel mee eens ben, en het probleem schijnbaar toch al is opgelost, brei ik maar een eind aan dit topic. GekkeCoen, er is je al eerder verteld dat we wat meer eigen inzet verwachten van een topicstarter. Ik stel voor dat je daar bij je volgende topic aan denkt, want eens worden we het zat. ;)

'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.

Pagina: 1

Dit topic is gesloten.