Foros del Web » Programando para Internet » PHP »

¿Cómo se hace esto en PHP?

Estas en el tema de ¿Cómo se hace esto en PHP? en el foro de PHP en Foros del Web. Hola a todos!! Verán, tengo un problema que no había tenido la menor idea de cómo resolverlo hasta que en una pagina web vi la ...
  #1 (permalink)  
Antiguo 06/02/2009, 08:08
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 11 años, 4 meses
Puntos: 1
Pregunta ¿Cómo se hace esto en PHP?

Hola a todos!!

Verán, tengo un problema que no había tenido la menor idea de cómo resolverlo hasta que en una pagina web vi la posible solución mas no sé como aplicarlo en PHP...


En un formulario tengo 2 campos de texto, uno para USERNAME y otro para RESULTADO

Bien, sucede que el numero de usuarios y sus resultados pueden variar... digamos esta semana hay 5 y la otra solo 2...

Entonces...


Yo vi en una pagina web para agregar listas que antes preguntaba "¿CUANTOS PRODUCTOS VAS A DECLARAR?" y en un campo de texto restringido solo para escribir números ponías por ejemplo "10" y le dabas continuar.

Después, en la siguiente pagina salía un formulario con 10 filas, así:

PRODUCTO 1: (CAMPO DE TEXTO)
PRODUCTO 2: (CAMPO DE TEXTO)
PRODUCTO 3: (CAMPO DE TEXTO)

etc etc etc...


Mi pregunta es, ¿Cómo podría yo hacer algo similar tomando en cuenta que la cantidad de registros que pido actualizar sean recibidas por un $_POST en PHP y además actualice en la base de datos esos usuarios?


Yo actualmente uso el método de uno por uno pero es algo trabajoso... ...
  #2 (permalink)  
Antiguo 06/02/2009, 10:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: ¿Cómo se hace esto en PHP?

Hola yugaee,

Lee esto: http://www.php.net/variables.external

Lo que haces es primero con un for() dibujas tus cuadros de texto, asegurate de nombrarlos como un array:
Código html:
Ver original
  1. <input type="text" name="productos[]" />
  2. <input type="text" name="productos[]" />
  3. <input type="text" name="productos[]" />
  4. <input type="text" name="productos[]" />
  5. <input type="text" name="productos[]" />
  6. <input type="text" name="productos[]" />

Luego en PHP:
Código php:
Ver original
  1. foreach( $_POST['productos'] as $producto ) {
  2.          echo $producto . '<br />';
  3. }

Saludos
  #3 (permalink)  
Antiguo 06/02/2009, 10:13
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 16 años, 2 meses
Puntos: 4
Respuesta: ¿Cómo se hace esto en PHP?

¿A qué te refieres con "arreglar listas"?

Creo que te estas respondiendo tú mismo.

Lo que has de hacer es un formualrio con el campo de texto donde tendrán que introducir el número en cuestión y que le den a un botón de tipo SUBMIT. Este botón llevará a un archivo PHP que cogerá el $_POST, mirará el valor del campo de texto del número y escribirá, en un formulario, el número de campos de tipo TEXT que has recogido en la variable de $_POST.

Si te entendí bien, creo que eso lo que deberías hacer.
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #4 (permalink)  
Antiguo 06/02/2009, 10:38
 
Fecha de Ingreso: diciembre-2006
Ubicación: Miami
Mensajes: 55
Antigüedad: 13 años
Puntos: 0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
Agregar
<select name="item" id="item">
<option value="5" <?php if (!(strcmp(5, $_POST['item']))) {echo "selected=\"selected\"";} ?>>5</option>
<option value="10" <?php if (!(strcmp(10, $_POST['item']))) {echo "selected=\"selected\"";} ?>>10</option>
<option value="20" <?php if (!(strcmp(20, $_POST['item']))) {echo "selected=\"selected\"";} ?>>20</option>
</select>
Productos
<input type="submit" name="button" id="button" value="Submit" />
</form>

<table width="24%">
<?php $id = 1; $i = 1; while ($i <= $_POST['item'] ){ ?>
<tr>
<td width="35%">Producto <?php echo $id; ?></td>
<td width="32%"><input name="nombre<?php echo $id; ?>" type="text" id="nombre<?php echo $id; ?>" size="10" /></td>
<td width="16%">Precio </td>
<td width="17%"><input name="precio<?php echo $id; ?>" type="text" id="precio<?php echo $id; ?>" size="5" /></td>
</tr>
<?php $i = $i + 1; $id = $id + 1;}?>
</table>

</body>
</html>

Espero te sirva loa cabo de hacer

Última edición por GatorV; 06/02/2009 a las 12:17
  #5 (permalink)  
Antiguo 06/02/2009, 11:28
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo se hace esto en PHP?

Cita:
Iniciado por santuariosw Ver Mensaje
Espero te sirva loa cabo de hacer

Muchas gracias por la ayuda santuario;

bueno, mi problema en sí, ahora es que dependiendo la cantidad de filas existentes haga un UPDATE para cada una de ellas.

Miren, este es el Código de mi PHP realizado, con ayuda del post de santuario:

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="">
Agregar

<input name="item" id="item" type="text" size="10" />
Usuarios
<input type="submit" name="Cantidad" id="Cantidad" value="Cantidad" />


<table width="24%">
<?php $id 1$i 1; while ($i <= $_POST['item'] ){ ?>
<tr><td width="35%">Usuario <?php echo $id?></td>
<td width="32%"><input name="username<?php echo $id?>" type="text" id="nombre<?php echo $id?>" size="10" /></td>
<td width="16%">Puntos </td>
<td width="17%"><input name="pts<?php echo $id?>" type="text" id="precio<?php echo $id?>" size="5" /></td>
</tr>
<?php $i $i 1$id $id 1;}

if(
$_POST['Cantidad'])
{
echo 
'<input type="submit" name="Agregar" id="Agregar" value="Agregar" />';
}

if(
$_POST['Agregar'])
{
//AQUI SOLICITO QUE MYSQL ACTUALICE TODOS LOS REGISTROS.

$usuario1=$_POST['username1']; //SUPONGAMOS QUE QUISE PONER SOLO 1 USUARIO
$pts1=$_POST['username1']; //CAMPO DE PUNTOS DEL FORMULARIO PARA USUARIO #1

mysql_query("UPDATE miembros SET puntos='$pts1' WHERE username='$usuario1'") or die("Hubo un error Actualizando los puntos.");
echo 
"Vale, se actualizó todo bien.";
exit;
}

?>


</form>
</table>

</body>
</html>

Muy bien, hasta aquí yo escribo por ejemplo el #13 y le doy click en el boton CANTIDAD, eso hace que se inserten las filas escritas, y se active (por medio de un echo) el boton AGREGAR.

Ahora, supongamos que quisimos solo 1 fila, lo que crea los cambos de texto:

username1
pts1

Y ahora en base a cuando se apriete el boton agregar debería actualizar en el MySQL los datos del usuario 1 con el update que hice.


Bueno, la cosa es que el update que puse solo obtiene el $_POST del username1 y pts1, pero ¿cómo podría hacer que se agregue 1 update por cada fila insertada en forma secuencial?

es decir, por ejemplo, selecciono la cantidad: 3, y entonces al apretar el boton AGREGAR en la parte donde debe actualizar haga algo similar a esto:

Código PHP:
if($_POST['Agregar'])
{

//AQUI SOLICITO QUE MYSQL ACTUALICE TODOS LOS REGISTROS.


$usuario1=$_POST['username1'];
$pts1=$_POST['username1'];

$usuario2=$_POST['username2'];
$pts2=$_POST['username2'];

$usuario3=$_POST['username3'];
$pts3=$_POST['username3'];

mysql_query("UPDATE miembros SET puntos='$pts1' WHERE username='$usuario1'") or die("Hubo un error Actualizando los puntos.");

mysql_query("UPDATE miembros SET puntos='$pts2' WHERE username='$usuario2'") or die("Hubo un error Actualizando los puntos.");

mysql_query("UPDATE miembros SET puntos='$pts3' WHERE username='$usuario3'") or die("Hubo un error Actualizando los puntos.");

echo 
"Vale, se actualizó todo bien.";
exit;} 

Desde ya muchas gracias por el apoyo.
  #6 (permalink)  
Antiguo 06/02/2009, 12:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: ¿Cómo se hace esto en PHP?

Si lees el post que te deje, puedes hacerlo sencillamente.

Saludos
  #7 (permalink)  
Antiguo 06/02/2009, 12:36
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: ¿Cómo se hace esto en PHP?

Cita:
Iniciado por GatorV Ver Mensaje
Si lees el post que te deje, puedes hacerlo sencillamente.

Saludos
Amigo Gato;

Gracias por tu post, pero soy tan novato en esto que no sé de que me hablas, creeme que entré a la página que me indicaste pero para ser honesto no entendí absolutamente nada porque hay tantos ejemplos o supongo así que no tienen que ver con lo que busco...


Ok, sé que documentarse es importante, pero el post de Santuario resultó ser más sencillo de comprender para mi que lo que me pones, porque no tengo ni idea donde deba poner las instrucciones que me has colocado
  #8 (permalink)  
Antiguo 06/02/2009, 18:38
 
Fecha de Ingreso: agosto-2008
Mensajes: 52
Antigüedad: 11 años, 4 meses
Puntos: 1
Sonrisa Respuesta: ¿Cómo se hace esto en PHP?

Pues después de varias horas combinando mis ideas, se me ocurrio repetir lo que santuario me posteo, pero ahora aplicandolo para el update y me ha resultado satisfactoriamente:


Código PHP:
if($_POST['Update'])
{

//AQUI SOLICITO QUE MYSQL ACTUALICE TODOS LOS REGISTROS.

require_once('conexion.php'); 
mysql_select_db($database_conexion$conexion);

$id 1;
$i 1;
while (
$i <= $_POST['numero']){

$usuario=$_POST['username'.$id.''];
$pts=$_POST['pts'.$id.''];

mysql_query("UPDATE miembros SET top10='$pts' WHERE username='$usuario'") or die("Hubo un error Actualizando los puntos del usuario $id.");

echo 
"Los puntos de $usuario fueron actualizados a $pts<br>";

$i $i 1$id $id 1;}
echo 
"<br><br>Vale, Todo se actualizó bien.";
exit;

De esta forma se hará un update por cada fila insertada anteriormente, y sin problema se toman los datos posteados en las filas sin importar cuantas sean (1, 2, muchas),


Muchas gracias a todos por la ayuda, en especial a la solución que santuario me ha ofrecido en su post :)
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 22:28.