Foros del Web » Programando para Internet » PHP »

Creacion de formularios dinamicos con conexion a mysql-php

Estas en el tema de Creacion de formularios dinamicos con conexion a mysql-php en el foro de PHP en Foros del Web. Hola buen día este es mi primer post dentro de este foro, acontinuacion muestro una solucion y un problema a una pagina php. Se me ...
  #1 (permalink)  
Antiguo 04/10/2009, 10:25
Avatar de jmls  
Fecha de Ingreso: octubre-2009
Mensajes: 9
Antigüedad: 14 años, 5 meses
Puntos: 0
Exclamación Creacion de formularios dinamicos con conexion a mysql-php

Hola buen día este es mi primer post dentro de este foro, acontinuacion muestro una solucion y un problema a una pagina php. Se me pidio crear un sistema de reportes estos se capturan desde un formulario php y se almacenan en mysql despues existe un modulo tablero.php donde aparecen todos los reportes dividos por pendientes, cerrados y todos este ultimo es generado por la función cam_tod(), el cual es mi solucion para este tablero pues me muestra en pantalla todos los reportes y campos para dar una solución, ahora bien el problema surge al querer guardar este campo solucion en la base de datos pues al llamar a la funcion cam_guarda() no me captura los datos enviados por POST.

Estas funciones son llamadas desde tablero.php por este codigo:

Código PHP:
include('funciones.php');
$ir3=$_POST["todos"];//Genera inputtext y Guarda datos de formulario en la variable 
if(!empty($ir3)){
cam_tod();
cam_guarda();

No se si los datos no se capturen por la invocacion que hago en el action pues este se encuentra en funciones.php ya cambie a action='tablero.php' y action='funciones.php' pero nada

Código PHP:
<?
function cam_tod(){
/*Esta funcion carga todos los registros Y  crea los inputtext y botones
 todos con un id unico
          Ejemplo "solucion1 Guardar1, solucion2 Guardar2...solucionn Guardarn"
esto gracias a que el  valor name de los inputs es solucion$i y guardar$i*/

include('consulta.php'); //este archivo contiene mis consultas a la base de datos no hay problema
include('config.php');//este me da los datos de conexion no hay problema

     
echo "<tr>";

     echo  
"<td class='celda_encabezado'><div align='center'>No. REPORTE </div></td>";

     echo 
"<td class='celda_encabezado'><div align='center'>SOLICITANTE</div></td>";

     echo 
"<td width='89' class='celda_encabezado'><div align='center'>DEPENDENCIA</div></td>";

     echo 
"<td width='90' class='celda_encabezado'><div align='center'>NUMERO/EXT</div></td>";

     echo 
"<td width='232' class='celda_encabezado'><div align='center'>PROBLEMA</div></td>";

     echo 
"<td class='celda_encabezado'><div align='center'>SOLUCION</div></td>";

     echo 
"</tr>";

     echo 
"<tr>";

     echo 
"</tr>";

     echo 
"<tr>";

     echo
"<td colspan='6' class='conto2'>";

echo 
"<form name='genera_dinamico' action='funciones.php' method='POST'>";
$i=0;
do {
      echo 
"<tr>";

      echo 
"<td class='conto2'>$row[11]</td>";

      echo 
"<td class='conto2'>$row[1]</td>";

      echo 
"<td class='conto2'>$row[2]</td>";

      echo 
"<td class='conto2'>$row[5]</td>";

      echo 
"<td class='conto2'>$row[10]</td>";

      echo 
"<td class='conto2'>$row[14]";
    if(
$i>'0'){
    if(
$row[14]=='NO'){
    echo 
"<input type='text'             name='solucion$i'>";//aqui se crean los input
    
echo "<input type='submit' value='Guardar'  name='guardar$i'></td>";//aqui se crean los botones
    
}
    }
    
$i++;
      echo 
"</tr>";

     } while (
$row mysql_fetch_array($result2));

    echo
"</td>";

         echo
"</tr>";
    echo 
"</form>";

    }
Código PHP:
function cam_guarda(){
/*He aki el problema no logro capturar el valor de cada input
 ya corri una funcion para ver el contenido de Post y efectivamente
 estan los las variables y valores solucion1=valor...soucionN=valor.
 Entonces aqui necesito algo de ayuda ya intente con:

$ir=$_POST['guardar[]'];
$V1=$_POST['solucion[]'];

$ir=$_POST['guardar$i'];
$V1=$_POST['solucion$i'];

ciclo{
$ir=$_POST['guardar1++'];
$V1=$_POST['solucion1++'];
fin de ciclo}

$ir=$_POST['guardar'".$i."];
$V1=$_POST['solucion''".$i."];

y no me arroja ni un resultado que puedo hacer?
*/

    
$ir=$_POST['guardar[]'];
    
$V1=$_POST['solucion[]'];
    
$V3 =date("d-m-y");
    
$V4 =gmdate("g:i A"time()+((-6+date("I"))*3600));
    echo 
$v2;
        if(!empty(
$ir)){
        include(
'../../super/config.db.php');
        
$link mysql_connect($host,$usuario,$pass);
        
mysql_select_db($db_nom$link);

        
$Sql="INSERT INTO $t7
            ($t7c2,$t7c3,$t7c4,$t7c5)  
            values  ('$V1','$row[11]','$V3','$V4')"
;     
            
mysql_query($Sql,$link) or die ("No se inserto el dato");

        
$up="UPDATE $t5 
            SET $t5c15='SI' 
            WHERE $t5c12='$row[11]'"
;
            
mysql_query($up,$link) or die ("No se actualizo el registro $row[11]");
            
mysql_close($link);
            }
}
?> 
Esto es lo que me genera bueno omití información por cuestiones de privacidad pero esto es lo que interesa:

mx.geocities.com/sabepoco2004/genera.png

Alguna propuesta para solucionar la captura de los datos?

Última edición por jmls; 04/10/2009 a las 12:27
  #2 (permalink)  
Antiguo 04/10/2009, 13:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Creacion de formularios dinamicos con conexion a mysql-php

Tema trasladado desde PHP Orientado a Objetos.
  #3 (permalink)  
Antiguo 04/10/2009, 13:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Creacion de formularios dinamicos con conexion a mysql-php

Solamente tienes que rescatar $ir = $_POST['guardar'], este ya es un array que puedes ciclar directamente, revisa este ejemplo:
Código PHP:
Ver original
  1. $ir = $_POST['guardar'];
  2. var_dump($ir);

Saludos.
  #4 (permalink)  
Antiguo 04/10/2009, 14:31
Avatar de jmls  
Fecha de Ingreso: octubre-2009
Mensajes: 9
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Creacion de formularios dinamicos con conexion a mysql-php

Cita:
$ir = $_POST['guardar'];
var_dump($ir);
echo $ir;
Bien e echo lo que me planteas y me arroja un NULL...
Al momento de meter el post en un foreach me despliega todos los datos correctamente, pero aqui al asignar el valor pues me regresa un null como si la variable nunca fuera asignada.


Código PHP:
foreach($_POST as $id => $valor) {
   print 
"$_POST[$id] => $valor<br></br>";


Cita:
Resultado
dato 1 => dato 1
dato 2 => dato 2
dato 3 => dato 3
dato 4 =>
dato 5 => dato 5
dato 6 => dato 6
dato 7 => dato 7
dato 8 => dato 8
dato 9 => dato 9
dato 10 => dato 10
Guardar => Guardar
seguire intentando al encontrar un resultado lo publicare!

Última edición por jmls; 04/10/2009 a las 14:43
  #5 (permalink)  
Antiguo 04/10/2009, 14:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Creacion de formularios dinamicos con conexion a mysql-php

Si ciclas como pones el foreach sería $_POST['Guardar'] no $_POST['guardar'] es importante que respetes como estan las mayusculas y minusculas.

Saludos.
  #6 (permalink)  
Antiguo 04/10/2009, 19:56
Avatar de jmls  
Fecha de Ingreso: octubre-2009
Mensajes: 9
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Creacion de formularios dinamicos con conexion a mysql-php

Cita:
Iniciado por GatorV Ver Mensaje
Si ciclas como pones el foreach sería $_POST['Guardar'] no $_POST['guardar'] es importante que respetes como estan las mayusculas y minusculas.

Saludos.
muy bien GatorV pero sigo sin poder recoger mis datos...

mmmm Bien veamos si me explico bien, va de nuevo (Teclee en negrita los datos importantes no como falta de respeto sino para que se distingan mejor):

Código PHP:
do {
      echo 
"<tr>";
      echo 
"<td class='conto2'>$row[11]</td>";
      echo 
"<td class='conto2'>$row[1]</td>";
      echo 
"<td class='conto2'>$row[2]</td>";
      echo 
"<td class='conto2'>$row[5]</td>";
      echo 
"<td class='conto2'>$row[10]</td>";
      echo 
"<td class='conto2'>$row[14]";
    if(
$i>'0'){
    if(
$row[14]=='NO'){
    echo 
"<input type='text'             name='solucion$i'>";//aqui se crean los input
    
echo "<input type='submit' value='Guardar'  name='guardar'></td>";//aqui se crean los botones
    
}
    }
    
$i++;
      echo 
"</tr>";
     } while (
$row mysql_fetch_array($result2)); 
En el código anterior saco a pantalla todos los registros en mi base de datos cuyo campo solucion='No' y a estos campos les asigno un inputtext y un botón ambos con un incremento de $i++ para obtener solucion1 solucion 2 ...etc asta aquí todo excelente pues me esta generando bien y excluyendo a los registros que tienen ya una solución, a una cosa quite el incremento en name=guardar ahora es name='guardar'.

Cuando quiero capturar el valor que se escribió en solucion1,solucion2 oprimo el botón guardar y me son enviados los valores a traves de POST, ahora bien si yo pongo una asignación $variable=$_POST['solucion1']; $variable2=$_POST['solucion2']; pues no tengo problema alguno al recuperar el valor pero yo tengo que definir las variables tanto fuera del POST como dentro del POST, entonces mi idea era meter la función cam_guarda() dentro del ciclo do y escribir algo como $variable=$_POST['solucion$i']; Ya intente varias formas incluso ciclar $_POST[solucion]; pero al hacer el recorrido me arroja NULL porque solucion no existe solo existe solucion1 en delante que son las variables que se crearon en el do.

Respecto a foreach lo puedo usar despues del ciclo y estraer los valores del POST de esta forma:

Código PHP:
////////////////termino el do while///////////////////////
foreach($_POST as $id => $valor) {
   print 
$id."=".$valor."<br></br>";

Ahora esto me muestra el id (Inputtext) y su valor (el dato tecleado) quedando de esta forma:


solucion1=TECLEE DATO1
solucion2=TECLEE DATO2
solucion3=TECLEE DATO3
solucion5=TECLEE DATO4
solucion6=TECLEE DATO5
solucion7=TECLEE DATO6
solucion8=TECLEE DATO7
solucion9=TECLEE DATO8
solucion10=TECLEE DATO9
solucion11=TECLEE DATO10
guardar=Guardar



Entonces ahora lo que se me ocurre es meter id del foreach en mi validacion y omitir la signacion de $variable=$_POST['solucion$i'];
Código PHP:
$Sql="INSERT INTO $t7
            ($t7c2,$t7c3,$t7c4,$t7c5)  
            values  ('AQUI PONDRIA EL ID')"
;     
            
mysql_query($Sql,$link) or die ("No se inserto el dato"); 
Que opinan probare y vere el resultado...
  #7 (permalink)  
Antiguo 04/10/2009, 20:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Creacion de formularios dinamicos con conexion a mysql-php

algo como esto??

Código PHP:
$i 1;
echo 
$_POST['loquesea' $i]; 
mmm, que obsoleto...

para eso se pueden establecer los name del tipo array()
Código HTML:
<input name="loquesea[]" value="A"/>
<input name="loquesea[]" value="B"/>
<input name="loquesea[]" value="C"/> 
y en PHP ¡¡mas sencillo imposible!!
Código PHP:
foreach ($_POST['loquesea'] as $i => $value// ... 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 04/10/2009, 21:03
Avatar de jmls  
Fecha de Ingreso: octubre-2009
Mensajes: 9
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Creacion de formularios dinamicos con conexion a mysql-php

jajajaja Genial esa solución es la que buscaba gracias pateketrueke hace rato la habia ideado en el post de arriba jejeje solo que no encontraba la lógica adecuada pero en el ultimo post "el Obsoleto" que hice lo solucione y también aplique tu forma "LA QUE NO ES OBSOLETA" broma jajaja y si tienes razón también funciona gracias por la ayuda hoy estoy canzado de tanto pensarle mañana posteare el código funcional completo con algunos arreglos para su reuso saludos!.
  #9 (permalink)  
Antiguo 05/10/2009, 09:47
Avatar de jmls  
Fecha de Ingreso: octubre-2009
Mensajes: 9
Antigüedad: 14 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Creacion de formularios dinamicos con conexion a mysql-php

Bien como sabrán tenia un problema pero ya a quedado solucionado y aqui pongo mi solucion.

Extracción de registros de la base de datos y creación del formulario:

Código PHP:
function cam_tod(){//carga todos los registros

include('consulta.php');
include(
'config.php');

     echo 
"<tr>";

     echo  
"<td class='celda_encabezado'><div align='center'>No. REPORTE </div></td>";

     echo 
"<td class='celda_encabezado'><div align='center'>SOLICITANTE</div></td>";

     echo 
"<td width='89' class='celda_encabezado'><div align='center'>DEPENDENCIA</div></td>";

     echo 
"<td width='90' class='celda_encabezado'><div align='center'>NUMERO/EXT</div></td>";

     echo 
"<td width='232' class='celda_encabezado'><div align='center'>PROBLEMA</div></td>";

     echo 
"<td class='celda_encabezado'><div align='center'>SOLUCION</div></td>";

     echo 
"</tr>";

     echo 
"<tr>";

     echo 
"</tr>";

     echo 
"<tr>";

     echo
"<td colspan='6' class='conto2'>";

echo 
"<form name='guardar_dinamico' action='funciones.php' method='POST'>";
$i=0;
do {
      echo 
"<tr>";

      echo 
"<td class='conto2'>$row[11]</td>";

      echo 
"<td class='conto2'>$row[1]</td>";

      echo 
"<td class='conto2'>$row[2]</td>";

      echo 
"<td class='conto2'>$row[5]</td>";

      echo 
"<td class='conto2'>$row[10]</td>";

      echo 
"<td class='conto2'>$row[14]";
    if(
$i>'0'){
    if(
$row[14]=='NO'){
    echo 
"<input type='text'             name='solucion[]'>";
    echo 
"<input type='submit' value='Guardar'  name='guardar'></td>";/////////////////todo bien
    
}
    }
    
$i++;
      echo 
"</tr>";

     } while (
$row mysql_fetch_array($result2));
    
cam_guarda();    Llamamos a funci&#243;n para validar datos
    
echo"</td>";

         echo
"</tr>";
    echo 
"</form>";

    } 
Ahora con esta función llenamos los input generados por cam_tod();

Código PHP:
function cam_guarda(){
    if(empty(
$_POST['guardar'])){
    foreach(
$_POST['solucion'] as $d => $valorF) {
    
    
$V3 =date("d-m-y");
    
$V4 =gmdate("g:i A"time()+((-6+date("I"))*3600));
    echo 
$valorF;
        
        include(
'config.php');
        
$link mysql_connect($host,$usuario,$pass);
        
mysql_select_db($db_nom$link);

        
$Sql="INSERT INTO $t7
            ($t7c2,$t7c3,$t7c4,$t7c5)  
            values  ('$valorF','$row[11]','$V3','$V4')"
;     
            
mysql_query($Sql,$link) or die ("No se inserto el dato");

        
$up="UPDATE $t5 
            SET $t5c15='SI' 
            WHERE $t5c12='$row[11]'"
;
            
mysql_query($up,$link) or die ("No se actualizo el registro $row[11]");
            
mysql_close($link);
            
}
}

Este es el archivo config.php

Código PHP:
<?php
/*Conexion a la base de datos 
*/
$host="localhost";
$usuario="root";
//Genere una clave aleatoria para el inicio de sesión como admiistrador de las bases de datos de mysql 
$pass='xxxxxxxxxxxxxxx';
$db_nom="reporte";
//Tablas
$t7="SOLUCION";
    
$t7c1="ID";
    
$t7c2="SOLUCION";
    
$t7c3="FOLIO";
    
$t7c4="FECHA";
    
$t7c5="HORA";
    
$t7c6="TECNICO";
?>
consulta.php
Código PHP:
//consulta numero de reportes 
$sql "SELECT * FROM $t5 WHERE $t5c15 ='NO' or $t5c15 ='SI'";  // sentencia sql
$result2 mysql_query($sql);
$rt mysql_num_rows($result2); // obtenemos el número de filas 

Última edición por jmls; 06/10/2009 a las 07:55
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 17:25.