Lijst in alfabetische volgorde met links.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thomas R

Thomas R

30/07/2011 14:19:49
Quote Anchor link
Hallo,

Ik ben niet helemaal nieuw hier, ook niet met PHP maar ik zit met een probleem voor mijn website. Ik probeer namelijk een ledenlijst te maken die geheel automatisch gaat. Alle gegevens worden uit de database gehaald en netjes in een rij gezet. Ook netjes in de goede kolom.

Dit is de oude php-code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$qry
= "SELECT name, LEFT(name, 1) AS first_char FROM albums
        WHERE UPPER(LEFT(name, 1)) BETWEEN 'A' AND 'Z'
        OR LEFT(name, 1) BETWEEN '0' AND '9' ORDER BY name"
;
 
$result = mysql_query($qry);
$current_char = '';
while ($row = mysql_fetch_assoc($result)) {
    if ($row['first_char'] != $current_char) {
        $current_char = $row['first_char'];
        echo '<br />' . strtoupper($current_char) . '<br />-----<br />';
    }

    echo $row['name'] . '<br />';
}

?>


En die heb ik aangepast naar dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$host
="***";
$username="***";
$password="***";
$database="***";

mysql_connect("$host", "$username", "$password") or die(mysql_error());
mysql_select_db("$database") or die(mysql_error());


$qry = "SELECT *, LEFT(naam, 1) AS first_char FROM *Tabel*
        WHERE UPPER(LEFT(naam, 1)) BETWEEN 'A' AND 'Z'
        OR LEFT(naam, 1) BETWEEN '0' AND '9' ORDER BY naam"
;
 
$result = mysql_query($qry);
$current_char = '';
while ($row = mysql_fetch_array($result)) {
    if ($row['first_char'] != $current_char) {
        $current_char = $row['first_char'];
        ?>
<a href="#" onclick="return kadabra('
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo strtoupper($current_char); ?>
');">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php  echo "" . strtoupper($current_char) . "</a><br>";
    }

        echo '<div id=' . strtoupper($current_char) . '>';
    echo $row['naam'] . '<br>';
        echo $row['adres'] . ',<br>';
        echo $row['postcodewoonplaats'] . '<br>';
        echo $row['telefoonnummer'] . '<br>';
        echo '<b>Bondsnr: </b>' . $row['bondsnummer'] . '<br><br>';
        echo '</div>';
}

?>

Met behulp van het veranderde stuk hoort hij in plaats van de kop een link te plaatsen en als je daar op klikt horen alle namen die met die letter beginnen uit te klappen. Maar nu klapt hij ze wel uit, alleen laat hij alleen maar de eerste persoon zien die bijvoorbeeldmet de letter 'a' begint. terwijl het er dus eigenlijk 4 ofzo zijn.

Hopelijk kan iemand me hiermee helpen?
 
PHP hulp

PHP hulp

20/04/2024 08:25:20
 
The Force

The Force

30/07/2011 14:40:27
Quote Anchor link
Dat ligt waarschijnlijk aan de javascript functie kadabra(). Kan je de code daarvan ook even online zetten?

P.S. Beginnen alle namen niet met een letter tussen de A en Z? "WHERE UPPER(LEFT(naam, 1)) BETWEEN 'A' AND 'Z' OR LEFT(naam, 1) BETWEEN '0' AND '9'" lijkt me een beetje overbodig.
 
Thomas R

Thomas R

30/07/2011 14:42:01
Quote Anchor link
Ja, ik zal die eens even zoeken voor je:
<style type="text/css">
#A {
display: none;
border: none;
} #B {
display: none;
border: none;
} #G {
display: none;
border: none;
}
</style>
<script type="text/javascript">
function kadabra(zap) {
if (document.getElementById) {
var abra = document.getElementById(zap).style;
if (abra.display == "block") {
abra.display = "none";
} else {
abra.display= "block";
}
return false;
} else {
return true;
}
}
</script>

Ja, je hebt wel gelijk, die kan wel weg inderdaad.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.