Foros del Web » Programando para Internet » PHP »

sentencia IF

Estas en el tema de sentencia IF en el foro de PHP en Foros del Web. Amigos: quiero hacer lo siguiente, 1º validar que si exista el usuario y segundo que no este repetido un registr. esto como parte de una ...
  #1 (permalink)  
Antiguo 29/10/2005, 10:13
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
sentencia IF

Amigos:
quiero hacer lo siguiente, 1º validar que si exista el usuario y segundo que no este repetido un registr. esto como parte de una validación, para esto ocupo el siguiente IF:

$result=mysql_query("select idrut,nombre from tbusuario where nombre='$autor'")or die(mysql_error());

$sqnew=mysql_query("select ntitulo from tbnoticia where tbusuario_idrut='$resto[idrut]'")or die(mysql_error());
$see=mysql_fetch_assoc($sqnew);


if (mysql_num_rows($result)>0 && $see[ntitulo]!='$titulo'){
echo "Save";
}else{
echo "No Save";
}

y se esta cayendo en el if y especificamente en $see[ntitulo]!='$titulo' cómo seria la sintaxis ??
  #2 (permalink)  
Antiguo 29/10/2005, 10:20
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola under_ground

Creo que tienes que quitar las comillas:

if (mysql_num_rows($result)>0 && $see[ntitulo]!=$titulo){

Saludos,
  #3 (permalink)  
Antiguo 29/10/2005, 11:30
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
Era eso gracias, pero hay un tema de lógica del cual hay un error en el como lo manejo en la anterior expresión la idea es tener

SI (existe user) && NO (hayan 2 registros iguales)

GUARDAR DE LO CONTRARIO NO...

en función de lo anterior podría servir algo como

if (mysql_num_rows($result)>0 && mysql_num_rows($sqnew)<0)

Para que se cumplan las condiciones
  #4 (permalink)  
Antiguo 29/10/2005, 14:57
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
Validaciones

formas de validar, estoy validando que un usuario no ingrese una noticia 2 veces para ello he estado ocupando el siguiente If pero no me funciona aquí va:

La lógica es que SI ingrese cuando el usuario es valido y lo haya en la bd, pero NO ingrese cuando titulo que viene del FORM sea igual a titulo que hay guardado en la BD ¿se entiende?

LLamadas SQL
Código PHP:
$result=mysql_query("select idrut,nombre from tbusuario where nombre='$autor'")or die(mysql_error()); 
$resto=mysql_fetch_assoc($result); 

$sqnew=mysql_query("select ntitulo from tbnoticia where tbusuario_idrut='$resto[idrut]'")or die(mysql_error());
$see=mysql_fetch_assoc($sqnew); 
Validaciones PHP
Código PHP:
if (mysql_num_rows($result)>&& $see[ntitulo]!= $titulo)
{
$str=mysql_query("insert into tbnoticia(TBUsuario_IDRut,nautor,ntitulo,ncategoria,nbajada,nfecha)values('$resto[idrut]','$autor','$titulo','$categria','$bajada',now())");
}else{
echo
"Error al intentar publicar noticias con este autor, no esta identificado o intento duplicar una publicación<br>";
echo 
"<a href=\"javascript:history.back()\">Regresar</a>";
exit();

¿Qué puedo estar haciendo mal?
  #5 (permalink)  
Antiguo 29/10/2005, 17:33
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Serìa bueno comentaras tu código para entender qué haces...

Según veo, buscas por separado la existencia del usuario y del tìtulo. Ojo que ya estàs preguntando si el tìtulo existe, no es necesario volver a preguntar si coinciden el título de la BD y el que recibes; es obvio que si existe va a ser igual además de que si no existe dicha comparación (la del if) no es válida pués simplemente no hay elementos para hacerla... además: ¿haces antes un mysql_fetch_xxxx() como debe ser????; no lo muestras.

Pués bien, entonces tu lógica debe ser "SI existe el usuario Y NO hay el mismo título:
Código PHP:
if (mysql_num_rows($result)>&& mysql_num_rows($sqnew)==0
Pruebalo.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 29/10/2005, 17:38
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
en función de lo anterior podría servir algo como

if (mysql_num_rows($result)>0 && mysql_num_rows($sqnew)<0)
Preguntas ó afirmas?. Creo te acabo de responder en otro tema... por favor NO repitas consultas.

Si la función mysql_num_rows() te devuelve el número de resultados... ve que ó es 0 ó X cantidad... no te va a devolver un número negativo .
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 29/10/2005, 17:41
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por jam1138
Creo te acabo de responder en otro tema... por favor NO repitas consultas.
Temas unidos.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 29/10/2005, 17:42
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
desde ya disculpas Jam, no lo hice con la intención de duplicar contenidos ...

Jam Master, te debo un una cerveza o Whisky si asi lo prefieres, pelee casi todo el día para salvar el impas gracias por iluminar mi código y nuevamente sorry por la duplicación, ahh y porsupuesto tendré en consideración el explicar el código para la prox. ... probando código

Última edición por under_ground; 29/10/2005 a las 18:34
  #9 (permalink)  
Antiguo 29/10/2005, 19:40
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
mmm bueno se sigue depurando el tema porque ahora no me deja guardar aunque el usuario si sea el correcto. aquí publico el código

Código PHP:
$autor=strtolower(trim($_POST[autor]));           
$titulo=strtolower(trim($_POST[titulo]));        
$categria=strtolower(trim($_POST[cat]));        
$bajada=strtolower(trim($_POST[articulo]));    
$imagen=strtolower(trim($_POST[imagen]));     
// SAVE TO DATABASE
$result=mysql_query("select idrut,nombre from tbusuario where nombre='$autor'")or die(mysql_error()); 
$resto=mysql_fetch_assoc($result); // arreglo con los resultados

^
"El query de arriba me sirve para recoger idrut, 
el cual es para un insert que hago más abajo y nombre para validar
que siempre exista un autor relacionado con la publicación, 
todos ellos provienen desde una tabla llamada tbusuario
que se relaciona con tbnoticia."


"Aunque ahora que lo pienso esto de guardar una noticia
rescatando el nombre del usario de la bd,podría no ser tan eficiente
y podría manejarse por sesiones como lo hace el foro, 
osea me registro como usuario y luego publico, 
creo que me respondi solo jeje ¿estoy en lo correcto?"


$sqnew=mysql_query("select ntitulo from tbnoticia where tbusuario_idrut='$resto[idrut]'")or die(mysql_error());

^
Nuevo query para traer el titulo que se guarda en la bd 
en la tabla tbnoticias con el fin de validar que no se dupliquen noticias


if (mysql_num_rows($result)>&& mysql_num_rows($sqnew)==0)
{
// Then insert into database
$str=mysql_query("insert into tbnoticia(TBUsuario_IDRut,nautor,ntitulo,ncategoria,nbajada,nfecha)values('$resto[idrut]','$autor','$titulo','$categria','$bajada',now())"); echo "guardado <br>";
}else{
echo
"Error al intentar publicar noticias con este autor, no esta identificado o intento duplicar una publicación<br>";
echo 
"<a href=\"javascript:history.back()\">Regresar</a>";
exit();

Ese es todo el código involucrado el resto ya se entiende, es decir, si se cumple guarda, sino mensaje de error.acabo de colocar las variables que capturo desde el form al principio del código

Última edición por under_ground; 30/10/2005 a las 08:02
  #10 (permalink)  
Antiguo 30/10/2005, 13:34
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
Como les comente de todas maneras se sigue cayendo el código, aparentemente estos if no pueden funcionar juntos es decir, de esta forma NO
Código PHP:
if (mysql_num_rows($result)> && mysql_num_rows($sqnew)== 0
pues realize una prueba por separado y si entraban en a los if correspondientes, pero cuando probe ambos juntos es decir,como esta arriba pero por separado

Ejem..

Código PHP:
if(mysql_num_rows($sqnew)== 0){
     if(
mysql_num_rows($result)> 0){
.
.

nuevamente empezo a fallar...
  #11 (permalink)  
Antiguo 31/10/2005, 08:16
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años
Puntos: 1
Solucionado, las sentencias If estaban correctas, el problema era el orden en que el select traía los resultados
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 07:34.