categorieen en items

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Antony Riksen

Antony Riksen

17/03/2012 14:35:59
Quote Anchor link
Goede dag,

De bedoeling
Ik wil graag een soort album maken met verschillende mappen.

Wat heb je
Ik heb 2 tabellen.

tabel: album_cat
ID | cat | tekst
1 | auto | Alle info over autos.
2 | motor | Alle info over motors.
3 | man | Alles voor echte mannen.
4 | vrouw | Alles voor echte vrouwen.

===========================================

tabel: album
ID | naam | omschrijving | cat
1 | Opel corsa | Een snelle corsa | auto
2 | Opel Astra | Een leuke auto.. | auto
3 | Werkschoenen | Werkschoenen met stalen neus | man
4 | Dames pumps | Mooie schoenen met hoge hak | vrouw


Ik heb een pagina list.php aangemaakt en de code is:
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
27
28
29
30
31
echo '<ul>';

$sql = 'SELECT * FROM album_cat';
$res = mysql_query($sql,$link);

$sql2 = 'SELECT * FROM album';
$res2 = mysql_query($sql2,$link);

    if ($res && mysql_num_rows($res) >= 1)
    {
        while ($row = mysql_fetch_array($res))
        {
           echo '<li>'.$row['tekst'].'</li><br />';
          
           // loop maken.
               if ($res2 && mysql_num_rows($res2) >= 1)
                {
                    echo '<ul>';
                while ($row2 = mysql_fetch_array($res2))
                {  
                    if($row2['cat'] == $row['cat']){
                   echo '<li>'.$row2['naam'];
                   }
                }
                    echo '</ul>';
            // einde loop
                } else {
            echo 'Error.. leeg';
                }
        }
    }


Maar ik krijg als output:
* Alle info over autos
- Opel Corsa
- Opel Astra
* Alle info over motors
* Alles voor echte mannen
* Alles voor echte vrouwen
((Link: voorbeeld ))
probleem
Hij laad van de eerste whilelus dus netjes de 'producten' maar
niet meer van categorie 2,3 etc...

Ik zou graag willen weten wat ik verkeerd doen.

De bedoeling is overigens dat ik later met een CMS
die categorien kan aanmaken,wijzigen en verwijderen daarom heb ik
ze in een apart tabel gezet.

groeten, Antony
Gewijzigd op 17/03/2012 14:37:20 door Antony Riksen
 
PHP hulp

PHP hulp

15/07/2024 20:43:57
 
Victor -

Victor -

17/03/2012 15:00:26
Quote Anchor link
Alles kan met één sql query

Gebruik
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT c.id AS cat_id, c.cat, c.tekst, a.id AS album_id, a.naam, a.omschrijving FROM album_cat AS c, album AS a WHERE c.cat = a.cat SORT BY a.cat ASC

Nu krijg je alle informatie, alfabetisch gesorteerd op de categorie naam.
Gewijzigd op 17/03/2012 15:02:24 door Victor -
 
 - Diov  -

- Diov -

17/03/2012 15:07:37
Quote Anchor link
Als ik ook naar je broncode kijk vna je link die je opgaf zie ik iets 'raar's dat niet echt thuis hoord bij het scripten:

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
27
28
29
30
31
<!--

@import('php/connect.php');


                                         ,-="""=.
                                       .'        `.
                                      (            `.
                                       `.            `..
                                        ,'             .'
                                        `.            '.
                                          `-.           `-.
                                             )             `=-.
                                           .'              `=-.
                                         .`               .`-.
                           _            (                \ `-.
                        ,'   `.          `.        /`.    \
                       /        `.         \      |   `.   `.
                     ,'            `.       )    /      \    \
                    /     .'`.        `.    )    |       `.   \
                  ,'    .'    `.         `./     \         `.  \
                ,'    .'        `.                \          \  \
              ,'    .'            `.               \          `. \
            ,'   .'                 `.              )          ) (__.
          ,'   (                      `.            )          `."""'
      _.-'    __)                       `.         .  
     `""'""                               `"""""""


//--><ul><li>info over auto`s</li><br /><ul><li>Opel Corsa<li>Opel Astra</ul>
<li>info over Motor`s</li><br /><ul></ul><li>Alles voor mannen</li><br /><ul></ul><li>Alles voor vrouwen</li><br /><ul></ul>
 
Antony Riksen

Antony Riksen

17/03/2012 15:12:20
Quote Anchor link
Sorry van de vrouw :D

@dem
Hij showd alleen het eerste categorie terwijl de rest ook een value heeft...

@victor
SELECT c.id AS cat_id, c.cat, c.tekst, a.id AS album_id, a.naam, a.omschrijving FROM album_cat AS c, album AS a WHERE c.cat = a.cat SORT BY a.cat ASC

c.id , c.cat etc. ?! waar trek je dit vandaan?
en hoe kan ik dat dan netjes echo-en ?

groeten, Antony
 
 - Diov  -

- Diov -

17/03/2012 15:35:50
Quote Anchor link
@ Antony, ik zie ook dat je '*' gebruikt. Dit wordt afgeraden.

Roep alleen de velden op die je nodig hebt.

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
# We zetten dit volledig bovenaan

    # errors weergeven

    ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);

    # sql debug
    define('DEBUG_MODE',true);  // true == aan, false == uit

    # functie voor sql debug

    function showSQLError($sql,$error,$text='Error')
    {

        if (DEBUG_MODE)
        {

            return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
        }

        else
        {
            return $text;
        }
    }
  

include 'config.php';

$sql1 =    "SELECT ID, cat, tekst
            FROM album_cat
           "
;

#  Check of query is gelukt    
if (($result_sql1 = mysql_query($sql1)) === false)
{

    # als de query fout is -> foutafhandeling
    echo showSQLError($sql1,mysql_error(),'Fout met het ophalen van de gebruiker.');
}

elseif (mysql_num_rows($result_sql1) == 0)
{


    echo 'Er zijn geen album categorieën';
}

else
{
 // Categorieën zijn succesvol opgeroepen, nu doen we hetzelfde maar nu de albums zelf:

$sql2 =    "SELECT ID, naam, omschrijving, cat
            FROM album
           "
;

#  Check of query is gelukt    
if (($result_sql2 = mysql_query($sql2)) === false)
{

    # als de query fout is -> foutafhandeling
    echo showSQLError($sql2,mysql_error(),'Fout met het ophalen van de gebruiker.');
}

elseif (mysql_num_rows($result_sql2) == 0)
{

    echo 'Er zijn nog geen albums';
}

else
{

   while ($row1 = mysql_fetch_array($result_sql1))
   {

      echo '<li>'.$row1['tekst'].'</li><br />';
      echo '<ul>';
                
     while ($row2 = mysql_fetch_array($result_sql2))
     {
  
       if($row2['cat'] == $row1['cat']){ // Klopt dit wel? Weet niet zeker
       echo '<li>';
       echo $row2['naam'];
       }
     }
      
            
                
   }

}

}

?>


Ik heb wat geprobeerd, had niets te doen.
Ik heb het nog niet getest.
Zeg even wat het geeft.
 
Antony Riksen

Antony Riksen

17/03/2012 15:43:59
Quote Anchor link
@dem.
1 op 1:
Linkje
ik ga het nu even lezen en kijken of ik het snap :)

thanks alvast.

// edit
Hij doet precies het zelfde als mijn code...
alleen ik sluit de list af en in jouw code niet.
waardoor de opmaak anders is.
En ik vond mijn code sneller te lezen...

Het probleem blijft:
Hij 'leest' de eerste categorie perfect uit,
en dan alleen nogmaar de categorieen en die de inhoud ervan...

groeten,
Gewijzigd op 17/03/2012 15:47:12 door Antony Riksen
 
 - Diov  -

- Diov -

17/03/2012 15:49:50
Quote Anchor link
Kan je anders een je sql geven zodat ik hem gewoon in mijn database kan zetten?
Dan kan ik zien waar het probleem zit.
 
Antony Riksen

Antony Riksen

17/03/2012 15:54:50
Quote Anchor link
Wat wil je hebben dan?
de tabel export?
album_cat.sql
album.sql

de 2 tabellen.

groeten, Antony
 
 - Diov  -

- Diov -

17/03/2012 16:13:20
Quote Anchor link
@ Antony,
ik heb wat eraan gewerkt:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
# We zetten dit volledig bovenaan

    # errors weergeven

    ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);

    # sql debug
    define('DEBUG_MODE',true);  // true == aan, false == uit

    # functie voor sql debug

    function showSQLError($sql,$error,$text='Error')
    {

        if (DEBUG_MODE)
        {

            return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
        }

        else
        {
            return $text;
        }
    }
  


include 'config.php'; // database connectie
 

$sql_get_cat =    "SELECT id, cat, tekst
                   FROM album_cat
                  "
;

if (($result_get_cat = mysql_query($sql_get_cat)) === false)
{

    echo showSQLError($sql_get_cat,mysql_error(),'Fout met het ophalen van de gebruiker.');
}

elseif (mysql_num_rows($result_get_cat) == 0)
{

    echo 'Er zijn geen cattegorieën.';
}

else
{
    while($row_cat = mysql_fetch_assoc($result_get_cat)){
    
    echo '<li>'.$row_cat['tekst'].'</li><br />';

    $sql2 = 'SELECT id, naam, omschrijving, cat FROM album';
    $res2 = mysql_query($sql2);
          

               if ($res2 && mysql_num_rows($res2) >= 1)
                {

                    echo '<ul>';
                    while($row_album = mysql_fetch_assoc($res2))
                     {
  
                       if($row_album['cat'] == $row_album['cat']){
                       echo '<li>'.$row_album['naam'];
                       }
                     }

                    echo '</ul>';
               }

               else {
                  echo 'Error.. leeg';
               }

     }
}

?>


Dit werkt bij mij. Hopelijk is het dit dat je wilt?
Als je nog verder hulp nodig hebt? Ik zoek iets waar ik me bezig kan in houden.

Ben maar 15 jaar oud, misschien kunnen we samen iets maken?
 
Antony Riksen

Antony Riksen

17/03/2012 16:24:31
Quote Anchor link
Thanks !

Daar kan ik wat mee,
Maar waar deed ik het nu verkeerd vraag je je dan af he :D

Ach ja leeftijd who cares !

Hartelijk dank.

groeten, Antony
 
 - Diov  -

- Diov -

17/03/2012 17:21:14
Quote Anchor link
@ Antony, ik gebruikte mysql_fetch_assoc

Misschien zit daar de fout? Jij gebruikt mysql_fetch_array
Misschien moet je het eens testen en laten weten.
 
Victor -

Victor -

17/03/2012 18:13:06
Quote Anchor link
okee even snel getypt, probeer dit eens?

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

$items
= Array();

$sql = "SELECT c.id AS cat_id, c.cat, c.tekst AS cat_tekst, a.id AS album_id, a.naam AS album_naam, a.omschrijving AS album_omschrijving FROM album_cat AS c, album AS a WHERE c.cat = a.cat SORT BY a.cat ASC";
$result = mysql_query($sql, $link);

while($row = mysql_fetch_assoc($result)) {
    $items[$row['cat']][]['cat_id'] = $row['cat_id'];
    $items[$row['cat']][]['cat_tekst'] = $row['cat_tekst'];
    $items[$row['cat']][]['album_id'] = $row['album_id'];
    $items[$row['cat']][]['album_naam'] = $row['album_naam'];
    $items[$row['cat']][]['album_omschrijving'] = $row['album_omschrijving'];
}


echo '<ul>';
foreach($items as $cat => $item) {
    echo '<li>';
    echo $cat;
    echo '<ul>';
    foreach($item as $dit) {
        echo '<li>'. $dit['naam'] .'</li>';
    }

    echo '</ul>';
    echo '</li>';
}
 



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.