Foros del Web » Programando para Internet » PHP »

Problemas con un codigo de actualizacion...

Estas en el tema de Problemas con un codigo de actualizacion... en el foro de PHP en Foros del Web. Amigos, ayudenme con el siguiente codigo, porque en realidad no entiendo que esta pasando. Durante el codigo que esta previo al que aqui muestro, empleo ...
  #1 (permalink)  
Antiguo 28/09/2003, 12:26
RDC
 
Fecha de Ingreso: agosto-2003
Mensajes: 50
Antigüedad: 14 años, 3 meses
Puntos: 0
Problemas con un codigo de actualizacion...

Amigos, ayudenme con el siguiente codigo, porque en realidad no entiendo que esta pasando.
Durante el codigo que esta previo al que aqui muestro, empleo las variables $tipo_cpu y $sistema_operativo
sin ningún tipo de problemas (estas variables las creo a partir de texto que extraigo de un archivo
de texto). Lo cierto es que al querer modificar los atributos de la tabla
"computadora" con los valores de estas variables ($tipo_cpu y $sistema_operativo), los valores de las variables
son tomados como <variables en blanco>, es decir se omite el valor que en realidad tienen y
en las tabla computadora los campos Procesador y Nombre_Equipo tomar valores en blanco
cuando se cumple el WHERE que la instrucción indica.
Lo mas contradictorio es que si antes de estas instrucciones coloco mensajes del tipo:
echo $tipo_cpu y echo $sistema_operativo se muestra el valor
real de estas variables el cual es el que me interesa actualizar en las tablas. El WHERE
esta funcionando bien, el problema son las variables que se asumen en blanco en la instrucción
de actualización.
Agradezco me ayuden, porque esto me esta volviendo loco...

//Aqui empieza la parte problematica del codigo...
//La instruccion que viene SI FUNCIONA...
echo $sistema_operativo;
echo $tipo_cpu;
//Aqui empieza el rollo...
$query_actualizacion=sprintf("UPDATE computadora SET Procesador='$tipo_cpu', Sistema_Operativo='$sistema_operativo' WHERE Nombre_Equipo='$Nombre_Comp'");
$query2=mysql_query($query_actualizacion, $conex_archivos);
if ($query2<0)
{
echo"Error en la actualización";
exit();
}
else
{
echo "Actualización Exitosa";
exit();
  #2 (permalink)  
Antiguo 28/09/2003, 12:58
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
seguro que en tus tablas el registro esta con la 1º letra en Mayusculas.... hay que tener mucho cuidado con eso, y procurar no usar nunca mayusculas, ya que son caracteres siferentes en casi todos los lenguajes de programacion



<?php

echo $sistema_operativo_2;
echo $tipo_cpu;

mysql_query("UPDATE computadora SET procesador='$tipo_cpu', sistema_operativo='$sistema_operativo_2' WHERE nombre_equipo='$nombre_comp'") or die(mysql_error());

echo "Actualización Exitosa";

exit();

?>


yo lo dejaria asi, sin mas.... si te fijas he quitado el IF, no hace
falta usarlo para saber si hay error o no, para saber si ocurre un error de SQL, lo tienes que usar or die(mysql_error()), en cada conexion SQL

asi evitas mucho code y todo queda mas limpio.


__________________
3w.valenciadjs.com
3w.laislatv.com
  #3 (permalink)  
Antiguo 29/09/2003, 19:07
RDC
 
Fecha de Ingreso: agosto-2003
Mensajes: 50
Antigüedad: 14 años, 3 meses
Puntos: 0
No es ese el problema...
  #4 (permalink)  
Antiguo 29/09/2003, 19:16
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
y cual es...?¿
__________________
3w.valenciadjs.com
3w.laislatv.com
  #5 (permalink)  
Antiguo 29/09/2003, 20:27
 
Fecha de Ingreso: septiembre-2002
Mensajes: 122
Antigüedad: 15 años, 3 meses
Puntos: 0
Como dice Nuevo lo mejor es trabajar todo en minuscula, pruba asi:
$query_actualizacion=("update computadora set procesador='$tipo_cpu', sistema_operativo='$sistema_operativo' where nombre_equipo='$nombre_comp' ");

echo $query_actualizacion; // para que verifique como esta quedando el string de actualizacion,

$query2=mysql_query($query_actualizacion, $conex_archivos);...
  #6 (permalink)  
Antiguo 29/09/2003, 20:55
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 7 meses
Puntos: 2
bueno, segun que cosas me gusta en minisculas y otras en mayusculas...

Código PHP:

$query_actualizacion
=("UPDATE computadora SET procesador='$tipo_cpu', sistema_operativo='$sistema_operativo' WHERE nombre_equipo='$nombre_comp' ");

echo 
$query_actualizacion// para que verifique como esta quedando el string de actualizacion,

$query2=MYSQL_QUERY($query_actualizacion$conex_archivos);... 
__________________
3w.valenciadjs.com
3w.laislatv.com
  #7 (permalink)  
Antiguo 01/10/2003, 14:19
RDC
 
Fecha de Ingreso: agosto-2003
Mensajes: 50
Antigüedad: 14 años, 3 meses
Puntos: 0
Amigos les cuento que he intentado todo lo que me han dicho ustedes y otra ente y nada. Aqui les mando el codigo completo para que le echen un vistazo. Los campos de la tabla se llaman:
Procesador y Sistema_Operativo
Aqui esta el archivo que me trae loco...


<?php require_once('file:///C|/apache/htdocs/udo1/Connections/conex_archivos.php'); ?>
<?php
mysql_select_db($database_conex_archivos, $conex_archivos);
?>
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="" content="text/html; charset=iso-8859-1">
<meta http-equiv="" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
/*Aqui empieza un codigo que permite
buscar el archivo que corresponde al computador
al cual el usuario quiere actualizar sus características.
$Nombre_Comp viene de un formulario*/
$txt=".txt";
$Nombre_Comp=$_POST['select_nombrecomp'];
/*aqui se establece el nombre del archivo en base
a las 2 instrucciones anteriores*/
$Nombre_Comp2=$Nombre_Comp.$txt;
//Este mensaje funciona bien
echo "$Nombre_Comp2<br>";
?>
<?php
/*recogemos en una variable lo que debe
aparecer en la linea a ser verificada. Dicha recoleccion se hara manipulando
un archivo*/
$so="Operating System";
$cpu="CPU Type";
$tarjetam="Motherboard Chipset";
$memoria_ram="System Memory";
/*tomamos el archivo de la carpeta a donde lo envia
el usuario-adm y lo copiamos en una carpeta con el finde darle
mejor resguardo al archivo de actualización*/
copy("c:\Boro\\$Nombre_Comp2", "c:\apache\htdocs\archivos_texto\\$Nombre_Comp 2") or die ("Error. No se pudo copiar el archivo.");
/*abrimos el archivo en formato de solo lectura*/
$archivo=fopen("c:\apache\htdocs\archivos_texto\\$ Nombre_Comp2","r") or die("Fallo el intento de abrir el archivo");
/*Si la apertura del archivo tuvo exito...*/
if ($archivo)
{
while (!feof($archivo))
{
$linea=fgets($archivo, 255);
/*almacenamos en una variable el número de caracteres
coincidentes entre la la linea del archivo que se esta recorriendo
y la variable que almacena lo que se esta buscando, en este caso el
"operating system"*/
$compara_so=similar_text($linea,$so);
/* ...en este caso el "CPU Type"*/
$compara_cpu=similar_text($linea, $cpu);
/* ...en este caso el "Motherboard Chipset"*/
$compara_tarjetam=similar_text($linea, $tarjetam);
/* ...en este caso el "System Memory"*/
$compara_memoriaram=similar_text($linea, $memoria_ram);


/*Si coinciden 16 caracteres es la linea que corresponde al Sistema Operativo...*/
if ($compara_so==16)
{
/*Aqui con la funcion explode partimos la linea
en 2 partes, separadas por la cadena de caracteres "System")*/
$dividir_linea=explode("System",$linea,2);
/*En la variable $sistema_operativo se almacena lo que se andaba buscando,
es decir el nombre del Sistema Operativo*/
$sistema_operativo=$dividir_linea[1];
/*Esta instrucción me permite darme cuenta que para este momento la variable
$sistema_operativo tiene el valor que me interesa, es decir el proceso anterior
esta funcionando..*/
echo $sistema_operativo;
}

/*Si coinciden 8 caracteres es la linea que corresponde al tipo de CPU...*/
if ($compara_cpu==8)
{
/*Aqui con la funcion explode partimos la linea
en 2 partes, separadas por la cadena de caracteres "Type")*/
$dividir_linea=explode("Type",$linea,2);
/*En la variable $tipo_cpu se almacena lo que se andaba buscando,
es decir el tipo de CPU que posee el equipo*/
$tipo_cpu=$dividir_linea[1];
echo $tipo_cpu;
}

/*Si coinciden 19 caracteres es la linea que corresponde al tipo de tarjeta madre...*/
if ($compara_tarjetam==19)
{
/*Aqui con la funcion explode partimos la linea
en 2 partes, separadas por la cadena de caracteres "Chipset")*/
$dividir_linea=explode("Chipset",$linea,2);
/*En la variable $tipo_tarjetam se almacena lo que se andaba buscando,
es decir el tipo de tarjeta madre que posee el equipo*/
$tipo_tarjetam=$dividir_linea[1];
echo $tipo_tarjetam;
}

/*Si coinciden 13 caracteres es la linea que corresponde a la memoria ram...*/
if ($compara_memoriaram==13)
{
/*Aqui con la funcion explode partimos la linea
en 2 partes, separadas por la cadena de caracteres "Memory")*/
$dividir_linea=explode("Memory",$linea,2);
/*En la variable $memoriaram se almacena lo que se andaba buscando,
es decir la cantidad de memoria ram que posee el equipo*/
$memoriaram=$dividir_linea[1];
echo $memoriaram;
}
//Aqui se esta imprimiendo, para su visualizacion, las lineas del archivo
echo "$linea<br>\n";
}
}
/*Con esta instruccion ratifico que $tipo_cpu aun tiene el valor que me interesa...*/
echo $tipo_cpu;
/*Pero al actualizar la tabla todas las variables, incluyendo
$tipo_cpu, se asumen con valor en blanco, y sustituyen
los valores que para ese registro se tengan en la tabla, por valores en blanco,
he aqui mi GRAN DUDA. Este query me lo recomendo un amigo y tampoco funciona...*/
/*$query_actualizacion=sprintf("UPDATE computadora SET Procesador='$tipo_cpu', Sistema_Operativo='$sistema_operativo' WHERE Nombre_Equipo='$Nombre_Comp'");
$query2=mysql_query($query_actualizacion, $conex_archivos);
if ($query2<0)
{
echo"Error en la actualización";
exit();
}
else
{
echo "Actualización Exitosa";
exit();
}
*/

//Convierto mi manera comentario y empleo la tuya...y tampoco funciona
$sql = "UPDATE computadora SET Procesador='".$tipo_cpu."',
Sistema_Operativo='".$sistema_operativo."' WHERE
Nombre_Equipo='".$Nombre_Comp."'";
$resultado=mysql_query($sql, $conex_archivos);
$items = mysql_affected_rows($conex_archivos);
echo "el numero de registros afektados kon la aktualizacion fue: ".$items;

/*Se cierra el archivo*/
fclose($archivo);
?>
</body>
</html>
  #8 (permalink)  
Antiguo 01/10/2003, 16:25
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Prueba este codigo:
Código PHP:
//Convierto mi manera comentario y empleo la tuya...y tampoco funciona
$sql "UPDATE computadora SET Procesador='".$tipo_cpu."',
Sistema_Operativo='"
.$sistema_operativo."' WHERE
Nombre_Equipo='"
.$Nombre_Comp."'";
echo 
"<br>$sql<br>"// mostramos la consulta que se ejecuta realmente
$resultado=mysql_query($sql$conex_archivos) or die ("Error en $sql . <br>MySQL dice: ".mysql_error()); // nos muestra el mensaje de error de MySQL si se produjo
$items mysql_affected_rows($conex_archivos);
echo 
"el numero de registros afektados kon la aktualizacion fue: ".$items
Tambien seria bueno saber el tipo de datos de esos campos en la base de datos. Normalmente si intentas meter una cadena de texto en un campo int suelen pasar estas cosas.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 02/10/2003, 12:00
RDC
 
Fecha de Ingreso: agosto-2003
Mensajes: 50
Antigüedad: 14 años, 3 meses
Puntos: 0
Son campos tipo CHAR...
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 01:03.