URL amigables, varios parámetros con paginación
Publicado por sergio (12 intervenciones) el 22/06/2019 12:49:33
Hola muy buenas a todos, espero me podáis ayudar.
Estoy haciendo las URL amigables de: dominio/p?id=1&?clase=home&pagina=4
Este es mi htacces;
RewriteRule ^p/(.+)$ p.php?id=$1
RewriteRule ^p/(.+)/(.+)$ p.php?id=$1&clase=$2
He conseguido omitir los parámetros del ?id=1... dominio/p/1... pero tengo varios problemas.
1 Cuando intento pasar la clase home a url amigable en htacces /p/1/home&pagina=7 me da un error en la consulta mysql, creo que es porque no consigo pasar por $_GET las clases del segundo parámetro en la url.
2 En la paginación no consigo que aparezca la variable clase=home: /p/1&?clase=&pagina=7 debe de ser por consecuencia del primer punto.
Siento soltaros este chorro de código, pero no se explicarme de otra manera!! Espero que me podáis ayudar...Un saludos y gracias!!
Estoy haciendo las URL amigables de: dominio/p?id=1&?clase=home&pagina=4
Este es mi htacces;
RewriteRule ^p/(.+)$ p.php?id=$1
RewriteRule ^p/(.+)/(.+)$ p.php?id=$1&clase=$2
He conseguido omitir los parámetros del ?id=1... dominio/p/1... pero tengo varios problemas.
1 Cuando intento pasar la clase home a url amigable en htacces /p/1/home&pagina=7 me da un error en la consulta mysql, creo que es porque no consigo pasar por $_GET las clases del segundo parámetro en la url.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sql = "SELECT id, clases, url, imagen FROM clase_palabras ORDER BY id ASC";
$result = mysqli_query($con, $sql) or die('Consulta fallida: ' . mysqli_error());
$id_registro = isset($_GET['id']) ? $_GET['id'] : 'n';
if ($id_registro == 'n') {
while ($line = mysqli_fetch_array($result)) {
echo "<a href=\"p/" . $line['id'] . '/clase/' . $line['clases'] . "\">" . $line['clases'] . "</a>";
}
} else {
$sql = "SELECT * FROM palabras WHERE id_clase=" . $id_registro;
$result = mysqli_query($con, $sql) or die('Consulta fallida: ' . mysqli_error());
2 En la paginación no consigo que aparezca la variable clase=home: /p/1&?clase=&pagina=7 debe de ser por consecuencia del primer punto.
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
$url = $id_registro . '/clase/' . $line['clases'] . "&";
$num_total_registros = mysqli_num_rows($result);
if ($num_total_registros > 0) {
//Limito la busqueda
$tamano_pagina = 8;
$pagina = false;
//examino la página a mostrar y el inicio del registro a mostrar
if (isset($_GET["pagina"])) {
$pagina = $_GET["pagina"];
}
if (!$pagina) {
$inicio = 0;
$pagina = 1;
} else {
$inicio = ($pagina - 1) * $tamano_pagina;
}
//calculo el total de páginas
$total_paginas = ceil($num_total_registros / $tamano_pagina);
$sql = "SELECT id_clase, ingles, espanol FROM palabras WHERE id_clase=$id_registro ORDER BY id_clase LIMIT " . $inicio . "," . $tamano_pagina;
$result = mysqli_query($con, $sql) or die('Consulta fallida: ' . mysqli_error());
echo '<table class="width200">';
while ($line = mysqli_fetch_array($result)) {
if (isset($_GET['id'])) {
if ($id_registro == $line['id_clase']) {
$url_check = $url . 'pagina=' . $pagina;
echo "<form action=\"" . $url_check . "\" method=\"POST\">";
echo '<tr>';
echo '<td>';
echo $line['espanol'];
echo '</td>';
echo "<input type=\"hidden\" name=\"ingles\" value='" . $line['ingles'] . "'> ";
echo "</form>";
}
}
}
echo "<br>";
echo '</table>';
if ($total_paginas > 1) {
if ($pagina != 1) {
echo '<a href="' . $url . 'pagina=' . ($pagina - 1) . '"><i class="fa fa-chevron-left" aria-hidden="true"></i></a>';
}
for ($i = 1; $i <= $total_paginas; $i++) {
if ($pagina == $i)
//si muestro el indice de la página actual, no coloco enlace
{
echo $pagina;
} else
//si el indice no corresponde con la pagina mostrada actualmente,
//coloco el enlace para ir a esa pagina
{
echo ' <a href="' . $url . 'pagina=' . $i . '">' . $i . '</a> ';
}
}
if ($pagina != $total_paginas) {
echo '<a href="' . $url . 'pagina=' . ($pagina + 1) . '"><i class="fa fa-chevron-right" aria-hidden="true"></i></a>';
}
}
}
}
Siento soltaros este chorro de código, pero no se explicarme de otra manera!! Espero que me podáis ayudar...Un saludos y gracias!!
Valora esta pregunta


0