[AYUDA] tengo un problema con .httaccess REWRITE -Url Amigables

  • Autor Autor Sixela
  • Fecha de inicio Fecha de inicio
Sixela

Sixela

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola, estoy creandome un sitio en Php y Mysql, bien todo perfecto pero las url quiero que sean amigables

Tengo esto en el .htaccess

PHP:
Options +FollowSymLinks
RewriteEngine on

RewriteBase /web/

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^cantante/(.*)$ cantante.php?id=$1 [L]

Tengo el codigo que por GET envio la variable a cantante.php

PHP:
<a href="cantante.php?id=<?php echo $row_letras['nombre_artista']; ?>">

Para que me funcione bien las url amigables tengo que cambiar el codigo anterior por el siguiente codigo

PHP:
<a href="../cantante/<?php echo $row_letras['nombre_artista']; ?>">

la url amigable si se nota ya que la veo de la siguiente forma

http://localhost:8080/web/cantante/nombre%20apellido

ahora mi url amigable tiene un pequeñito problema y es el "espacio" en blanco ya que cuando guardo el nombre en la base de datos lleva un espacio y luego el apellido.

Para solucionar ese espacio en blanco use la funcion str_replace quien remplaza el espacio en blanco de la cadena por un guion "-"

PHP:
<?php $row_cantante['nombre_artista'] = str_replace(" ","-",$row_cantante['nombre_artista']);?>

Pero luego de usar eso ya no me muestra el contenido que deberia mostrarme la web. y el problema es por colocarle el guion "-" ya que si no remplazo el espacio en blanco la url mantendra el %20 y si mostrara el contenido como es..

pero no quiero que este el %20

Espero de su ayuda...:s
 
Como estas haciendo uso de codigo PHP a puño limpio, tienes un problema de inyección de codigo en tu consulta, ya que el guion lo toma como el operador aritmetico de sustraccion, para evitar esto debes hacer uso de la funciona mysql_real_escape_string en tu consulta 😉

PD: str_replace dejara pasar los textos con acentos y cualquier otro simbolo que no sea guion medio y eso ocasionara un error en tu url amigable 😕
 
Como estas haciendo uso de codigo PHP a puño limpio, tienes un problema de inyección de codigo en tu consulta, ya que el guion lo toma como el operador aritmetico de sustraccion, para evitar esto debes hacer uso de la funciona mysql_real_escape_string en tu consulta 😉

PD: str_replace dejara pasar los textos con acentos y cualquier otro simbolo que no sea guion medio y eso ocasionara un error en tu url amigable 😕

Hola, Gracias por contestar...

mira el codigo de la consulta que tengo en el archivo donde debe mostrarme toda la informacion del cantante

PHP:
mysql_select_db($database_webartista, $webartista);
$query_canciones_artistas = sprintf("SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista WHERE canciones.nombre_artista = %s", GetSQLValueString($varID_canciones_artistas, "text"));
$canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
$row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

estaba leyendo sobre
PHP:
mysql_real_escape_string()
pero no doy como implementarlo, estoy aprendiendo y ando algo confuso
 
Hola, Gracias por contestar...

mira el codigo de la consulta que tengo en el archivo donde debe mostrarme toda la informacion del cantante

PHP:
mysql_select_db($database_webartista, $webartista);
$query_canciones_artistas = sprintf("SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista WHERE canciones.nombre_artista = %s", GetSQLValueString($varID_canciones_artistas, "text"));
$canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
$row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

estaba leyendo sobre
PHP:
mysql_real_escape_string()
pero no doy como implementarlo, estoy aprendiendo y ando algo confuso

Yo ignoro lo que hace tu funcion GetSQLValueString pero usar mysql_real_escape_string como filtro seria asi:

PHP:
$query_canciones_artistas = sprintf(
	"SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
	FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
	WHERE canciones.nombre_artista = %s", mysql_real_escape_string($varID_canciones_artistas));

Y no es necesario usarlo con la funcion sprintf tambien se puede usar de esta forma:

PHP:
$query_canciones_artistas = "
	SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
	FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
	WHERE canciones.nombre_artista ='".mysql_real_escape_string($varID_canciones_artistas)."'";

🙂
 
Yo ignoro lo que hace tu funcion GetSQLValueString pero usar mysql_real_escape_string como filtro seria asi:

PHP:
$query_canciones_artistas = sprintf(
	"SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
	FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
	WHERE canciones.nombre_artista = %s", mysql_real_escape_string($varID_canciones_artistas));

Y no es necesario usarlo con la funcion sprintf tambien se puede usar de esta forma:

PHP:
$query_canciones_artistas = "
	SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
	FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
	WHERE canciones.nombre_artista ='".mysql_real_escape_string($varID_canciones_artistas)."'";

🙂

GetSQLValueString es quien recibe la variable por GET que es el nombre del artista...

y no me funciona, no se que hago mal

Asi lo tengo

PHP:
mysql_select_db($database_webartista, $webartista);

$query_canciones_artistas = sprintf("SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista WHERE canciones.nombre_artista = %s", GetSQLValueString($varID_canciones_artistas, "text"), mysql_real_escape_string($varID_canciones_artistas) );
$canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
$row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

y no me imprime la informacion que quiero de

PHP:
<?php echo $row_canciones_artistas['nombre_artista']; ?>
 
GetSQLValueString es quien recibe la variable por GET que es el nombre del artista...

y no me funciona, no se que hago mal

Asi lo tengo

PHP:
mysql_select_db($database_webartista, $webartista);

$query_canciones_artistas = sprintf("SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista WHERE canciones.nombre_artista = %s", GetSQLValueString($varID_canciones_artistas, "text"), mysql_real_escape_string($varID_canciones_artistas) );
$canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
$row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

y no me imprime la informacion que quiero de

PHP:
<?php echo $row_canciones_artistas['nombre_artista']; ?>

Debiste probar con el codigo que publique, pero bueno, googleando he visto que la funcion GetSQLValueString tiene un filtro y tambien usa la funciona mysql_real_escape_string

Entonces para ver cual es el error debes de ver el resultado que te genera la consulta, usa este codigo tal como esta:

PHP:
$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista ='".GetSQLValueString($varID_canciones_artistas)."'";

   //hay que ver cual es el error en la consulta:
   echo $canciones_artistas;

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

Ejecuta el codigo y te deberia mostrar la consulta sql en texto plano del "echo" que agregue, pega aqui ese resultado para ver cual es el problema en la consulta.
 
Debiste probar con el codigo que publique, pero bueno, googleando he visto que la funcion GetSQLValueString tiene un filtro y tambien usa la funciona mysql_real_escape_string

Entonces para ver cual es el error debes de ver el resultado que te genera la consulta, usa este codigo tal como esta:

PHP:
$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista ='".GetSQLValueString($varID_canciones_artistas)."'";

   //hay que ver cual es el error en la consulta:
   echo $canciones_artistas;

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

Ejecuta el codigo y te deberia mostrar la consulta sql en texto plano del "echo" que agregue, pega aqui ese resultado para ver cual es el problema en la consulta.

el error que muestra es

Insertar CODE, HTML o PHP:
Warning: Missing argument 2 for GetSQLValueString(), called in C:\xampp\htdocs\web\prueba.php on line 50 and defined in C:\xampp\htdocs\web\prueba.php on line 4

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 13

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 16

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 17

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 20

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 23

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 26
Resource id #4


la hoja donde ando haciendo la prueba es

PHP:
<?php require_once('Connections/webartista.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$varID_canciones_artistas = "0";
if (isset($_GET["id"])) {
  $varID_canciones_artistas = $_GET["id"];
}


mysql_select_db($database_webartista, $webartista);

$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista ='".GetSQLValueString($varID_canciones_artistas)."'";

   //hay que ver cual es el error en la consulta:

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);  


 echo $canciones_artistas;


?>
 
el error que muestra es

Insertar CODE, HTML o PHP:
Warning: Missing argument 2 for GetSQLValueString(), called in C:\xampp\htdocs\web\prueba.php on line 50 and defined in C:\xampp\htdocs\web\prueba.php on line 4

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 13

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 16

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 17

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 20

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 23

Notice: Undefined variable: theType in C:\xampp\htdocs\web\prueba.php on line 26
Resource id #4


la hoja donde ando haciendo la prueba es

PHP:
<?php require_once('Connections/webartista.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$varID_canciones_artistas = "0";
if (isset($_GET["id"])) {
  $varID_canciones_artistas = $_GET["id"];
}


mysql_select_db($database_webartista, $webartista);

$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista ='".GetSQLValueString($varID_canciones_artistas)."'";

   //hay que ver cual es el error en la consulta:

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);  


 echo $canciones_artistas;


?>

Falto el segundo parametro "text", ahora si, usa este codigo y muestra que te devuelve:

PHP:
$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista ='".GetSQLValueString($varID_canciones_artistas, "text")."'";

   //hay que ver cual es el error en la consulta:
   echo $canciones_artistas;

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);
 
Falto el segundo parametro "text", ahora si, usa este codigo y muestra que te devuelve:

PHP:
$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista ='".GetSQLValueString($varID_canciones_artistas, "text")."'";

   //hay que ver cual es el error en la consulta:
   echo $canciones_artistas;

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

da este error

Insertar CODE, HTML o PHP:
Notice: Undefined variable: canciones_artistas in C:\xampp\htdocs\web\prueba.php on line 48
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '0''' at line 3

la linea 48 es

PHP:
   echo $canciones_artistas;
 
da este error

Insertar CODE, HTML o PHP:
Notice: Undefined variable: canciones_artistas in C:\xampp\htdocs\web\prueba.php on line 48
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '0''' at line 3

la linea 48 es

PHP:
   echo $canciones_artistas;

Ahora si que no deberia mostrarte errores, muestra que te devuelve

PHP:
$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista =".GetSQLValueString($varID_canciones_artistas, "text");

   //hay que ver cual es el error en la consulta:
   echo $canciones_artistas;

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);
 
Ahora si que no deberia mostrarte errores, muestra que te devuelve

PHP:
$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista =".GetSQLValueString($varID_canciones_artistas, "text");

   //hay que ver cual es el error en la consulta:
   echo $canciones_artistas;

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

Amigo Gracias por estar respondiendo y tratando de ayudar... no tira error pero tampoco muestra la informacion, sale en blanco.
 
Amigo Gracias por estar respondiendo y tratando de ayudar... no tira error pero tampoco muestra la informacion, sale en blanco.

Fijate bien, si debe de imprimirte la consulta sql en la linea "echo", intentemoslo denuevo, cambia la linea
PHP:
echo $canciones_artistas;
por
PHP:
echo "CONSULTA>>> ". $canciones_artistas;

Deberia imprimirte "Consulta>> SELECT artistas.nom....." si no lo ves a simple vista fijate en el codigo html, es importante ver este resultado para poder saber por que no se ejecuta correctamente la consulta, y descuida hoy estoy con tiempo libre :welcoming:
 
Fijate bien, si debe de imprimirte la consulta sql en la linea "echo", intentemoslo denuevo, cambia la linea
PHP:
echo $canciones_artistas;
por
PHP:
echo "CONSULTA>>> ". $canciones_artistas;

Deberia imprimirte "Consulta>> SELECT artistas.nom....." si no lo ves a simple vista fijate en el codigo html, es importante ver este resultado para poder saber por que no se ejecuta correctamente la consulta, y descuida hoy estoy con tiempo libre :welcoming:

dice esto
Insertar CODE, HTML o PHP:
CONSULTA>>> Resource id #4
 
dice esto
Insertar CODE, HTML o PHP:
CONSULTA>>> Resource id #4

Podrias mostrar el codigo como te quedo?

Con los cambios que se hizo tu codigo deberia verse asi

PHP:
$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista =".GetSQLValueString($varID_canciones_artistas, "text");

   //hay que ver cual es el error en la consulta:
   echo "CONSULTA>>> ". $canciones_artistas;  

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

Recuerda que el "echo "CONSULTA>>> ". $canciones_artistas;" debes ejecutarlo antes del mysql_query, por que si lo ejecutas despues de mysql_query te devolvera un "Resource id" como el que tienes actualmente, prueba y muestra que te devuelve
 
yo lo que quiero es que en la URL no me salga el %20 en --> http://localhost:8080/web/cantante/benito%20juarez

Vuelvo a explicar a ver que tal

tengo un archivo artistas.php donde envio por GET el nombre del artista

PHP:
<a href="../cantante/<?php echo $row_artista['nombre_artista']; ?>">

cuando voy a cantante.php me muestra la url amigable pero el "Espacio en blanco" que tiene la cadena donde muestra el nombre del artista en forma de $20

- - - Actualizado - - -

Podrias mostrar el codigo como te quedo?

Con los cambios que se hizo tu codigo deberia verse asi

PHP:
$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista =".GetSQLValueString($varID_canciones_artistas, "text");

   //hay que ver cual es el error en la consulta:
   echo "CONSULTA>>> ". $canciones_artistas;  

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

Recuerda que el "echo "CONSULTA>>> ". $canciones_artistas;" debes ejecutarlo antes del mysql_query, por que si lo ejecutas despues de mysql_query te devolvera un "Resource id" como el que tienes actualmente, prueba y muestra que te devuelve

asi esta

PHP:
$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista =".GetSQLValueString($varID_canciones_artistas, "text");

   //hay que ver cual es el error en la consulta:
   echo "CONSULTA>>>".$canciones_artistas;  

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

y muestra

Insertar CODE, HTML o PHP:
Notice: Undefined variable: canciones_artistas in C:\xampp\htdocs\web\prueba.php on line 48
CONSULTA>>>

la linea 48 es

PHP:
   echo "CONSULTA>>>".$canciones_artistas;
 
yo lo que quiero es que en la URL no me salga el %20 en --> http://localhost:8080/web/cantante/benito%20juarez

Vuelvo a explicar a ver que tal

tengo un archivo artistas.php donde envio por GET el nombre del artista

PHP:
<a rel="nofollow" href="../cantante/<?php echo $row_artista['nombre_artista']; ?>">

cuando voy a cantante.php me muestra la url amigable pero el "Espacio en blanco" que tiene la cadena donde muestra el nombre del artista en forma de $20

- - - Actualizado - - -



asi esta

PHP:
$query_canciones_artistas = "
    SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 
    FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista 
    WHERE canciones.nombre_artista =".GetSQLValueString($varID_canciones_artistas, "text");

   //hay que ver cual es el error en la consulta:
   echo "CONSULTA>>>".$canciones_artistas;  

   $canciones_artistas = mysql_query($query_canciones_artistas, $webartista) or die(mysql_error());
   $row_canciones_artistas = mysql_fetch_assoc($canciones_artistas);

y muestra

Insertar CODE, HTML o PHP:
Notice: Undefined variable: canciones_artistas in C:\xampp\htdocs\web\prueba.php on line 48
CONSULTA>>>

la linea 48 es

PHP:
   echo "CONSULTA>>>".$canciones_artistas;

Pues aqui hay 2 cosas, no era la variable "$canciones_artistas" si no "$query_canciones_artistas" no se como se paso por alto 😕


Lo otro es que, volviendo a tu primera pregunta, lo mas seguro es que estes sobreescribiendo el resultado, por que no haces lo siguiente:
PHP:
$url_rewrite = str_replace(" ","-",$row_cantante['nombre_artista']);

Y en tu html lo llamas asi:
HTML:
<a href="../cantante/<?php echo $url_rewrite; ?>">

Prueba y comenta como te fue
 
Pues aqui hay 2 cosas, no era la variable "$canciones_artistas" si no "$query_canciones_artistas" no se como se paso por alto 😕


Lo otro es que, volviendo a tu primera pregunta, lo mas seguro es que estes sobreescribiendo el resultado, por que no haces lo siguiente:
PHP:
$url_rewrite = str_replace(" ","-",$row_cantante['nombre_artista']);

Y en tu html lo llamas asi:
HTML:
<a rel="nofollow" href="../cantante/<?php echo $url_rewrite; ?>">

Prueba y comenta como te fue

la consulta ya sale xD :topsy_turvy:
Insertar CODE, HTML o PHP:
 CONSULTA>>> SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista WHERE canciones.nombre_artista ='0'

jaja

pero mi problema es la url xD que sale http://localhost:8080/web/cantante/Benito%20Juarez y quiero que ese %20 se remplace por un guion
 
la consulta ya sale xD :topsy_turvy:
Insertar CODE, HTML o PHP:
 CONSULTA>>> SELECT artistas.nombre_artista, artistas.biografia, artistas.caratula, canciones.nombre_artista, canciones.nombre_cancion, canciones.mp3 FROM canciones LEFT JOIN artistas ON canciones.nombre_artista = artistas.nombre_artista WHERE canciones.nombre_artista ='0'

jaja

pero mi problema es la url xD que sale http://localhost:8080/web/cantante/Benito%20Juarez y quiero que ese %20 se remplace por un guion

Ok, y probaste con lo que te recomende?, recuerda que tu tienes este codigo:

PHP:
<?php $row_cantante['nombre_artista'] = str_replace(" ","-",$row_cantante['nombre_artista']);?>
Y tienes que cambiarlo por
PHP:
<?php $url_rewrite = str_replace(" ","-",$row_cantante['nombre_artista']); ?>

Y en tu html tienes:
HTML:
<a href="../cantante/<?php echo $row_letras['nombre_artista']; ?>">
Y debes cambiarlo por
HTML:
<a href="../cantante/<?php echo $url_rewrite; ?>">

Prueba esto y cuenta como te fue, recuerda que al crear la variable $url_rewrite ya no estas sobreescribiendo el array que tenias anteriormente, lo he probado en local y deberia funcionarte
 
Ok, y probaste con lo que te recomende?, recuerda que tu tienes este codigo:

PHP:
<?php $row_cantante['nombre_artista'] = str_replace(" ","-",$row_cantante['nombre_artista']);?>
Y tienes que cambiarlo por
PHP:
<?php $url_rewrite = str_replace(" ","-",$row_cantante['nombre_artista']); ?>

Y en tu html tienes:
HTML:
<a rel="nofollow" href="../cantante/<?php echo $row_letras['nombre_artista']; ?>">
Y debes cambiarlo por
HTML:
<a rel="nofollow" href="../cantante/<?php echo $url_rewrite; ?>">

Prueba esto y cuenta como te fue, recuerda que al crear la variable $url_rewrite ya no estas sobreescribiendo el array que tenias anteriormente, lo he probado en local y deberia funcionarte

Bueno te comento que estas dos lineas estan en la misma hoja php que es la hoja listado.php

PHP:
<?php $row_cantante['nombre_artista'] = str_replace(" ","-",$row_cantante['nombre_artista']);?>
<a rel="nofollow" href="../cantante/<?php echo $row_letras['nombre_artista']; ?>">

y en la hoja cantante.php

PHP:
<div class="nombreartista"><h2><?php echo $row_canciones_artistas['nombre_artista']; ?></h2></div>
 
Bueno te comento que estas dos lineas estan en la misma hoja php que es la hoja listado.php

PHP:
<?php $row_cantante['nombre_artista'] = str_replace(" ","-",$row_cantante['nombre_artista']);?>
<a rel="nofollow" href="../cantante/<?php echo $row_letras['nombre_artista']; ?>">

y en la hoja cantante.php

PHP:
<div class="nombreartista"><h2><?php echo $row_canciones_artistas['nombre_artista']; ?></h2></div>

Aqui algo anda mal, veamos denuevo, tu tienes:
PHP:
<?php $row_cantante['nombre_artista'] = str_replace(" ","-",$row_cantante['nombre_artista']);?>
<a rel="nofollow" href="../cantante/<?php echo $row_letras['nombre_artista']; ?>">

Aqui tengo dudas, la variable $row_cantante['nombre_artista'] debe mostrarte el nombre del artista con un guion medio por ejemplo "juan-perez" pero en la siguiente linea estas llamando a $row_letras['nombre_artista']

PHP:
<a rel="nofollow" href="../cantante/<?php echo $row_letras['nombre_artista']; ?>">
Y yo no se de donde sale $row_letras['nombre_artista'] no deberia de ser $row_cantante['nombre_artista']? osea asi:
PHP:
<a rel="nofollow" href="../cantante/<?php echo $row_cantante['nombre_artista']; ?>">

🙂
 
Atrás
Arriba