¿Como insertar varios valores en un campo de una tabla?

480 views
Skip to first unread message

Alexander Andrade

unread,
Jan 8, 2013, 9:12:17 AM1/8/13
to comuni...@googlegroups.com
Hola a todos, nuevamente me encuentro con algunas dudas, y aprovecho de agradecer a quienes me ayudar con mi duda el día de ayer

Lo que no se como hacer es:

En la BD tengo una tabla llamada "tab_recuperacion" en donde tengo un campo llamado "cursos"
En el formulario tengo la opciones en donde debe permitir ingresar un "cursos" con los siguientes datos : nombre_curso, fecha_recuperacion y hora_recuperacion
En la opcion "cursos" debe poder permitir ingresar hasta 10 cursos (nose como hacer esto, quizas con un boton o algo)...

Como ven, necesito guardar los 3 valores de nombre, fecha y hora en el campo "cursos" y estos pueden ser hasta 10 segun lo cree el usuario...

Quizas debo crear otra tabla llamada "tab_cursos" y enviarles los 3 datos, pero como hago esto ¿con la id_recuperacion? de la tabla recuperacion y en el mismo formulario?

Quizas estoy errado en mi lógica, estoy aprendiendo y aun no me manejo todos los conceptos, gracias!

Jorge Andrés Vergara Ebratt

unread,
Jan 8, 2013, 9:22:05 AM1/8/13
to comuni...@googlegroups.com

Crea una tabla de cursos con los datos que necesites y los relacionas con la otra por medio del Id si usas un asistente de diseño de BD como MySQL Workbench creas la relación 1 a muchos con un click :)

--
--
Has recibido este mensaje porque estás suscrito a
Grupo "ComunidadPHP" de Grupos de Google.
Si quieres publicar en este grupo, envía un mensaje de correo
electrónico a programad...@googlegroups.com
Para anular la suscripción a este grupo, envía un mensaje a
programadoresde...@googlegroups.com
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/programadoresdephp?hl=es.
 
 

René Jesús Ponce Piña

unread,
Jan 8, 2013, 11:25:58 AM1/8/13
to comuni...@googlegroups.com
Hola en cuanto a como estas aplicando tu lógica pues si te funciona adelante, yo haría algo distinto en la tabla tab_recuperacion guardaría el id del usuario que esta insertando el curso y antes de cada inserción ejecutar una función que me haga un select count en la base de datos y si el resultado es igual a 10 le muestre un mensaje al usuario de que ya alcanzo el máximo de inserciones permitidas, obvio en tu función donde haces el select count debes de ponerle como condicionante el id del usuario.

Espero poder ayudarte con mi comentario, es un problema que puedes atacar de diferentes maneras te dejo mi correo por si te puedo ayudar en algo mas.

Angel Falconi Reyes

unread,
Jan 8, 2013, 12:00:26 PM1/8/13
to comuni...@googlegroups.com
Creo que el problema esta en la normalización de tu BD, cuando tienes una entidad lo traduces a una tabla y los componentes que forman a la entidad son los atributos, si un atributo es divisible en una cantidad mayor de atributos lo mas seguro es que este no sea un atributo si no que se trate de una entidad, lo cual indicaría que tu atributo "curso" mas bien es una entidad y lo mas conveniente seria convertirlo en una tabla y que sus atributos sean nombre_curso, fecha_recuperacion y hora_recuperacion, a esto añadiría una columna que sirva como identificador (por ej. una columna llamada "Id") y asignes esta como llave primaria (PRIMARY KEY) y a la tabla  "tab_recuperacion" utilizar el campo curso para guardar la llave foránea (foreign key), que haga referencia a tu tabla "curso".

te adjunto unos articulos de MySQL Refence Manual ojala te sea de ayuda.


Alexander Andrade

unread,
Jan 8, 2013, 2:17:00 PM1/8/13
to comuni...@googlegroups.com
Angelus : totalmente de acuerdo contigo, lo que pasa es que hace unas semanas atras cuando se diseñe la BD supuestamente solo se insertaría el nombre del curso, ahora cambio a que en el mismo formulario para registrar la recuperacion se puedan ingresar más de un curso...Lo de la BD lo estoy haciendo ahora, pero mi complicación ahora va del lado del formulario (datos dinamicos) como hacer esta parte, creo que seria con javascript pero no he usado este lenguaje antes...

Por ejemplo  3 texbox (nombre_curso, fecha_recuperacion y hora_recuperacion) y tenga un boton que diga "crear nuevo" y se deplegue otra linea para agregar nuevos datos ...si se ingresan 2 cursos ya tendriamos 6 valores en total... :(

Muchas gracias por tu ayuda!

Ernesto Spiro Peimbert Andreakis

unread,
Jan 8, 2013, 3:31:26 PM1/8/13
to comuni...@googlegroups.com
Si el requerimiento se debe a un requerimiento nuevo del cliente porque no lo contempló al inicio debes informarle que el tiempo de entrega se extendió, hay necesidad de análisis y programación adicional y eso puede incrementar tu costo (sobre todo si cobras por hora); si por el contrario fue a causa de una mala interpretación de los requerimientos pues habrá que meterle velocidad y restar horas de sueño.

La mejor práctica es normalizar las bases de datos, así si en un futuro quieres agregar más datos será más sencillo.
La lógica del lado del cliente usando javascript es buena por usabilidad y la facilidad de indicarle al usuario que no puede o debe hacer algo, si tu usuario no tiene habilitado javascript (un hacker o un cracker) puede brincarse esta condición y crearte problemas. Esa lógica debería ir en el cliente (javascript) y el servidor (PHP) cuando menos, pero no estaría mal agregarla a tu BD también.

Hacerlo con javascript no es muy complicado, te recomendaría utilizar algún framework como jquery, mootools, etc. pues hay mucha documentación, son muy estables y compatibles con la gran mayoría de los navegadores. Javascript es parecido a Actionscript o java, si has utilizado esos lenguajes con anterioridad vas de gane. Si no tienes ni la menor idea entonces visita:


Ahí puedes empezar a aprender el lenguaje.
Para ver cómo se crean campos dinámicamente:


Espero te sea de ayuda.

Saludos y buen día
Message has been deleted

Angelus

unread,
Jan 8, 2013, 8:50:43 PM1/8/13
to comuni...@googlegroups.com
En efecto tendrías que utilizar javascript o algun otro lenguaje que te permitiera ejecutar instrucciones a nivel cliente, ya que Php únicamente se ejecuta a nivel servidor, si no quieres hacer esto, una opción viable sera predefinir el numero de cursos que se van a ingresar, algo así como una venta que que pida previamente la cantidad de cursos (ejemplo la ventana con el texto "Indique el numero de cusos que desea ingresar") en esta ventana añadir un formulario que mande la cantidad designada en <input type="text"> y en otra parte del código ciclarlo con un While por ejemplo, en el while asignarías dinámicamente name's de los campos que se escribirían en el siguiente formulario, y tendrás que pasar los parámetros con su contador respectivo para que en el momento de hacer la inserción de la base de datos te reconozca los post  que enviaste a la insercion en cado de que hayas usado este metodo para enviar en el formulario.


algo mas o menos así

formulario 1:
form1.php
<?// el echo de php no es necesario puedes hacer lo con html puro
echo'
<form  action="form2.php" method="post">
  <table>
     <tr>
      <td><label>"Indique el numero de cusos que desea ingresar"</label></td>
      <td><input type="text" name="num"/></td>
    </tr>
    <tr>
      <td><input type="submit"/></td>
    </tr>' ;
?>

Formulario 2
form2.php

<form action="insertar.php" method="post">

<tr>
  <td>Nombre</td>
  <td>Fecha</td>
  <td>Hora</td>
</tr>
<?
$i=1;
while ($_POST[num] >= $i){

echo'
<tr>
  <td><input type="text" name="nombre'.$i.'"/></td>// en esta parte el name de este input text se le asigna un nombre dinamicamente
  <td><input type="text" name="fecha'.$i.'"/></td>
  <td><input type="text" name="hora'.$i.'"/></td>
</tr>
$i++;
}
<input type="hidden" name="num" value="'.$_POST[num].'"/>
<input type="submit">
</form>
?>

Insertar
Insertar.php

<?

include("conecta.php");//Lamas a tu script de conxion
$conn = My_CDB();
mysql_select_db("MY_DB",$conn);

$i=1;
while ($_POST['num'] >= $j ){

                                $nombre='nombre'.$i];
                                $fecha='fecha'.$i;
                                $hora='hora'.$i;
$insert_values = $insert_values."( '".$_POST[$nombre]."',
'".$_POST[$fecha]."'
'".$_POST[hora]."'),";
$j++;
}
$sql="insert into curso(nombre_curso, fecha_recuperacion,  hora_recuperacion) values ".$insert_values.";"
$rs = mysql_query($sql);

if($rs){
echo"'El registro se guardo correctamente'";
}
else{
echo"Ocurrio un error al guardar la informacion, favor de intentaro nuevamente'";

?>

</form>


Cualquier duda cometamelo Espero te se a de ayuda


On Tuesday, January 8, 2013 1:17:00 PM UTC-6, Alexander Andrade wrote:

Alexander Andrade

unread,
Jan 8, 2013, 9:06:46 PM1/8/13
to comuni...@googlegroups.com
Ernesto, genial respuesta y sobre el proyecto no es pagado, es mi práctica profesional, por eso me han tenido de esta forma tan irregular, he tenido que construir practicamente hasta los requerimientos yo mismo...hasta ahora logre crear los datos en el formulario y estoy en la tarea de guardar los datos, ...aprovecho de consultarte sobre Jquery ya que lo nombras...

Para las campos de fechas he utilizado el datapicker, todo bien hasta ahi, pero lo típico y ya ultra comentado (lo habia escuchado, pero ahora recien me toco hacerlo) el guardar la fecha del datapicker en mysql, me guarda en el formato 0000-00-00....se que tengo que crear una funcion pero llevo apenas 1 mes aprendiendo php y aun me cuesta bastante..

Saludos, y gracias por tu ayuda

Ernesto Spiro Peimbert Andreakis

unread,
Jan 8, 2013, 9:48:52 PM1/8/13
to comuni...@googlegroups.com
Ok, ¿podrías ampliar un poco tu pregunta? No entiendo qué problema tienes con el datepicker.

Alexander Andrade

unread,
Jan 8, 2013, 10:02:18 PM1/8/13
to comuni...@googlegroups.com
genial, lo que pasa que al insertar la fecha del datapicker en la mysql me la guarda asi: 0000-00-00...y deberia ser asi por ej: 20/01/2013

Angelus

unread,
Jan 9, 2013, 12:44:42 AM1/9/13
to comuni...@googlegroups.com
perdon puse una "j" donde iba una "i" ya está corregido.
while ($_POST['num'] >= $i ){

                                $nombre='nombre'.$i];
                                $fecha='fecha'.$i;
                                $hora='hora'.$i;
$insert_values = $insert_values."( '".$_POST[$nombre]."',
'".$_POST[$fecha]."'
'".$_POST[hora]."'),";
$i++;
}
Message has been deleted

Angelus

unread,
Jan 9, 2013, 10:27:34 AM1/9/13
to comuni...@googlegroups.com
Ya has provado con la funcón strtotime de php??

Franz Gualoto

unread,
Oct 4, 2014, 1:28:28 AM10/4/14
to comuni...@googlegroups.com
muy interesante amigo, como un totorial video te saldría mejor y tendrias miles de visitas y suscripciones felicitaciones. 

tienes alguna pagina web o algo  
Reply all
Reply to author
Forward
0 new messages