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: 20 años, 4 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: 19 años, 10 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: 20 años, 4 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: 20 años, 4 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: 20 años, 4 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: 20 años, 4 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: 20 años, 4 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 02:00.