Foros del Web » Programando para Internet » PHP »

Problema con if para verificar que la consulta no este vacia [Resuelto]

Estas en el tema de Problema con if para verificar que la consulta no este vacia [Resuelto] en el foro de PHP en Foros del Web. Miren les muestro mi codigo: Código PHP: include( '../includes/conf.php' ); if (isset( $_GET [ 'id' ])) { $sql  =  "SELECT * FROM comentarios WHERE noticia ='" . $id . "'" ; $result  ...
  #1 (permalink)  
Antiguo 07/03/2009, 12:24
 
Fecha de Ingreso: marzo-2009
Mensajes: 14
Antigüedad: 15 años, 1 mes
Puntos: 0
Ayuda con mysql_num_rows nuevamente

Miren les muestro mi codigo:
Código PHP:
include('../includes/conf.php');
if (isset(
$_GET['id']))
{
$sql "SELECT * FROM comentarios WHERE noticia ='".$id."'";
$result mysql_query($sql);
$row mysql_fetch_array($result); 
if(
count($row)>0)
{
echo 
'<TABLE class="central" >
<TR>  
   <TH widht="30%">Titulo</TH>
   <TH widht="30%">Contenido</TH>
   <TH widht="30%">Eliminar</TH> 
</TR>'
;
include (
'../includes/funciones.php');
$id verificarNumero($_GET['id']);

while(
$tablas mysql_fetch_array($result)) 
{
echo 
'<TR>
    <TD widht="30%">'
.$tablas[titulo].'</TD>
    <TD widht="30%">'
.$tablas[texto].'</TD>
    <TD widht="30%"><a href=?del_id='
.$tablas[id].'&not_id='.$tablas[noticia].'><img src="img/del.png"><A></TD>
    </TR>'
;

}
echo 
'</table><br>';
}
else {
    echo 
'<div class="actual">Esta noticia no tiene ningun comentario</div><br>';
}
}
if (isset(
$_GET['del_id']) && isset($_GET['not_id']))
{
$id $_GET['del_id'];
$sqll="DELETE FROM comentarios WHERE id =".$id;
if (
mysql_query($sqll$conectar)){
    echo 
'jorge';
}
else{
    echo 
'juan';
}
$not_id=$_GET['not_id'];
echo 
"<meta http-equiv='refresh' content='0;URL=man_coment.php?id=".$not_id."'>"

Mi problema esta en el if que dice:
Código PHP:
if(count($row)>0
El problema es que no funciona ese if, deja pasar siempre a la primer clausula y encima no hace el while :S
Alguien se da cuenta de algun error o por que no anda?
Saludos y gracias

Última edición por jereje; 10/03/2009 a las 16:54
  #2 (permalink)  
Antiguo 07/03/2009, 12:27
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Problema con if para verificar que la consulta no este vacia

En tu consulta, no es necesario ponerle las comillas a "id" si es un entero.

Y usa, mysql_num_rows($resultado) > 0 en tu if.
  #3 (permalink)  
Antiguo 07/03/2009, 13:46
 
Fecha de Ingreso: marzo-2009
Mensajes: 14
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problema con if para verificar que la consulta no este vacia

Cita:
Iniciado por Ronruby Ver Mensaje
En tu consulta, no es necesario ponerle las comillas a "id" si es un entero.

Y usa, mysql_num_rows($resultado) > 0 en tu if.
Lo puse como me dijiste:

Código PHP:
include('../includes/conf.php');
if (isset(
$_GET['id']))
{
$sql "SELECT * FROM comentarios WHERE noticia =".$id;
$result mysql_query($sql);
if(
mysql_num_rows($result) > )
{
echo 
'<TABLE class="central" >
<TR>  
   <TH widht="30%">Titulo</TH>
   <TH widht="30%">Contenido</TH>
   <TH widht="30%">Eliminar</TH> 
</TR>'
;
include (
'../includes/funciones.php');
$id verificarNumero($_GET['id']);

while(
$tablas mysql_fetch_array($result)) 
{
echo 
'<TR>
    <TD widht="30%">'
.$tablas[titulo].'</TD>
    <TD widht="30%">'
.$tablas[texto].'</TD>
    <TD widht="30%"><a href=?del_id='
.$tablas[id].'&not_id='.$tablas[noticia].'><img src="img/del.png"><A></TD>
    </TR>'
;

}
echo 
'</table><br>';
}
else {
    echo 
'<div class="actual">Esta noticia no tiene ningun comentario</div><br>';
}
}
if (isset(
$_GET['del_id']) && isset($_GET['not_id']))
{
$id $_GET['del_id'];
$sqll="DELETE FROM comentarios WHERE id =".$id;
if (
mysql_query($sqll$conectar)){
    echo 
'jorge';
}
else{
    echo 
'juan';
}
$not_id=$_GET['not_id'];
echo 
"<meta http-equiv='refresh' content='0;URL=man_coment.php?id=".$not_id."'>"

Y me tira esto:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\blog\admin\man_coment.php on line 21
Esta noticia no tiene ningun comentario

Ya habia probado como me dijiste y me pasaba eso, y estuve leyendo y decia que le ponga comillas al id, con las comillas en el id y el mysql_num_rows() , me tira siempre la segunda clausula, sin errores, pero siempre la segunda.

Espero que me puedan ayudar, muchas gracias, saludos

EDIT: Ya lo arregle, lo que pasaba es que en la consulta la variable $id no estaba declarada, y nose por que php no la convertia automaticamente, se soluciono con agregar $id=$_GET['id'];
quedo asi:

Código PHP:
include('../includes/conf.php');
if (isset(
$_GET['id']))
{
$id=$_GET['id'];
$sql "SELECT * FROM comentarios WHERE noticia =".$id;
$result mysql_query($sql);
if(
mysql_num_rows($result) > )
{
echo 
'<TABLE class="central" >
<TR>  
   <TH widht="30%">Titulo</TH>
   <TH widht="30%">Contenido</TH>
   <TH widht="30%">Eliminar</TH> 
</TR>'
;
include (
'../includes/funciones.php');
$id verificarNumero($_GET['id']);

while(
$tablas mysql_fetch_array($result)) 
{
echo 
'<TR>
    <TD widht="30%">'
.$tablas[titulo].'</TD>
    <TD widht="30%">'
.$tablas[texto].'</TD>
    <TD widht="30%"><a href=?del_id='
.$tablas[id].'&not_id='.$tablas[noticia].'><img src="img/del.png"><A></TD>
    </TR>'
;

}
echo 
'</table><br>';
}
else {
    echo 
'<div class="actual">Esta noticia no tiene ningun comentario</div><br>';
}
}
if (isset(
$_GET['del_id']) && isset($_GET['not_id']))
{
$id $_GET['del_id'];
$sqll="DELETE FROM comentarios WHERE id =".$id;
if (
mysql_query($sqll$conectar)){
    echo 
'jorge';
}
else{
    echo 
'juan';
}
$not_id=$_GET['not_id'];
echo 
"<meta http-equiv='refresh' content='0;URL=man_coment.php?id=".$not_id."'>"

Muchas gracias por la ayuda

Última edición por jereje; 07/03/2009 a las 13:51
  #4 (permalink)  
Antiguo 07/03/2009, 13:56
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

Cita:
php no la convertia automaticamente, se soluciono con agregar $id=$_GET['id'];
El comportamiento de PHP donde automaticamente crea variables provenientes de GET, POST o COOKIE aplica exclusivamente cuando tienes register_globals en on, lo que representa serios problemas de seguridad. Por default en versiones nuevas de PHP register_globals esta en off y es por eso que debes declarar la variable tal como lo hiciste.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 07/03/2009, 13:57
 
Fecha de Ingreso: junio-2008
Mensajes: 76
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

Bueno... ahora tienes un hueco de seguridad en tu variable $id... te podrían hacer mucho daño en tu base de datos solo por ello. Te recomiendo hacer una validación de tus datos y utilizar mysql_real_escape() (o algo así, no lo recuerdo muy bien) para evitar problemas en un futuro.

Saludos.
  #6 (permalink)  
Antiguo 07/03/2009, 17:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 14
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

Cita:
Iniciado por ZICCO Ver Mensaje
Bueno... ahora tienes un hueco de seguridad en tu variable $id... te podrían hacer mucho daño en tu base de datos solo por ello. Te recomiendo hacer una validación de tus datos y utilizar mysql_real_escape() (o algo así, no lo recuerdo muy bien) para evitar problemas en un futuro.

Saludos.
Ya le agregue lo siguiente:

Código PHP:
$id verificarNumero($_GET['id']); 
donde:

Código PHP:
function verificarNumero($numero){
    
$numero=addslashes($numero);
    
$numero=mysql_real_escape_string($numero);
    
$numerointval($numero);
    return 
$numero;

Saludos
  #7 (permalink)  
Antiguo 07/03/2009, 17:24
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

No es necesario el uso de addslashes si vas a usar mysql_real_escape_string.
  #8 (permalink)  
Antiguo 07/03/2009, 17:25
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

Si esperas un numero entero no es necesaria toda la funcion que hiciste, basta con intval() para obtener lo que necesitas.... pero si $id es menor que 1?
__________________
- León, Guanajuato
- GV-Foto
  #9 (permalink)  
Antiguo 07/03/2009, 17:25
 
Fecha de Ingreso: marzo-2009
Mensajes: 14
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

Cita:
Iniciado por Ronruby Ver Mensaje
No es necesario el uso de addslashes si vas a usar mysql_real_escape_string.
Muchas gracias
Quedo asi:
Código PHP:
function verificarPalabra($palabra){
    
$palabra=mysql_real_escape_string($palabra);
    return 
$palabra;
}
function 
verificarNumero($numero){
    
$numero=mysql_real_escape_string($numero);
    
$numerointval($numero);
    return 
$numero;

  #10 (permalink)  
Antiguo 07/03/2009, 17:27
 
Fecha de Ingreso: marzo-2009
Mensajes: 14
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

Cita:
Iniciado por Triby Ver Mensaje
Si esperas un numero entero no es necesaria toda la funcion que hiciste, basta con intval() para obtener lo que necesitas.... pero si $id es menor que 1?
Entonces con:
Código PHP:
function verificarNumero($numero){
    
$numerointval($numero);
    return 
$numero;

ya evito cualquier tipo de injeccion sql?
  #11 (permalink)  
Antiguo 07/03/2009, 17:33
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

Cita:
ya evito cualquier tipo de injeccion sql?
Si, en un valor entero solo hay numeros y tal vez el signo menos.

Código php:
Ver original
  1. $id = intval($_GET['id']);
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 07/03/2009, 17:36
 
Fecha de Ingreso: marzo-2009
Mensajes: 14
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

Cita:
Iniciado por Triby Ver Mensaje
Si, en un valor entero solo hay numeros y tal vez el signo menos.

Código php:
Ver original
  1. $id = intval($_GET['id']);
Muchas gracias a todos por la ayuda, si tienen algun otro consejo soy todo oidos.
Saludos
  #13 (permalink)  
Antiguo 07/03/2009, 17:39
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

Cita:
Iniciado por jereje Ver Mensaje
Muchas gracias a todos por la ayuda, si tienen algun otro consejo soy todo oidos.
Saludos
Haz un if y verifica que $id sea mayor que 0. Creo que eso es todo.
  #14 (permalink)  
Antiguo 07/03/2009, 17:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 14
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problema con if para verificar que la consulta no este vacia [Resuelto]

Cita:
Iniciado por Ronruby Ver Mensaje
Haz un if y verifica que $id sea mayor que 0. Creo que eso es todo.
Muchas gracias
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:02.