Problemilla entre MySQL y PHP (muy básico)

varuk

Hola.

Mirad. He hecho este "script" que no es más que una tabla en una base de datos que tiene tres columnas y una ID (ID 1) con 3 precios de fotocopias (copia), fotocopias en color (color) y encuadernacion.

El caso es que quería editar, o actualizar, desde formulario (haciéndolo para el registro "copia" mismamente) pero no va bien.

Suceden estos fallos:

1º. Al cambiar el precio de la COPIA no se cambia en la página, sino que hay que actualizarla ¿Cómo podría hacer para que se actualizara? ¿Poner que se vean los precios en una página distinta a la del formulario?

2º. Cuando actualizas, o entras a la web, un par de veces el precio de COPIA se cambia solo y se pone a 0. Esto es lo que no lo entiendo ¿Por qué pasa eso? ¿Debería poner el formulario en una página aparte de la que se muestren los precios o eso no tiene nada que ver?

Este es el código:
http://pastebin.com/wTJw8qxK

Si queréis probarlo en vivo... por si os ayuuda, lo he subido a Internet:
http://www.enibel.com/sinfuste/proyectos/admin.php

Muchas gracias ^.

erdanblo

Los dos problemas son el mismo problema.

Te muestra el valor introducido anteriormente.

Pones 3 en el cuadro, le das y sale 4 por ejemplo, pero si vuelves a poner por ejemplo 5, te sale 3, que es el que introduciste antes de 4. Al siguiente, te muestra 4.

El cero, si no pones ningún valor, te muestra cero.

Edit. No he dicho nada, #3

r2d2rigo

Haces el SELECT para obtener los valores antes del UPDATE, para actualizarlos si han sido cambiados. Intercambialos.

varuk

Le pasa igual.

Creo que el problema es este:

$precioCopia=$_POST["copia"];

He separao el formulario del resto en otra página. Digo que el problema es ese porque cuando entras a la web, sin pasar por el formulario, entonces "copia" no tiene ningún valor y le da 0.

0buS

Lo que pasa es que primero tienes que hacer el UPDATE, y despues el SELECT, no al reves.

El SELECT debe ser lo último, porque si selecciones antes de actualizarlo, obviamente recibirás el digito anterior al update.

vale me dao cuenta que #3 te habia contestado eso xD. Ese es tu problema, revísalo otra vez.

y $precioCopia=$_POST["copia"]; te sobra, porque lo que está haciendo es machacar valores.

yo lo meteria en el while $precioCopia=$row['copia'];

LR

Tu problema estas en que siempre actualizas el valor.

Prueba esto:

<?php

//conectamos con MySQL

$bd=@mysql_connect("localhost", "usuario", "contraseña");

if (!$bd) {

echo ("Error. No se pudo <b>conectar</b> con la base de datos en este momento. Inténtelo más tarde");

exit();

}

 

//seleccionamos una base de datos de las que tenemos en MySQL

$sel= @mysql_select_db("copisteria");

if(!$sel)

{

echo ("Error. No se puede <b>acceder</b> a la base de datos en este momento. Inténtelo más tarde");

exit();

}


//para cambiar las valores antes me traigo las variables desde el formulario

if(!empty($_POST['copia'])){

$precioCopia=$_POST["copia"];

 
//cambiar, actualizar, los valores de la tabla

$actualizarCopia= @mysql_query("UPDATE precios SET copia='$precioCopia' WHERE ID=1");

if (!$actualizarCopia) {

echo ("Error al cambiar el precio de la copia. Vuelve a intentarlo");

exit();

}
}

[/b]

//busqueda en la base de datos

$busqueda= @mysql_query("SELECT copia, color, encuadernacion FROM precios");

if (!$busqueda) {

echo ("Error al <b>seleccionar</b> los elementos de la base de datos. Inténtelo más tarde");

exit();

}

 

//mostrar por pantalla

while ($row = mysql_fetch_array($busqueda))

{

echo ("Precio copia: ".$row["copia"]. "</br>"."Precio color: ".$row["color"]. "</br>"."Precio encuadernacion: ".$row["encuadernacion"]);

}

?>

Pruebalo a ver si ahora te va bien

varuk

#6 Exacto, con eso funciona.

Muchas gracias a todos gente ^.

Usuarios habituales

  • varuk
  • LR
  • 0buS
  • r2d2rigo
  • erdanblo