Foros del Web » Programando para Internet » PHP »

Problema para actualizar registros restando cantidades

Estas en el tema de Problema para actualizar registros restando cantidades en el foro de PHP en Foros del Web. Hola a todos de nuevo! Sigo liado con php, y sigo necesitando un cable He visto un post en el que se habla de actualizar ...
  #1 (permalink)  
Antiguo 28/09/2005, 03:55
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
Problema para actualizar registros restando cantidades

Hola a todos de nuevo!

Sigo liado con php, y sigo necesitando un cable

He visto un post en el que se habla de actualizar varios registros. Pero no me soluciona el problema.

Estoy listando en una tabla los registros, con checkbox. Además de seleccionar un determinado registro, he introducido un <input text> en el que se introduce una determinada cantidad.

Lo que pretendo es actualizar los registros seleccionados restándoles a la cantidad que tiene guardada la base de datos la cantidad introducida en el <input text>

El problema que tengo es que no sé cómo obtener las variables para poder hacer una consulta sql.

Aquí está el código

script1.php
Código PHP:
 while ($row=mysql_fetch_array($result)) {

printf("<tr>
         <td>%d</td>
         <td>%s</td>
         <td><input type=\"text\" name=\"cantdes[]\" maxlength=\"3\" size=\"2"
></td>
         <
td><input type="checkbox\" name=\"seleccion[]\" value=\"%d\"></td></tr>",$row["numeros"],$row["cantidad"],$row["ID"]);
}
echo 
"<br>";
echo 
"<input type=\"submit\">";
echo 
"</form>"
¿Cómo debo recibir las variables para poder realizar la resta y hacer una consulta similar que actualice todos los registros?
Código PHP:
$cantnew=$row[cantidad]-$cantdes[];
UPDATE tabla SET cantidad='$cantnew' WHERE ID=$idr 

He visto que se utiliza foreach, pero lo máximo que consigo con él es obtener dos listados, por un lado los ID y por otro las cantidades introducidas.

Gracias de antemano por vuestra ayuda

PD.: ¿Algún manual o web recomendados con ejemplos prácticos o ejercicios sobre este tema y php-mysql en general? Hasta ahora los que he visto sirven para tener una idea general de cómo funciona todo, con ejempplos muy simples.
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
  #2 (permalink)  
Antiguo 28/09/2005, 08:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tal cual lo haces .. desde tu formulario generas un par de arrays de mismo indices.

Pero .. a tu input del checkbox .. asingale por ejemplo el ID que corresponde de tu BD:

Código PHP:
echo "<input type=\"text\" name=\"cantdes[]\" maxlength=\"3\" size=\"2">"; 
Código PHP:
echo "<input type=\"checkbox\" name=\"seleccion[]\" value=\"".$row['ID']."">"; 

Debes recorrer bajo un bucle for() esos dos arrays en paralelo:

Código PHP:
for ($i=0$i <= count ($_POST['seleccion']); $i++){
$sql="UPDATE tabla SET cantidad=cantidad-'".$_POST['cantdes'][$i]."' WHERE ID='".$_POST['seleccion'][$i]."'"
// ejecuta tu consulta $sql ...

Y así si tuvieras más "array's" paralelos generados ... Se cuentan los elementos de uno de ellos (se suponen que todos tienen el mismo tamaño) y de ahí lo recorres con el bucle aplicando el mismo indice a todos.

Por cierto .. no es necesario que hagas una consulta SQL para obtener el valor de un campo para luego operar con el en un "Update" .. puedes usar la sintax SQL que te propongo: campo=campo+$valor


Un saludo,

Última edición por Cluster; 28/09/2005 a las 09:13
  #3 (permalink)  
Antiguo 28/09/2005, 08:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
PD.: ¿Algún manual o web recomendados con ejemplos prácticos o ejercicios sobre este tema y php-mysql en general? Hasta ahora los que he visto sirven para tener una idea general de cómo funciona todo, con ejempplos muy simples.
Lo mejor es tomar bien la base de todo esto .. Es decir .. si trabajas con Base de datos .. manuales de SQL (como los que puedes ver en: www.mysql-hispano.com) ahí veras todas las posibilidades de SQL .. luego es aplicarlo a tu caso.

El tema de la interactividad PHP->Mysql .. es cosa de ver las funciones de Mysql al respecto: www.php.net/mysql y leer mucho los comentarios de los usuarios (suelen indicar alternativas, mejoras .. y demás comentarios)

Por mi parte te recomiendo siempre leer mucha teoría .. con eso comprenderas o podrás asimilar mejor que necesitas en cada caso e incluso detectar problemas .. que la mayoría son por ese desconicimiento.

Lo otro que puedes hacer es buscar libros (impresos, PDF) sobre PHP/mysql .. son más completos y mucho más didacticos que un pequeño manual en línea.

Un saludo,
  #4 (permalink)  
Antiguo 28/09/2005, 09:08
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
De acuerdo gracias por la respuesta

Gracias Cluster. Seguiré tu consejo

Saludos!
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
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

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 03:02.