namen rangschikken op <div> A/B/C enz

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Elvira Clement

Elvira Clement

22/10/2012 16:29:54
Quote Anchor link
Hoi Hoi,

ik ben nieuw met PHP en databases. Ik vroeg mij af of iemand mij zou kunnen helpen.

Ik wil graag voor mijn edelstenenverzameling een website maken.
Hierbij wil ik de stenen die ik heb invoeren in de database.

Nu wil ik als menu graag dat de <div>'s A / B/ C enz. worden aangemaakt met behulp van php.

Ik heb nu dit geschreven:

<div class="kolom">
<h2 class="kolomtitel">A</h2>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
                
    $resulta
= mysql_query("SELECT * FROM edelsteen WHERE naam LIKE 'A%'");
        $rowa = mysql_fetch_assoc($resulta);
                
    $resulta = mysql_query("SELECT * FROM edelsteen WHERE naam LIKE 'A%'");
    while (($rowa = mysql_fetch_assoc($resulta)) != NULL) {    
        $eruit = $rowa['naam'];
                    
    print("<div><a href='overzicht.php?getid=$eruit'>" .$rowa['naam']."</a></div>");
        }

        ?>

</div>
<div class="kolom">
<h2 class="kolomtitel"> B</h2>
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
<?php
    include("db.php");

    $result = mysql_query("SELECT * FROM edelsteen");
    $row = mysql_fetch_assoc($result);                                
        
                    
    $result = mysql_query("SELECT * FROM edelsteen WHERE naam LIKE 'B%'");
    while (($row = mysql_fetch_assoc($result)) != NULL) {    
        $eruit = $row['naam'];

        print("<div><a href='overzicht.php?getid=$eruit'>" .$row['naam']."</a></div>");
    }

    ?>
</div>





Nu zou dat makkelijker moeten kunnen door in de php code te zetten dat als er bv stenen zijn met de beginletter K dat er dan automatisch een divtabel wordt aangemaakt van K.. Alleen heb ik geen idee hoe?

Zou fijn zijn als iemand mij zou kunnen helpen!
 
PHP hulp

PHP hulp

03/12/2024 18:11:31
 
Rick van Riel

Rick van Riel

22/10/2012 17:10:22
Quote Anchor link
Elvira Clement,

Ik kan zeker makkelijker. Ik heb een script voor je geschreven dat laat zien hoe het werkt.

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
21
22
23
24
25
26
<?php

// Array met alle values die verwerkt moeten worden
$results = array('apple', 'andre', 'beer', 'tostie', 'zeep');

// Een loop die van a tot z loopt
foreach(range('a', 'z') as $letter) {

    echo '<div class="kolom">
          <h2 class="kolomtitel">'
.$letter.'</h2>';

    // Door de values in de array results loopen
    foreach($results as $result) {

        // Kijken of de eerste letter van de value gelijk is aan de letter waardoor op dat moment word geloopt
        if(substr($result, 0, 1) == $letter) {
            echo '<div><a href="overzicht.php?getid=$eruit">'.$result.'</a></div>';
        }

    }


    echo '</div>';

}


?>


Ik hoop dat je er iets aan hebt.
 
Wouter J

Wouter J

22/10/2012 17:24:41
Quote Anchor link
Rick, een behoorlijk tijdvretend scriptje! :) Allereerst is het onnodig om een steen die al is geëchoëd in de array te houden. Maak van die 2e foreach loop zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
foreach ($results as $i => $result) {
    if (...) {
        // ... een echo

        unset($results[$i]); // verwijder de waarde uit de array
    }
}

?>


Tevens is het onnodig een kolom met een letter te echoën als die helemaal geen results heeft. Beter is gewoon gebruik maken van de sorteer methode in SQL:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT data FROM mijn_edelstenen SORT BY name


Dan krijg je alle resultaten al in een gesorteerde volgorde, je hoeft vervolgens alleen nog deze te echoën.
 



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.