Foros del Web » Programando para Internet » PHP »

Si la variable de URL no existe, no mostrarla

Estas en el tema de Si la variable de URL no existe, no mostrarla en el foro de PHP en Foros del Web. Tengo el código de una variable de URL creada con DW 8: Código PHP: <?php  echo  $_GET [ 'error' ];  ?> Pero si ves la ...
  #1 (permalink)  
Antiguo 24/04/2007, 12:06
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Si la variable de URL no existe, no mostrarla

Tengo el código de una variable de URL creada con DW 8:
Código PHP:
<?php echo $_GET['error']; ?>
Pero si ves la página sin ninguna variable (page.php) aparece un mensaje:
Cita:
Iniciado por mensaje
Notice: Undefined index: error in c:\servidor\www\page.php on line 94
Yo quiero que no aparezca el mensaje, es sencillo de hacer (supongo) pero no tengo ni idea de PHP, así que me gustaría que me pasaseis el código que necesito para evitar el mensaje.

Gracias de antemano
  #2 (permalink)  
Antiguo 24/04/2007, 12:47
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Si la variable de URL no existe, no mostrarla

No he acabado de entender bien la pregunta, pero si lo que quieres es que si no existe la variable muestre el texto que tu quieras puedes hacer
Código PHP:
if (!isset($_GET['error'])) {
    echo 
"No se ha definido la variable";
}
else {
// Aquí vendría el código PHP que tienes ya 

saludos
  #3 (permalink)  
Antiguo 24/04/2007, 13:49
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Re: Si la variable de URL no existe, no mostrarla

Si, eso es lo que quería, después de else { va
Código PHP:
echo $_GET['error']; 
¿no?
Muchas gracias por la ayuda
  #4 (permalink)  
Antiguo 29/04/2007, 11:24
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Re: Si la variable de URL no existe, no mostrarla

Una pregunta, si tengo este código para "pillar" datos de la base de datos, cómo puedo hacer para que si no exista muestre el texto que yo quiera.
Mi codigo:
Código PHP:
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$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;
}
}

mysql_select_db($database_ffextremo_cms$ffextremo_cms);
$query_site "SELECT sitename, sitedesc, siteauthor, sitekeywords, siteurl, siteys, siteyf FROM site";
$site mysql_query($query_site$ffextremo_cms) or die(mysql_error());
$row_site mysql_fetch_assoc($site);
$totalRows_site mysql_num_rows($site);

$colname_read "-1";
if (isset(
$_GET['id'])) {
  
$colname_read = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($database_ffextremo_cms$ffextremo_cms);
$query_read sprintf("SELECT * FROM `read` WHERE id = %s"GetSQLValueString($colname_read"int"));
$read mysql_query($query_read$ffextremo_cms) or die(mysql_error());
$row_read mysql_fetch_assoc($read);
$totalRows_read mysql_num_rows($read);

$colname_comments "-1";
if (isset(
$_GET['id'])) {
  
$colname_comments = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($database_ffextremo_cms$ffextremo_cms);
$query_comments sprintf("SELECT * FROM comments WHERE `for` = %s ORDER BY id ASC"GetSQLValueString($colname_comments"text"));
$comments mysql_query($query_comments$ffextremo_cms) or die(mysql_error());
$row_comments mysql_fetch_assoc($comments);
$totalRows_comments mysql_num_rows($comments);
?>
  #5 (permalink)  
Antiguo 29/04/2007, 11:47
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Si la variable de URL no existe, no mostrarla

Cuando hagas preguntas postea solo partes especificas de tu codigo, te aseguro que muchos usuarios con la intencion de ayudar, vemos una pregunta con lineas y lineas de codigo que abandonamos el tema simplemente porque la lectura de todo el codigo y la comprension llevarian en muchos casos horas.

Supongo que puedes usar la funcion mysql_num_rows( int id_resultado ) para saber el numero de resultados que te devuelve tu consulta, algo asi:

Código PHP:
$sql mysql_query("SELECT * FROM tabla");
$num mysql_num_rows($sql);
if(
$num 1) {
//NO hay registros
echo "La consulta no delvolvio ningun resultado";
} else {
echo 
"Hay $num resultados";

Un saludo,
  #6 (permalink)  
Antiguo 29/04/2007, 12:31
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Re: Si la variable de URL no existe, no mostrarla

Cita:
Iniciado por okram Ver Mensaje
Cuando hagas preguntas postea solo partes especificas de tu codigo, te aseguro que muchos usuarios con la intencion de ayudar, vemos una pregunta con lineas y lineas de codigo que abandonamos el tema simplemente porque la lectura de todo el codigo y la comprension llevarian en muchos casos horas.

Supongo que puedes usar la funcion mysql_num_rows( int id_resultado ) para saber el numero de resultados que te devuelve tu consulta, algo asi:

Código PHP:
$sql mysql_query("SELECT * FROM tabla");
$num mysql_num_rows($sql);
if(
$num 1) {
//NO hay registros
echo "La consulta no delvolvio ningun resultado";
} else {
echo 
"Hay $num resultados";

Un saludo,
Es que no sé casi nada de PHP, y he posteado el código que generó DW, supongo que parte no vale, pero no sé qué parte es la que no es necesaria.

Otra cosa, ¿cómo puedo incluir un link que lleve a la página con comentarios, llevando de variable de url un valor cardago de la base de datos?

Algo cómo:
Código PHP:
<a href=read_comments.php?id=<?php echo $row_comments['id']; ?>>mira</a>
He probado con

<a href=\"read_comments.php?id=$row_read[\'id\']\">mira</a>

pero no funciona

¡¡Gracias por la ayuda!!

Última edición por sumolari; 29/04/2007 a las 12:45 Razón: Otra cosa
  #7 (permalink)  
Antiguo 30/04/2007, 09:28
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Re: Si la variable de URL no existe, no mostrarla

Bueno, ¡¡lo he solucionado!!
Lo que he hecho ha sido buscar en php.net funciones con mysql, y me he topado con mysql_result.

Luego he definido una variable que consiste en el valor url id -1, y el código resultante ha sido:
Código PHP:
<?php $sql mysql_query("SELECT * FROM comments");
$num mysql_num_rows($sql);
$result mysql_query('SELECT id FROM comments');
$id $_GET['id'] - 1;
if(
$num 1) {
echo 
"No hay comentarios. Sé el primero en escribir <a href=\"write_comment.php?id="; echo mysql_result($result$id); echo "\">uno</a>.";
} else {
echo 
"Lee los <a href\"read_comments.php?id="; echo  mysql_result($result$id); echo " \">$num</a> comentarios";
}  
?>
¡¡Muchas gracias por la ayuda!!
  #8 (permalink)  
Antiguo 30/04/2007, 11:17
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Si la variable de URL no existe, no mostrarla

Me alegro que hayas solucionado tu problema. Ahora, optimizemos tu codigo:

Código PHP:
<?php 
$sql 
mysql_query("SELECT * FROM comments");
$num mysql_num_rows($sql);
$result mysql_query('SELECT id FROM comments');
$id $_GET['id'] - 1;
if(
$num 1) {
echo 
"No hay comentarios. Sé el primero en escribir <a href=\"write_comment.php?id="; echo mysql_result($result$id); echo "\">uno</a>.";
} else {
echo 
"Lee los <a href\"read_comments.php?id="; echo  mysql_result($result$id); echo " \">$num</a> comentarios";
}  
?>
Puedes simplificar un poco el codigo, haciendo una sola consulta en vez de dos a la base de datos. La consulta en $sql (que supongo la usas para determinar el numero de registros) y la consulta en $result (de donde sacas la lista de id's) en el fondo pueden ser y son la misma cosa:
Código PHP:
/**
En vez de
$sql = mysql_query("SELECT * FROM comments");
$num = mysql_num_rows($sql);
$result = mysql_query('SELECT id FROM comments');
**/
 
$result mysql_query('SELECT id FROM comments');
$num mysql_num_rows($result);
 
/**
Te ahorraste no solo una linea de codigo, sino una consulta 
innecesaria a la BD (save time!)
**/ 
Luego, en PHP puedes concatenar cadenas (usando el operador punto (.), al igual que en Javascript (con el sigo +) y en todos los demas lenguajes de programacion. Léete este articulo sobre concatenación de cadenas con PHP. y aqui tienes otro interesante articulo sobre concatenacion. Sigamos simplificando tu codigo:
Código PHP:
if($num 1) {
/**
En vez de
echo "No hay comentarios. Sé el primero en escribir <a href=\"write_comment.php?id="; echo mysql_result($result, $id); echo "\">uno</a>.";
**/
echo "No hay comentarios. Sé el primero en escribir <a href=\"write_comment.php?id=" mysql_result($result$id) . "\">uno</a>.";
 
} else {
/**
En vez de
echo "Lee los <a href\"read_comments.php?id="; echo  mysql_result($result, $id); echo " \">$num</a> comentarios";
**/
echo "Lee los <a href\"read_comments.php?id=" mysql_result($result$id) . " \">$num</a> comentarios";

Al final, despues de todo, tienes este codigo:

Código PHP:
$result mysql_query('SELECT id FROM comments');
$num mysql_num_rows($result);
if(
$num 1) {
echo 
"No hay comentarios. Sé el primero en escribir <a href=\"write_comment.php?id=" mysql_result($result$id) . "\">uno</a>.";
} else {
echo 
"Lee los <a href\"read_comments.php?id=" mysql_result($result$id) . " \">$num</a> comentarios";


Un saludo,
  #9 (permalink)  
Antiguo 30/04/2007, 15:23
Avatar de sumolari  
Fecha de Ingreso: mayo-2006
Ubicación: localhost
Mensajes: 1.367
Antigüedad: 17 años, 11 meses
Puntos: 18
Re: Si la variable de URL no existe, no mostrarla

¡¡ Muchas gracias !!
P.D.: Es una pena que no dejen volver a darle reputación a un usuario hasta darle a todos los demás...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:22.