Kijken of pagina bestaat in andere taal

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pong Zor

Pong Zor

02/11/2011 13:27:18
Quote Anchor link
Ik heb het volgende:

Tabel:

pagina_id - taal_id - pagina_naam
1 - 1 - Homepage Nederlands
1 - 35 - Homepage Engels

2 - 1 - Normale pagina Nederlands
2 - 35 - Normale pagina Engels

3 - 35 - Normale pagina 2 Nederlands

Een pagina kan meerdere talen bevatten.
In dit voorbeeld heeft Homepage Nederlands een variant Homepage Engels. Normale pagina Nederlands heeft ook een variant Engels.

Normale pagina 2 Nederlands heeft geen variant in het Engels.

Hoe kan ik een query maken die controleert hoeveel talen er aanwezig zijn (in dit geval 2, Nederlands = id1 (standaard taal), Engels = id35 bijvoorbeeld) en welke pagina's niet voorzien zijn van beide talen.

Als het ware wil ik een melding creëren die zegt let op pagina ID 3 is alleen voorzien van taal ID 1 en mist taal ID 35.

Als ik niet voldoende informatie gegeven heb hoor ik het graag.
Gewijzigd op 02/11/2011 13:27:54 door Pong Zor
 
PHP hulp

PHP hulp

22/12/2024 07:19:12
 
Bas Wagenmaker

Bas Wagenmaker

02/11/2011 19:31:11
Quote Anchor link
Staan deze gegevens in een SQL database? In dat geval kun je met mysql_num_rows(); het aantal rijen bepalen voor een pagina, en zo het aantal talen bepalen.
 
Pong Zor

Pong Zor

03/11/2011 10:35:34
Quote Anchor link
Hoi Bas,

het staat inderdaad in een database.
Voorbeeld staat hier:
http://demo.simpelcms.com/admin/pagina2.php

mijn code die dit genereert:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
#standaard taal ophalen
$query_standaard_taal_pagina = "SELECT p.pagina_id, p.naam, p.sorteervolgorde, t.taal, t.taal_id FROM paginas as p, talen as t WHERE p.hoofdpagina_id='0' AND p.taal_id=t.taal_id AND t.standaard='1'";
$resultaat_standaard_taal_pagina = mysql_query($query_standaard_taal_pagina, $verbindDatabase) or die("A MySQL error has occurred.<br />Your Query: " . $query_standaard_taal_pagina . "<br /> Error: (" . mysql_errno() . ") " . mysql_error());                            


Deze query haalt alle hoofdpagina's op met de standaard taal

Vervolgens haal ik alle subpagina's op van de hoofdpagina (mits ze er 1 hebben)

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
while($rij_standaard_taal_pagina = mysql_fetch_array($resultaat_standaard_taal_pagina)){
    $counter++;

echo '<tr valign="top" ' . ($counter % 2 == 0 ? 'class="even"' : 'class="oneven"') . '>
        <td>
            <div class="standaard" style="position: relative; float: left; width: 250px;">
                <span class="hoofditem">id: ' . $rij_standaard_taal_pagina['pagina_id'] . ' pagina ' . $rij_standaard_taal_pagina['naam'] . '</span><br />';    
            
                # subpagina's van de standaard taal ophalen
                $query_submenu = sprintf("SELECT p.pagina_id, p.naam, p.sorteervolgorde, t.taal, t.taal_id FROM paginas as p, talen as t WHERE p.hoofdpagina_id='%s' AND p.taal_id=t.taal_id AND t.taal_id='%s'",
                    mysql_real_escape_string($rij_standaard_taal_pagina['pagina_id']),
                    mysql_real_escape_string($rij_standaard_taal_pagina['taal_id'])
                );
                $resultaat_submenu = mysql_query($query_submenu, $verbindDatabase) or die("A MySQL error has occurred.<br />Your Query: " . $query_submenu . "<br /> Error: (" . mysql_errno() . ") " . mysql_error());    
                while($rij_submenu = mysql_fetch_array($resultaat_submenu)){
                    echo '<span class="subitem">id: ' . $rij_submenu['pagina_id'] . ' pagina: ' . $rij_submenu['naam'] . '</span><br />';
                }
        echo '</div>';                            
    echo '</td>';    



Nu wil dus: vergelijken of de hoofdpagina's ook bestaan met een andere taal_id, zo ja dan toon ik deze, zo nee dan optie om aan te maken.

Dan wil ik daarna kijken of de subpagina's ook bestaan met een andere taal_id, zo ja tonen, zo optie om aan te maken

Toevoeging op 03/11/2011 11:10:04:

Ik heb het geprobeerd concreter te maken:
Voorbeeld: http://demo.simpelcms.com/admin/pagina2.php

Zoals je ziet heeft taal_id 4(engels) geen subpagina's, daar zou ik graag een melding van willen hebben in de zin van: Je mist pagina_id 2 en 3 in het engels.
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
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
#standaard taal ophalen
$query_standaard_taal_pagina = "SELECT p.pagina_id, p.naam, p.sorteervolgorde, t.taal, t.taal_id FROM paginas as p, talen as t WHERE p.hoofdpagina_id='0' AND p.taal_id=t.taal_id AND t.standaard='1'";
$resultaat_standaard_taal_pagina = mysql_query($query_standaard_taal_pagina, $verbindDatabase) or die("A MySQL error has occurred.<br />Your Query: " . $query_standaard_taal_pagina . "<br /> Error: (" . mysql_errno() . ") " . mysql_error());                

while($rij_standaard_taal_pagina = mysql_fetch_array($resultaat_standaard_taal_pagina)){
    $counter++;
    
    echo '<strong>taal_id:</strong>  ' . $rij_standaard_taal_pagina['taal_id'] . ' <strong>pagina:</strong> ' . $rij_standaard_taal_pagina['naam'] . ' <strong>pagina_id:</strong> ' . $rij_standaard_taal_pagina['pagina_id'] . '<br>';
    
    # subpagina's van de standaard taal ophalen
    $query_standaard_taal_submenu = sprintf("SELECT p.pagina_id, p.naam, p.sorteervolgorde, t.taal, t.taal_id FROM paginas as p, talen as t WHERE p.hoofdpagina_id='%s' AND p.taal_id=t.taal_id AND t.taal_id='%s'",
        mysql_real_escape_string($rij_standaard_taal_pagina['pagina_id']),
        mysql_real_escape_string($rij_standaard_taal_pagina['taal_id'])
    );
    
    $resultaat_standaard_taal_submenu = mysql_query($query_standaard_taal_submenu, $verbindDatabase) or die("A MySQL error has occurred.<br />Your Query: " . $query_standaard_taal_submenu . "<br /> Error: (" . mysql_errno() . ") " . mysql_error());    
    while($rij_standaard_taal_submenu = mysql_fetch_array($resultaat_standaard_taal_submenu)){
        echo '<strong>taal_id:</strong> ' . $rij_standaard_taal_submenu['taal_id'] . ' <strong>subpagina:</strong> ' . $rij_standaard_taal_submenu['naam'] . ' <strong>pagina_id:</strong> ' . $rij_standaard_taal_submenu['pagina_id'] . '<br />';
    }
    
    
    #niet standaard taal ophalen
    $query_niet_standaard_taal_pagina = "SELECT p.pagina_id, p.naam, p.sorteervolgorde, t.taal, t.taal_id FROM paginas as p, talen as t WHERE p.hoofdpagina_id='0' AND p.taal_id=t.taal_id AND t.standaard='0'";
    $resultaat_niet_standaard_taal_pagina = mysql_query($query_niet_standaard_taal_pagina, $verbindDatabase) or die("A MySQL error has occurred.<br />Your Query: " . $query_niet_standaard_taal_pagina . "<br /> Error: (" . mysql_errno() . ") " . mysql_error());                                    
    $bestaat_in_andere_taal = mysql_num_rows($resultaat_niet_standaard_taal_pagina);

    echo '<br><strong>' . $bestaat_in_andere_taal . ' keer een andere taal gevonden namelijk: </strong><br>';                            
    
    while($rij_niet_standaard_taal_pagina = mysql_fetch_array($resultaat_niet_standaard_taal_pagina)){
        echo '<strong>taal_id:</strong> ' . $rij_niet_standaard_taal_pagina['taal_id'] . ' <strong>pagina:</strong> ' . $rij_niet_standaard_taal_pagina['naam'] . ' <strong>pagina_id:</strong> ' . $rij_niet_standaard_taal_pagina['pagina_id'] . '<br>';
        
        # subpagina's van de standaard taal ophalen
        $query_niet_standaard_taal_submenu = sprintf("SELECT p.pagina_id, p.naam, p.sorteervolgorde, t.taal, t.taal_id FROM paginas as p, talen as t WHERE p.hoofdpagina_id='%s' AND p.taal_id=t.taal_id AND t.taal_id='%s'",
            mysql_real_escape_string($rij_niet_standaard_taal_pagina['pagina_id']),
            mysql_real_escape_string($rij_niet_standaard_taal_pagina['taal_id'])
        );
        
        $resultaat_niet_standaard_taal_submenu = mysql_query($query_niet_standaard_taal_submenu, $verbindDatabase) or die("A MySQL error has occurred.<br />Your Query: " . $query_niet_standaard_taal_submenu . "<br /> Error: (" . mysql_errno() . ") " . mysql_error());    
        while($rij_niet_standaard_taal_submenu = mysql_fetch_array($resultaat_niet_standaard_taal_submenu)){
            echo '<strong>taal_id:</strong> ' . $rij_niet_standaard_taal_submenu['taal_id'] . ' <strong>pagina:</strong> ' . $rij_niet_standaard_taal_submenu['naam'] . '<strong>pagina_id:</strong> ' . $rij_niet_standaard_taal_submenu['pagina_id'] . '<br>';
        }                                
        
    }

    
}
Gewijzigd op 03/11/2011 11:10:35 door Pong Zor
 



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.