Foros del Web » Programando para Internet » PHP »

No me cambia el dato en la tabla con Update

Estas en el tema de No me cambia el dato en la tabla con Update en el foro de PHP en Foros del Web. Cuando utilizo la variable en el UPDATE no me guarda el dato en la tabla pero: Cuando le pongo un valor fijo ,,Sì que me ...
  #1 (permalink)  
Antiguo 11/05/2015, 05:17
 
Fecha de Ingreso: mayo-2015
Mensajes: 4
Antigüedad: 8 años, 11 meses
Puntos: 0
No me cambia el dato en la tabla con Update

Cuando utilizo la variable en el UPDATE no me guarda el dato en la tabla pero:
Cuando le pongo un valor fijo ,,Sì que me hace el UPDATE y me cambia el valor en la tabla.
Ésa variable es la que recojo de un post que ya he utilizado para hacer u SELECT.

<body>


<div class="col-lg-8 col-sm-12 col-lg-offset-2 ">

<form role="form" id ="myForm" action="stock.php" method="post" >

<h2 class="text-center">Introduzca su stock a traves del código de barras del producto</h2>
<div class="form-group centrado1">

<input name="ean" class="form-control input-lg" type="text"
placeholder="Buscar en bbdd el producto por codigo de barras " autofocus>

</div>

<button type="submit" class="btn btn-primary">Buscar</button>
</form>

<div class="col-lg-2 col-sm-12 col-lg-offset-5 centrado">

<a href="index1.php"> <button type="button" class="btn btn-default espacio ">
Volver</button></a>

</div>






<?php
$code = $_POST['ean'];
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "codigobarras";
// Create connection
$conn= mysql_connect("localhost","root","root");
//seleccionamos bbdd
mysql_select_db("codigobarras");

$result_set= mysql_query("SELECT * FROM productos WHERE $code = ean ");
$num_descripciones = mysql_num_rows($result_set);
echo "<p class='text-center'>El ean es: ". $code ."</p>";




$cantidad = $_POST['cantidad'];

echo "la cantidad es " .$cantidad;


// AQUI ES ESTÁ LA $code que si la canbio por un valor fijo me guarda en tabla bbdd
mysql_query("UPDATE productos SET cantidad = $cantidad WHERE ean = $code ");


while($row = mysql_fetch_assoc($result_set ) ) {

$descripcion = $row['descripcion'];
$nombre = $row['nombreproducto'];
$ean = $row['ean'];
$cantidadActualizada = $row['cantidad'];




echo
"<table class='table table-striped '>
<tr>
<tr>

<th>Nombre del producto</th>
<th>Descripcion</th>
<th>EAN</th>
<th>Cantidad</th>
</tr>

<td class='text-left'>".$nombre."</td>
<td class='text-left'>".$descripcion."</td>
<td class='text-left'>".$ean."</td>

<td class='text-left'>

<form action='stock.php' id ='myForm' method='post'>
<input type='text' name='cantidad' placeholder='Cantidad'></td>

<td class='text-left'><button type='submit' class='btn btn-primary'>Guardar</button>

</form>

</td>
</tr>
</table>";
}


?>

</body>
</html>
  #2 (permalink)  
Antiguo 11/05/2015, 05:21
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Respuesta: No me cambia el dato en la tabla con Update

Hola,
¿Qué tipo de campo es ean en la tabla?
¿Has visto el log de la consulta? ¿Cuál es el error que te da?
__________________
Los ignorantes se empeñan en enseñar. Los sabios en aprender.
SourceForge
  #3 (permalink)  
Antiguo 11/05/2015, 06:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No me cambia el dato en la tabla con Update

Consejo básico:
1) No pongas la query directamente en la función. Usa una variable, para que puedas hacer un correcto debuggeo en el desarrollo.
2) Usa siemrpe el ord die(), o alguna forma de verificación de errores. S no capturas los erroes, jamás sabrás qué pasa.
3) Ten en cuenta que el SQL tiene sus propias reglas, por lo que hay que tener cuidado en cómo queda construida la consulta.
Código PHP:
Ver original
  1. $qry = "UPDATE productos SET cantidad = $cantidad WHERE ean = $code";
  2. // Siempre es buena idea visualizar las consultas que se crean, cuando estás desarrollando.
  3. // Aunque parezca bien escrita, es posible que haya errores de datos
  4. // que no están visibles al momento de codificar (son dinámicos)
  5. echo $qry;
  6.  
  7. $result = mysql_query($qry) or die("Error al ejecutar el UPDATE: ".mysql_error());
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 11/05/2015, 06:25
 
Fecha de Ingreso: mayo-2015
Mensajes: 4
Antigüedad: 8 años, 11 meses
Puntos: 0
Respuesta: No me cambia el dato en la tabla con Update

Hola ,buenas tardes.

El campo ean es un campo de una tabla de mysql.

No me da error.

Simplemente no me guarda el dato en bbdd.

¿Se puede utilizar la variable utilizada de un post para hacer una consulta o update a bbdd?

gracias.
  #5 (permalink)  
Antiguo 11/05/2015, 06:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No me cambia el dato en la tabla con Update

OK. ¿Hicsste la prueba que te sugiero? ¿Ejecutaste un "echo" que te permita ver qué quedo armado en esa query?
¿Verificaste que se haya ejecutado algo?
¿Comprobaste que MySQL haya modificado algo, o devuelto un warning?

Hay muchos pasos de verificación incompletos en lo que nos describes.

Comienza con esta parte:
Código PHP:
Ver original
  1. $qry = "UPDATE productos SET cantidad = $cantidad WHERE ean = $code";
  2. // Siempre es buena idea visualizar las consultas que se crean, cuando estás desarrollando.
  3. // Aunque parezca bien escrita, es posible que haya errores de datos
  4. // que no están visibles al momento de codificar (son dinámicos)
  5. echo $qry;
luego posteanos aquí la consulta que se visualiza en pantalla, para que podamos ver cómo quedo y qué es lo que MySQL en realidad está recibiendo..
No supongas que porque está aparentemnte bien escrita con sus variables, en realidad esté quedando armada correctamente.
Bien podría suceder que lo que tu supones que las variables tienen no cumpla con lo que se necesite.

Te sorprendería la cantidad de veces que el problema está en los datos, y no en el código.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 11/05/2015, 07:26
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Respuesta: No me cambia el dato en la tabla con Update

Ya me imagino que es un campo de la tabla, pregunto de qué tipo (int, varchar,...) más que nada por si le faltaban las comillas a la consulta. Por el resto estoy de acuerdo con el compañero que te respondió.
__________________
Los ignorantes se empeñan en enseñar. Los sabios en aprender.
SourceForge
  #7 (permalink)  
Antiguo 11/05/2015, 08:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No me cambia el dato en la tabla con Update

@75aloper: Precisamente la idea de pedirte el echo de la query es para ver con qué tipo de dato estás comparando ese EAN, ya que dependiendo de si el campo es VARCHAR o INT, la forma en que el dato debe quedar en la query es diferente.

Si, por ejemplo, el código contuviese ceros a la izquierda, deberá ser comparado como cadena de texto, y almacenado en un VARCHAR. Y la sintaxis no es exactamente la misma...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql+consulta
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 03:00.