Foros del Web » Programando para Internet » PHP »

insertar un dato a BD si cumple IF, ELSE insertar otro

Estas en el tema de insertar un dato a BD si cumple IF, ELSE insertar otro en el foro de PHP en Foros del Web. Salu2 a todos. Necesito ke un atributo disponible_com de mi tabla computador sea "si" si se encuentra teclado_com y mouse_com con el valor "si" comprobandoolo ...
  #1 (permalink)  
Antiguo 30/09/2006, 15:32
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 2 meses
Puntos: 0
insertar un dato a BD si cumple IF, ELSE insertar otro

Salu2 a todos. Necesito ke un atributo disponible_com de mi tabla computador sea "si" si se encuentra teclado_com y mouse_com con el valor "si" comprobandoolo justo luego de haberlos ingresado a mi bd.

lo que esta en comentado es lo que estoy haciendo:
Código PHP:
<?
include "conexion.php";

$query="SELECT * FROM computador WHERE id_com='$id_com'";
$result=mysql_db_query($database,$query,$conexion);
if(
mysql_num_rows($result)){
echo 
"El Computador ya fue registrado en la BD";
} else {
mysql_free_result($result);

$query="INSERT INTO computador (id_com, teclado_com, mouse_com) VALUES ('$id_com', '$resp_tecl', '$resp_mouse')";

/*$query="SELECT teclado_com, mouse_com FROM computador Where computador.id_com='$id_com'";
$result=mysql_db_query($database,$query,$conexion);


if(mysql_num_rows($result))
{
    if(teclado_com="si" AND mouse_com="si")//NOSE LA SINTAXIS DE ESTE IF
    {
    mysql_free_result($result);
    $query="INSERT INTO computador (disponible_com) VALUES ('Si');"
    } 
    else 
    {
    $query="INSERT INTO computador (disponible_com) VALUES ('No');"
    }
}*/

$result=mysql_db_query($database,$query,$conexion);
if(
mysql_affected_rows($conexion)){
echo 
"Computador introducido correctamente";

} else {
echo 
"Error introduciendo el computador";


?>
independiente del error de sintaxis kizas el la linea de if que me da un parse error (que espero que me corrijan) ¿esta bien esta consulta?

Última edición por gazuzax; 30/09/2006 a las 21:14
  #2 (permalink)  
Antiguo 01/10/2006, 08:16
 
Fecha de Ingreso: septiembre-2006
Mensajes: 59
Antigüedad: 18 años, 2 meses
Puntos: 0
Hola.

prueba esto:


$rs = mysql_query( $query, $connecta);

$cont = 0;
$registros=Array();

while ($registro = mysql_fetch_row($rs))
{
foreach($registro as $clave){



$registros[$cont] = $clave;
$cont++;
}
}

if( ($registros[0]="si") AND ($registros[1]="si"))
{
mysql_free_result($result);
$query="INSERT INTO computador (disponible_com) VALUES ('Si');"
}
else
{
$query="INSERT INTO computador (disponible_com) VALUES ('No');"
}
}

Asi seguro que te funciona... porque tus resultados no los estabas asignando a ninguna variable....

Un saludo
  #3 (permalink)  
Antiguo 01/10/2006, 08:43
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 2 meses
Puntos: 0
te pasaste, lo intentare y te aviso.. (y)
  #4 (permalink)  
Antiguo 02/10/2006, 00:18
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 2 meses
Puntos: 0
ya ahora si, te cuento lo puse en vez de lo que esta comentado y me da Parse error en la linea que esta puesta en el codigo

Código PHP:
/*************************EDITADO, SIN PARSE ERROR***********************/
<?
include "conexion.php";

$query="SELECT * FROM computador WHERE id_com='$id_com'";
$result=mysql_db_query($database,$query,$conexion);
if(
mysql_num_rows($result))
{
    echo 
"El Computador ya fue registrado en la BD";
}

else 
{
    
mysql_free_result($result);

    
$query="INSERT INTO computador (id_com, id_sala, id_red, ingreso_com, garantia_com, id_tmadre, id_pro, id_mem, id_disco, id_tvideo, id_tsonido, id_tred, id_lcd, id_ldvd, id_fuente, id_mon, usb_com, teclado_com, mouse_com, id_so, id_suite)
    VALUES ('$id_com', '$sala', '$red', '$date', '$garantia', '$tmadre', '$pro', '$mem','$disco','$tvideo','$tsonido', '$tred', '$lcd', '$ldvd', '$fuente', '$monitor', '$usb', '$resp_tecl', '$resp_mouse', '$so', '$suite')"
;

    
$rs mysql_query$query$conexion);
    
$cont 0;
    
$registros=Array();

    while (
$registros mysql_fetch_row($rs))
    {
        foreach(
$registro as $clave){
        
$registros[$cont] = $clave;
        
$cont++;
    }
}
    if( (
$registros[17]="si") AND ($registros[18]="si")) 
    { 
    
$query="INSERT INTO computador (disponible_com) VALUES ('Si');" ;
    } 
    else 
    { 
    
$query="INSERT INTO computador (disponible_com) VALUES ('No');" ;
    } 
}


$result=mysql_db_query($database,$query,$conexion);
if(
mysql_affected_rows($conexion)){
echo 
"Computador introducido correctamente";

} else {
echo 
"Error introduciendo el computador";


?>
como puedes ver tengo muchos otros atributos para ponerle, asi k supongo k los registros son los nros 17 y 18

Última edición por gazuzax; 02/10/2006 a las 10:41
  #5 (permalink)  
Antiguo 02/10/2006, 00:22
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 18 años, 3 meses
Puntos: 0
Claro que si te faltan dos ; , uno despues de cada query

Última edición por seyacat; 02/10/2006 a las 00:29
  #6 (permalink)  
Antiguo 02/10/2006, 00:56
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 2 meses
Puntos: 0
plop x) xcias depues de eso sobraba una llave y estoy, ahora me ejecuta mi pagina pero me aparece Warning: Supplied argument is not a valid MySQL result resource en esta linea
Cita:
while ($registros = mysql_fetch_row($rs))
y lo que hace el sistema es ingresarme primero un registro con puros valores vacios (ceros) en un registro y en disponible me pone SI, y luego me ingresa bien los demas datos de mi pc en otro registro pero el valor de disponiblle en blanco.

necesito que se ingrese en el mismo reogistro, como soluciono eso??

Última edición por gazuzax; 02/10/2006 a las 01:03
  #7 (permalink)  
Antiguo 02/10/2006, 09:52
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 2 meses
Puntos: 0
alguna idea alguien?
  #8 (permalink)  
Antiguo 02/10/2006, 09:56
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 18 años, 10 meses
Puntos: 3
Coloca tu codigo!!!!!!!!!!! si no como sabremos donde esta el error?
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #9 (permalink)  
Antiguo 02/10/2006, 10:39
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 2 meses
Puntos: 0
mi codigo esta mas arriba si lo kieres ver. salu2
  #10 (permalink)  
Antiguo 02/10/2006, 11:14
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 18 años, 3 meses
Puntos: 0
obiamente esta mal planteado el query ò???

$rs = mysql_query( $query, $conexion);

esta linea no la entiendo?? no se si estam mal, me voy a poner a estudiar??
  #11 (permalink)  
Antiguo 02/10/2006, 11:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por seyacat Ver Mensaje
obiamente esta mal planteado el query ò???

$rs = mysql_query( $query, $conexion);

esta linea no la entiendo?? no se si estam mal, me voy a poner a estudiar??
Si, .. jeje .. estudia:

www.php.net/mysql_query

A la función mysql_query() le puedes pasar el parámetro del "link" de conexión (ese $conexion que sale de supongo un mysql_connect() en "conexion.php")

--------------

A mi lo que no me gusta es que en un lado hace:
$result=mysql_db_query($database,$query,$conexion) ;

y por otro usa

$rs = mysql_query( $query, $conexion);

No digo que esto sea el problema .. pero es para que dé problemas.

Deberías en "conexion.php" seleccionar la BBDD (ya que vas a usar una sóla BBDD):

Código PHP:
mysql_select_db($database,$conexion); 
Y luego ejecutar tus consultas SQL:
Código PHP:
$result=mysql_query($query,$conexion); 
Por otro lado, el tema de usar el "link de conexión" .. si realmente sólo vas a usar una BBDD y a un servidor de Mysql en este caso .. realmente puedes omitir el $conexion en las funciones de mysql_xxx() pues se asume el único establecido en toda función que hagas.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 02/10/2006, 12:36
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 21 años
Puntos: 4
En esta parte:

if( ($registros[17]="si") AND ($registros[18]="si"))
{
$query="INSERT INTO computador (disponible_com) VALUES ('Si');" ;
}
else
{
$query="INSERT INTO computador (disponible_com) VALUES ('No');" ;
}
}

Lo que te marque con rojo que cosa es la que sierra, es decir me parece que te sobra una llave de sierre y en tu sentencia if:

if( ($registros[17]="si") AND ($registros[18]="si"))

Creo que lo deberias de poner así:

if( ($registros[17] == "si") AND ($registros[18] == "si"))

En cuanto al while creo que le estas pasando mal el nombre del array:

while ($registros = mysql_fetch_row($rs))
{
foreach($registro as $clave)

Que acaso no debería ser:

while ($registros = mysql_fetch_row($rs))
{
foreach($registros as $clave)

No digo que estos detalles sean los que no te muestran los resultados deseados pero deberías checarlos. Suerte
  #13 (permalink)  
Antiguo 02/10/2006, 17:04
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 2 meses
Puntos: 0
xcias cluster por los consejos me serán muy utiles en el futuro, y xcias erickfransisco por hacerme notar esos error en mi sintaxis, cambiare todo lo recomendado y les cuento como me fue
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 14:43.