Foros del Web » Programando para Internet » PHP »

Problema con if

Estas en el tema de Problema con if en el foro de PHP en Foros del Web. Hola amigos tengo un problema en mi codigo.. lo que yo pretendo hacer es que haga la consulta a la tabla y si no encuentra ...
  #1 (permalink)  
Antiguo 25/10/2006, 06:47
OsX
 
Fecha de Ingreso: septiembre-2006
Mensajes: 10
Antigüedad: 18 años, 2 meses
Puntos: 0
De acuerdo Problema con if

Hola amigos tengo un problema en mi codigo..
lo que yo pretendo hacer es que haga la consulta a la tabla y si no encuentra un registro con dicho rut que lo inserte, pero si el registro ya existe con dicho rut quiero que lo actualize..

<?php

include ('conexion2.php');


$sql= "select * from total_dias where rut = '$rut' ";



if (!$result) {


$sql = "INSERT INTO total_dias (rut, total_rojos, total_embarcado) ";

$sql .= "VALUES ('$rut', '$total_rojos', '$total_embarcado')";


$result=mysql_query($sql);


echo "Registro Añadido";


} else {

$sql = "UPDATE total_dias SET rut='$rut', total_rojos='$total_rojos',".

"total_embarcado='$total_embarcado' WHERE rut='$rut'";



echo "Registro Actualizado";


}

?>

Gracias..
  #2 (permalink)  
Antiguo 25/10/2006, 07:45
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 21 años
Puntos: 4
Intenta cambiando tu código de esta manera:

Código PHP:
<?php
include ('conexion2.php'); // supongo que aquí tienes los datos de conexion y seleccion de bd

$sql"SELECT * FROM total_dias WHERE rut='".$rut."'";
$res mysql_query $sql );
$num_res mysql_num_rows$sql ); // con esto sabras si la $rut ya existe

if ( $num_res // si existe rut
{
   
$sql2 "UPDATE total_dias SET rut='".$rut."', total_rojos='".$total_rojos."', ";
   
$sql2 .= "total_embarcado='".$total_embarcado."' WHERE rut='".$rut."'";

   
mysql_query $sql2 );

   echo 
"Registro Actualizado";
}
else 
// si no existe rut
{  // tambien supongo que las variables $rut, $total_rojos y $total_embarcado fueron definidas anteriormente
   
$sql3 "INSERT INTO total_dias (rut, total_rojos, total_embarcado) ";
   
$sql3 .= "VALUES ('".$rut."', '".$total_rojos."', '".$total_embarcado."')";

   
mysql_query $sql3 );

   echo 
"Registro Añadido";
}
?>
Espero te haya servido de algo, por lo menos para darte una idea. Suerte
  #3 (permalink)  
Antiguo 25/10/2006, 07:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
No sé si resumistes mucho el código .. o no es completo, pero .. fijate:

if (!$result) {

pero de donde sale $result? .. sólo tienes:

$sql= "select * from total_dias where rut = '$rut' ";


Es decir .. no ejecutas la consulta SQL .. además que no sería correcto o mejor dicho realmente bueno hacer lo que pretendes hacer:

Código PHP:
$result=mysql_query($sql) or die (mysql_error());
if (
mysql_num_rows($result) == 0){
// haces tu insert...
esle {
// haces tu UPDATE

De esta forma uso "mysql_num_rows()" que nos indica el total de resultados que arroja una ejecución de una consulta SQL dada. Se espera "1" o "0" resultados (entiendo que en esa tabla no existen RUT's repetidos ..).

Si tu haces if ($result) sólo .. de un $result=mysql_query .... sólo validas que se "ejecute" la consulta SQL .. pero no si entrega resultados o son los esperados. De hecho en mi propuesta ya trato el tema del "error" en la sentencia SQL con el "mysql_error()" montado sobre un "or die(...)"

Acuerdate de "ejecutar" las sentencias $SQL que defines con msyql_query() ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 27/10/2006, 09:03
OsX
 
Fecha de Ingreso: septiembre-2006
Mensajes: 10
Antigüedad: 18 años, 2 meses
Puntos: 0
Gracias por sus respuestas muchachos me quedo todo muy claro..
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:50.