PHP - Problema con URL y paso de variable GET

 
Vista:
Imágen de perfil de SERGIO
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con URL y paso de variable GET

Publicado por SERGIO (12 intervenciones) el 07/04/2017 09:14:15
Buenos días, tengo el siguiente código en PHP. Es un condicional donde la primera parte salen todas las entradas de un blog y en la segunda, después del ELSE, te lleva a la entrada seleccionada, todo ejecutado en la misma página.

El problema es que cuando me redirige a la entrada la URL amigable resulta así:

http://localhost/sergio/blog/1/esto-es-una-prueba

y lo que pretendo es evitar que salga la ID de dicha entrada... /1/ es decir que se vea así:

http://localhost/sergio/blog/esto-es-una-prueba


¿Debería modificar mi código PHP o esto es cosa de HTACCESS?

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
<?php
    require_once("includes/config/db.php");
 
    $id_registro = isset($_GET['id']) ? $_GET['id'] : 'n';
    if ($id_registro == 'n') {
 
        $sql = ("SELECT id, usuario, fecha, titulo, contenido_corto, imagen, url FROM entradas ORDER BY id DESC");
 
        include "functions.php";
 
        $result = mysqli_query($con,$sql) or die('Consulta fallida: ' . mysqli_error());
 
        while ($line = mysqli_fetch_array($result)) {
          $titulo = urls_amigables($line['titulo']);
              echo '<div>';
              echo '<div>';
              echo "<a href=\"blog/".$line['id']."/".$titulo."\">Leer artículo</a>";
              }
 
              }else{
 
$sql = "SELECT * FROM entradas WHERE id=".$id_registro;
$result = mysqli_query($con,$sql) or die('Consulta fallida: ' . mysqli_error());
 
 
if ($line = mysqli_fetch_array($result)) {
  echo '<div id="post_contenedor">';
  echo '<div id="post_contenido">';
  echo "<br>";
  echo '<div id="post_largo">';
  echo "<h1 class=\"titulo\">".$line['titulo']."</h1>";
  echo "<br>";
  echo '</div>';
  echo "<img id=\"image_post\" src=\"http://localhost/sergio/img/".$line['imagen']."\">";
  echo "<p>".$line['contenido_largo']."</p>";
  echo "<a href=\"".$line['url']."\"></a>";
  echo '</div>';
}
}
?>

código HTACCESS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AddDefaultCharset UTF-8
 
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^blog/(.+)/(.+)$ blog.php?id=$1&con=$2
#RewriteRule ^blog/(.+)$ blog.php?titulo=$1
#RewriteRule ^blog/(.+)_([0-9]+)$ blog.php?id=$2
</IfModule>
 
ErrorDocument 404 http://localhost/sergio/404.php
 
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
</IfModule>

Saludos y graciasssss!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con URL y paso de variable GET

Publicado por xve (6935 intervenciones) el 07/04/2017 19:02:51
Hola Sergio, si no quieres vincular la url con el id, tendrás que utilizar un nombre único o algo para distinga la entrada.

Si utilizas el texto esto-es-una-prueba, tendrás de alguna manera buscar ese texto en la base de datos para mostrar la pagina. Pero tendrás que tener mucho cuidado en que no se repita dicho texto.

Tienes que modificar el htaccess y el código php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de SERGIO
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con URL y paso de variable GET

Publicado por SERGIO (12 intervenciones) el 08/04/2017 08:26:31
Buenos días xve, eso estaba intentado pero cuando ejecuto la consulta para seleccionar el campo con "nombre único" de una determinada entrada del blog, siempre me devuelve la misma entrada, la que tiene id=1 en base de datos, es decir, sea cual sea la entrada a la que hago click me lleva a la entrada con id=1.

Esto me ha pasado más de una vez, así, siempre he terminado pasando la variable id, para no tener este tipo de problemas y que cada enlace me lleve a su entrada correspondiente en base de datos.

te pongo el código simplificado por si ves algo erróneo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
  $id_registro = isset($_GET['titulo']) ? $_GET['titulo'] : 'n';
  if ($id_registro == 'n') {
 
$sql = ("SELECT * FROM entradas ORDER BY id DESC");
$result = mysqli_query($con,$sql) or die('Consulta fallida: ' . mysqli_error());
 
include "functions.php";
 
while ($line = mysqli_fetch_array($result)) {
  $titulo = urls_amigables($line['titulo']);
  $url = "<a href=\"blog2/".$titulo."\">Leer artículo</a>";
  echo $url;
}
}else{
 
$sql = "SELECT * FROM entradas WHERE titulo=".$id_registro;
$result = mysqli_query($con,$sql) or die('Consulta fallida: ' . mysqli_error());
 
.... CONTENIDO ENTRADA SELECCIONADA....

Si la segunda consulta es :
1
$sql = "SELECT * FROM entradas WHERE titulo=".$id_registro;

me da este error:
Warning: mysqli_error() expects exactly 1 parameter, 0 given in C:\xampp\htdocs\sergio\blog2.php on line 103
Consulta fallida:
La línea 103 es la 18 aquí.

En cambio si la dejo así.
1
$sql = "SELECT * FROM entradas";

Me pasa lo que te comentaba al principio, todo los enlaces me llevan a la misma entrada.

Gracias por todo!!!! :-D
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con URL y paso de variable GET

Publicado por xve (6935 intervenciones) el 09/04/2017 08:39:13
Al ser un campo de texto, tiene que ir entre comillas... prueba así:

1
$sql = "SELECT * FROM entradas WHERE titulo='".$id_registro."'";

Si puedes, es importante que las variables no te confundan... si la variable contiene el titulo, que no se diga "id_registro".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de SERGIO
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con URL y paso de variable GET

Publicado por SERGIO (12 intervenciones) el 09/04/2017 09:58:54
Listo amigote!! ya me funciona bien!! a veces paso por alto cosas tan básicas... cuantas veces me lo habrán dicho en clase!!!
ya nunca más!!!! jeje... un abrazo y Mil gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar