Kijken of pagina bestaat in andere taal
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
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.
het staat inderdaad in een database.
Voorbeeld staat hier:
http://demo.simpelcms.com/admin/pagina2.php
mijn code die dit genereert:
Code (php)
1
2
3
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());
$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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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>';
$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)
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
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>';
}
}
}
$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