Foros del Web » Creando para Internet » Diseño web »

Modificar datos Mysql

Estas en el tema de Modificar datos Mysql en el foro de Diseño web en Foros del Web. Buenas de nuevo, quiero poder modificar los datos de la BD pero no lo consigo, el código que tengo es el siguiente: Código: <? include("comunes_privada.php"); ...
  #1 (permalink)  
Antiguo 15/11/2009, 10:57
 
Fecha de Ingreso: julio-2005
Mensajes: 304
Antigüedad: 12 años, 5 meses
Puntos: 4
Modificar datos Mysql

Buenas de nuevo, quiero poder modificar los datos de la BD pero no lo consigo, el código que tengo es el siguiente:

Código:
<?

include("comunes_privada.php");

if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
	$nombrearchivo=$_FILES['foto']['name'];
	move_uploaded_file($_FILES['foto']['tmp_name'],"../images/vinos/".$nombrearchivo);
}
$idvino=$_POST["idvino"];
$modiSQL="UPDATE bodega SET nombre='".$_POST["nombre"]."', bodega='".$_POST["bodega"]."', origen='".$_POST["origen"]."', tipo='".$_POST["tipo"]."', graduacion='".$_POST["graduacion"]."', varietal='".$_POST["varietal"]."', maridaje='".$_POST["maridaje"]."',servir='".$_POST["servir"]."', elaboracion='".$_POST["elaboracion"]."', foto='".$nombrearchivo."' WHERE idvino='".$idvino."' LIMIT 1";

mysql_query($modiSQL,$conexion)

?>
A ver si alguien me puede decir donde estoy fallando. Gracias de antemano.
  #2 (permalink)  
Antiguo 15/11/2009, 11:13
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 8 años, 10 meses
Puntos: 306
Respuesta: Modificar datos Mysql

Hola
para ver cual es el error agregale al query lo siguiente.
A mi, me ha servido para ver donde me equivoco.

$result = mysql_query($modiSQL,$conexion) or die( "Error en Query: $sql, error: " . mysql_error() );
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #3 (permalink)  
Antiguo 16/11/2009, 12:51
 
Fecha de Ingreso: julio-2005
Mensajes: 304
Antigüedad: 12 años, 5 meses
Puntos: 4
Respuesta: Modificar datos Mysql

Si le quito la condición funciona, pero se realiza el cambio en todos los registros.
  #4 (permalink)  
Antiguo 16/11/2009, 18:17
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 8 años, 8 meses
Puntos: 101
Respuesta: Modificar datos Mysql

Es un error de comillas dobles que se cierran para publicar PHP y luego vuelven a usarse entre corchetes[" ff "] sin escaparlas: [\" gg \"]

Ademas, esto:

'".$_POST["nombre"]."'

no es necesario. Podes poner la variables directamente sobre las comillas simples.
Pero antes iguala todos los POST con variables convencionales:

$nombre = $_POST["nombre"];
$bodega = $_POST["bodega"];
etc

$modiSQL="UPDATE bodega SET nombre='$nombre', bodega='$bodega', ... etc
  #5 (permalink)  
Antiguo 17/11/2009, 04:31
 
Fecha de Ingreso: julio-2005
Mensajes: 304
Antigüedad: 12 años, 5 meses
Puntos: 4
Respuesta: Modificar datos Mysql

Mayid siguiendo tu consejo el código me quedaría así:

Código:
<?

include("comunes_privada.php");

if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
	$nombrearchivo=$_FILES['foto']['name'];
	move_uploaded_file($_FILES['foto']['tmp_name'],"../images/vinos/".$nombrearchivo);
}
$idvino=$_POST["idvino"];
$nombre=$_POST["nombre"];
$bodega=$_POST["bodega"];
$origen=$_POST["origen"];
$tipo=$_POST["tipo"];
$graduacion=$_POST["graduacion"];
$varietal=$_POST["varietal"];
$maridaje=$_POST["maridaje"];
$servir=$_POST["servir"];
$elaboracion=$_POST["elaboracion"];

$modiSQL="UPDATE bodega SET nombre='$nombre', bodega='$bodega', origen='$origen', tipo='$tipo', graduacion='$graduacion', varietal='$varietal', maridaje='$maridaje', servir='$servir', elaboracion='$elaboracion', foto='$nombrearchivo' WHERE idvino='$idvino' LIMIT 1";

mysql_query($modiSQL,$conexion)

?>
Pero el resultado es el mismo
  #6 (permalink)  
Antiguo 17/11/2009, 08:55
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 8 años, 10 meses
Puntos: 306
Respuesta: Modificar datos Mysql

¿Te marca algún error, o solo se ejecuta y no se produce ninguno?

" LIMIT 1", ¿es necesario?, supongo que el idvino es único, con lo que solo se debería actualizar esa fila.

Saludos
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--

Última edición por C2am; 17/11/2009 a las 09:02
  #7 (permalink)  
Antiguo 19/11/2009, 10:23
Avatar de mleonardom  
Fecha de Ingreso: marzo-2009
Mensajes: 81
Antigüedad: 8 años, 8 meses
Puntos: 5
Respuesta: Modificar datos Mysql

Cita:
Iniciado por C2am Ver Mensaje
Hola
para ver cual es el error agregale al query lo siguiente.
A mi, me ha servido para ver donde me equivoco.

$result = mysql_query($modiSQL,$conexion) or die( "Error en Query: $sql, error: " . mysql_error() );
Podrias publicar lo que te arroja esta linea? ademas podrias poner antes de esto un
Código:
echo $sql;
Esto para poder ver la consulta SQL exacta que se esta intentando ejecutar en caso de que no hayan errores en la ejecución y no de ejecute el "die".

Con esto tal vez nos sea mas facil ayudarte.

Saludos.
  #8 (permalink)  
Antiguo 19/11/2009, 12:01
 
Fecha de Ingreso: julio-2005
Mensajes: 304
Antigüedad: 12 años, 5 meses
Puntos: 4
Respuesta: Modificar datos Mysql

Cita:
Iniciado por C2am Ver Mensaje
¿Te marca algún error, o solo se ejecuta y no se produce ninguno?

" LIMIT 1", ¿es necesario?, supongo que el idvino es único, con lo que solo se debería actualizar esa fila.

Saludos
No marca error, se ejecuta pero no hace cambio ninguno.
El Idvino es un campo clave de autoincremento, por eso es el que utilizo como condición, por que es el único dato que no va a ser modificado.

lo de LIMIT 1, si te digo la verdad no se si es necesario, en todos los ejemplos que he encontrado está puesto, pues yo lo he puesto.

Código:
<?

include("comunes_privada.php");

if (is_uploaded_file($_FILES['foto']['tmp_name'])) {
	$nombrearchivo=$_FILES['foto']['name'];
	move_uploaded_file($_FILES['foto']['tmp_name'],"../images/vinos/".$nombrearchivo);
}
$idvino=$_POST["idvino"];
$nombre=$_POST["nombre"];
$bodega=$_POST["bodega"];
$origen=$_POST["origen"];
$tipo=$_POST["tipo"];
$graduacion=$_POST["graduacion"];
$varietal=$_POST["varietal"];
$maridaje=$_POST["maridaje"];
$servir=$_POST["servir"];
$elaboracion=$_POST["elaboracion"];

$modiSQL="UPDATE bodega SET nombre='$nombre', bodega='$bodega', origen='$origen', tipo='$tipo', graduacion='$graduacion', varietal='$varietal', maridaje='$maridaje',servir='$servir', elaboracion='$elaboracion', foto='$nombrearchivo' WHERE idvino='$idvino' LIMIT 1";

echo $sql;
$result = mysql_query($modiSQL,$conexion) or die( "Error en Query: $sql, error: " . mysql_error() );
mysql_query($modiSQL,$conexion)


?>
con lo que me habeis dicho el código ha quedado así y ni me marca error ni me hace los cambios.
  #9 (permalink)  
Antiguo 19/11/2009, 14:10
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 8 años, 10 meses
Puntos: 306
Respuesta: Modificar datos Mysql

Hola

Las variables llegan?

Haz un echo de alguna variable
echo "$idvino";
echo "$nombre";
para asegurarte que no llega vacia, aunque no creo que sea así.
Y prueba esto:
WHERE idvino='$idvino' quitale las ' '

WHERE idvino = $idvino

Espero que funcione
saludos
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
  #10 (permalink)  
Antiguo 19/11/2009, 16:30
 
Fecha de Ingreso: julio-2005
Mensajes: 304
Antigüedad: 12 años, 5 meses
Puntos: 4
Respuesta: Modificar datos Mysql

Lo siento chicos la que os he liado y el error no está en este código, estaba en el listado de vinos, extraje el idvino para el listado, pero no lo inclui dentro del formulario, por lo que este código no estaba funcionando por que no recibia el idvino. Así que si ha alguien le interesa el código final es el que tengo en el mensaje #5.

Aunque ya puedo modificar sigo con un problema, como ya sabreis un type=file no se extrae por motivos de seguridad, por lo que lo recojo de la siguiente manera:

Código:
<input type="file" name="foto" maxlength="100" size="50"  /><br /><div><?=$foto?></div>
El problema es que al enviar la modificación al encontrarse el type="file" en blanco, me elimina el que tengo registrado, ¿Como puedo hacer que el valor que he recogido en el div sea enviado en caso de que se deje el type="file" vacio?

Ante todo gracias a todos los que me habeis intentado ayudar y perdonar por haceros mirar el código que no era.
  #11 (permalink)  
Antiguo 19/11/2009, 17:02
Avatar de C2am  
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 8 años, 10 meses
Puntos: 306
Respuesta: Modificar datos Mysql

hola
Que bueno que hayas encontrado el error.

Para el problema del file una solucion sería en el formulario algun tipo de verificación.

te dejo algo que uso para cambiar o no una imagen según quiera cambiarla o no al modificar la novedad


Código HTML:
Cambiar Imagen <br>
        <label>
          <input type="checkbox" name="imagensi" id="imagensi" onClick="habilita()" >
          SI</label>
<br/>
<label>

      <input disabled name="file" type="file" size="25">
      </label> 
Siendo la función jp:
<script language="JavaScript">

function habilita(){
document.form1.file.disabled = false;
}
</script>


Con esto tengo la posibilidad de cargar una nueva imagen, habilitando el botón, o dejar la que ya tenia, dejándolo deshabilitado.


y al cargar los datos en la base de datos.


pon un if
Código PHP:
if($imagensi != "on"){ 

/* si no cambias la imagen no actualizas ese campo*/
$modiSQL="UPDATE bodega SET nombre='$nombre', bodega='$bodega', origen='$origen', tipo='$tipo', graduacion='$graduacion', varietal='$varietal', maridaje='$maridaje', servir='$servir', elaboracion='$elaboracion' WHERE idvino='$idvino' LIMIT 1";

mysql_query($modiSQL,$conexion)
}

else{
/*si cambias la imagen actualizas también el campo foto*/

$modiSQL="UPDATE bodega SET nombre='$nombre', bodega='$bodega', origen='$origen', tipo='$tipo', graduacion='$graduacion', varietal='$varietal', maridaje='$maridaje', servir='$servir', elaboracion='$elaboracion', foto='$nombrearchivo' WHERE idvino='$idvino' LIMIT 1";

mysql_query($modiSQL,$conexion)} 

Claro que debes acondicionarlo a tus necesidades. y seguramente existe una mejor forma, pero es con lo que te puedo ayudar con mi nivel novato en php y mysql.

saludos
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--
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 10:54.