Construccion dinámica de campo de texto

Necesito ayuda porque quiero construir de manera dinámica unos inputs text en php es decir tengo un cuadro de texto donde ingreso un numero por ejemplo el 2 y al presionar el botón enviar en la siguiente página me muestre 2 input text e tratad de hacerlo con while o for ero se me queda en un bucle infinito

3 Respuestas

Respuesta

Este ejemplo te puede servir: Tengo la tabla user, a la cual deseo modificar algún campo de manera dinámica.

La tabla:

CREATE TABLE IF NOT EXISTS `user` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`nombre` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
`empresa` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
`nit` varchar(50) COLLATE utf8_spanish_ci NOT NULL,
`celular` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
`email` varchar(255) COLLATE utf8_spanish_ci NOT NULL,
`ciudad` varchar(50) COLLATE utf8_spanish_ci NOT NULL,
`fecha` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
`vence` varchar(30) COLLATE utf8_spanish_ci NOT NULL,
`vendedor` varchar(100) COLLATE utf8_spanish_ci NOT NULL,
`activo` varchar(1) COLLATE utf8_spanish_ci NOT NULL,
`veces` int(11) NOT NULL,
`username` varchar(100) COLLATE utf8_spanish_ci NOT NULL,
`password` varchar(100) COLLATE utf8_spanish_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=1 ;

ahora: voy a crear una consulta dinámica para editar los campos de la tabla

<table width="100%" border="0">
<tr>
<td width="9%"><h3>Fecha</h3></td>
<td width="36%"><h3>Nombre</h3></td>
<td width="15%"><h3>Celular</h3></td>
<td width="27%"><h3>Ciudad</h3></td>
<td width="13%"><h3>Veces</h3></td>
</tr><p>

<?php
include('../Connections/coneccion recorrer datos.php');
$squery = "SELECT * FROM user WHERE id = '$id'";
$iquery=mysql_query($squery,$ilink);
if ($iquery>0) {
$irow=0;
$ilastrow=mysql_num_rows($iquery);
while ($irow<$ilastrow) {
$fecha=mysql_result($iquery,$irow,(fecha));
$id=mysql_result($iquery,$irow,(id));
$nombre=mysql_result($iquery,$irow,(nombre));
$celular=mysql_result($iquery,$irow,(celular));
$ciudad=mysql_result($iquery,$irow,(ciudad));
$veces=mysql_result($iquery,$irow,(veces));
echo "<tr>
<td>$fecha&nbsp;</td>
<td> <a href='Editar Usuario.php?id=$id'>$nombre</<> </td>
<td>$celular&nbsp;</td>
<td>$ciudad&nbsp;</td>
<td>$veces&nbsp;</td>
</tr>";

$irow++;
}
}

?>
</table>

La variable $id que me identifica el usuario es llevada al script: Editar Usuario.php

allí la recupero: $id = htmlspecialchars($_GET["id"]);

hago la consulta sobre la tabla user WHERE id = '$id'

Y en un formulario, llevo el campo de texto que deseo editar...

espero te sirva... me cuentas...

SiREZ

Respuesta
1

Copiame tu código y te ayudo a salir del bucle infinito.

ok fijate aqui ya no tengo el bucle infinito pero no hace lo que realmente quiero ve el codigo 

en este paso el valor del campo valor1

<?php
echo '<form action="prueba2.php" method="POST"><input type="text" value="" name="valor1" id="valor1">';
echo '<input type="submit" value="Enviar" name="Enviar" id="enviar"></form>';

?>

aqui recibo el valor y lo que quiero es mostrar el mismo numero de input que recibo en el valor es decir si recibo el valor 2 quiero mostrar dos campos de tecto nada mas pero lo que hace es mostrarme es mas campos este es el codigo

<?php
$valor1=$valor1;
//echo $valor1;
while ($valor1 < 10){
echo '<input type="text" value="" name="text1" id="text1">';
$valor1++;
}
?>

Te aconsejo si vas a empezar en php, trates de no tomar malas prácticas desde el principio. Lo ideal, y regla de oro, no mezcles html con php. Entender que son lenguajes diferentes y que pueden interactuar cuando se necesitan unos a otros, pero evitar cosas como el "echo" de todo un formulario.

Aca va como resolverlo:

Pagina1.php

<form action="pagina2.php" method="POST">

     <input type="text" name="valor1" />
     <input type="submit" value="Enviar" />
</form>

pagina2.php

<form action="pagina2.php" method="POST">

<?php

//esto es php. 
$cant_inputs = $_POST['valor1'];  //recibo el numero introducidoen pagina1
$nro_input = '1'; //doy un valor 1 para ir nombrando los inputs a crear

//La condicion es que se repita el bucle siempre y cuando el numero ingresado en pagina1 sea mayor a cero.
while($cant_inputs > 0){

//Hago un echo del input y pongo en su name la palabra valor concatenada a la variable nro.
echo "<input type='text' name='valor".$nro_input."' /> </br>";
$nro_input++;  //incremento en 1 el nro.
$cant_inputs--; //resto 1 a la cantidad. Cuando llegue a 0 saldrá del bucle while.
}

//salgo de php, ya no se necesita mas. Sigo en html.
?>
<input type="submit" value="Enviar" />
</form>

Buenas te molesto de nuevo haber si me puedes aclarar esta duda estoy guardando unos campos en mi bd usando php y jquery guarda bien el primer registro el detalle esta cuando son varios registro lo que hace es repetirme el mismo registro tres veces aqui te envio el codigo

<script type="text/javascript" src="jquery.js"></script>

<script>
function realizaProceso(equipo1, marcador1, marcador2, equipo2, usuario){

var parametros = {
"equipo1" : equipo1,
"marcador1" : marcador1,
"equipo2" : equipo2,
"marcador2" : marcador2,
"usuario" : usuario,

};

$.ajax({

data: parametros,

url: 'g_pronostico.php',

type: 'post',

beforeSend: function () {

$("#resultado").html("Procesando, espere por favor...");

},

success: function (response) {

$("#resultado").html(response);
;
}
});

}
</script>

<?php
include ('conexion.php');
$sql = "SELECT * FROM partidos ";

$result = mysql_query ($sql);


if (! $result){
echo "La consulta SQL contiene errores.".mysql_error();
exit();
}else {
echo "<table width=\"1000\" border=\"0\" align=\"center\">";


//obtenemos los datos resultado de la consulta
while ($row = mysql_fetch_row($result)){
echo"<tr bgclor=\"#eeeeee\">\n";
echo"<td align=\"center\"><input type=\"text\" value=\"$row[1]\" name=\"equipo1\" id=\"equipo1\" readonly=\"readonly\"></td>\n";
echo"<td align=\"center\"><input type=\"text\" value=\"\" name=\"marcador1\" id=\"marcador1\" size=\"1\"></td>\n";
echo"<td align=\"center\"><input type=\"text\" value=\"\" name=\"marcador2\" id=\"marcador2\" size=\"1\"></td>\n";
echo"<td align=\"center\"><input type=\"text\" value=\"$row[2]\" name=\"equipo2\" id=\"equipo2\" readonly=\"readonly\"></td>\n";
echo"<td align=\"center\"><input type=\"text\" value=\"\" name=\"usuario\" id=\"usuario\"></td>\n";
echo "<td align=\"center\"><input type=\"button\" href=\"javascript:;\" onClick=\"realizaProceso($('#equipo1').val(),$('#marcador1').val(),$('#marcador2').val(),$('#equipo2').val(),$('#usuario').val());return false;\" value=\"Consultar\"</td>\n";

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


?>

<span id="resultado"></span>

y aqui el codigo para guardar el registro

<?php
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////LLAMAMOS EL ARCHIVO DE CONEXIÓN///////////////////////////////////
include ("conexion.php");

$equipo1=$_POST[equipo1];
$marcador1=$_POST[marcador1];
$marcador2=$_POST[marcador2];
$equipo2=$_POST[equipo2];
$usuario=$_POST[usuario];

mysql_query("insert into pronostico(equipo1,marcador1,marcador2,equipo2,usuario) values ('$equipo1','$marcador1','$marcador2','$equipo2','$usuario')");

?>

Está medio complejo tu código para leerlo. Comentame qué es lo que necesitás lograr, de la forma más simple posible. Recordá lo que te comenté en la respuesta anterior, tratá de evitar por todos los medios de mezclar HTML adentro de "echo" en php.

¿Necesitás hacerlo si o si con jquery?

Slds

Respuesta
1

Puedes hacer con javascript y jquery.

http://jsfiddle.net/jaredwilli/tZPg4/4/ 

Lo ideal es que plantearas que problema quieres resolver. 

Saludos y gracias por visitar: http://develoteca.com y suscribirte a : https://www.youtube.com/user/dimit28/ 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas