Programación Web y Scripting > PHP

 Re: Posible Solucion A Catálogos

<< < (2/4) > >>

ibito:
Bien, otra modificación, ahora te muestra el INSERT, todavía no lo ejecuta, quiero ejecutarlo hasta que todo esté bien.


--- Código: Text --- &#60;?//Archivo con las Opciones de conexioninclude(&#34;conexion.php&#34;); //Archivo con Funciones para crear controles en HTMLinclude(&#34;forms.php&#34;); //Tomar el nombre de la tabla&#036;tabla=&#036;_GET['catalogo']; if(!isset(&#036;_POST['OK'])){  if(isset(&#036;tabla))  {    //Ejecutar una consulta a la tabla seleccionada     &#036;SQL=&#34;SELECT * FROM &#036;tabla&#34;;    &#036;res=mysql_query(&#036;SQL);    ?&#62;    &#60;br&#62;&#60;br&#62;&#60;br&#62;    &#60;!--Crear el Form --&#62;    &#60;Form name=&#60;? echo &#34;frm_&#036;tabla&#34;?&#62; action=&#34;cat.php?catalogo=&#60;?php echo &#036;tabla; ?&#62;&#34; method=&#34;POST&#34;&#62;    &#60;!-- Crear una Tabla HTML para ordenar los campos --&#62;    &#60;table border=0 cellspacing=0 cellpadding=0&#62;    &#60;?    //Tomar los nombres de los campos y generar una pantalla para captura    for(&#036;i=0; &#036;i&#60;mysql_num_fields(&#036;res); &#036;i++)    {       //Tomar las llaves foraneas en un arreglo para generar un combo con sus posibles valores de la tabla      //de referencia      if(substr(mysql_field_name(&#036;res, &#036;i),0,3)==&#34;id_&#34;)      {        &#036;ids=explode(&#34;id_&#34;, mysql_field_name(&#036;res, &#036;i));        &#036;campos_ids[&#036;i]=&#036;ids[1];      }      else      {        echo &#34;&#60;tr&#62;&#60;td&#62;&#34;.ucfirst(mysql_field_name(&#036;res, &#036;i)).&#34;:&nbsp&nbsp&#60;/td&#62;&#60;td&#62;&#34;.Creartxt(mysql_field_name(&#036;res, &#036;i),&#34;text&#34;,25,&#34;&#34;,&#34;&#34;).&#34;&#60;/td&#62;&#60;/tr&#62;&#092;n&#34;;      }       //Comprobar si es una llave foranea si lo es crear un combo (Select)      if(&#036;tabla!=&#036;campos_ids[&#036;i] && substr(mysql_field_name(&#036;res, &#036;i),0,3)==&#34;id_&#34;)      {        echo &#34;&#60;tr&#62;&#60;td&#62;&#036;campos_ids[&#036;i]&#60;/td&#62;&#60;td&#62;&#34;.CrearCombo(&#036;campos_ids[&#036;i],&#34;&#34;).&#34;&#60;/td&#62;&#60;/tr&#62;&#34;;      }    }    echo &#34;&#60;tr&#62;&#60;td colspan=2&#62;&#60;center&#62;&#60;br&#62;&#34;.Creartxt(&#34;OK&#34;,&#34;submit&#34;,&#34;0&#34;,&#34;Guardar&#34;,&#34;&#34;).&#34; &#34;.Creartxt(&#34;Borrar&#34;,&#34;reset&#34;,&#34;0&#34;,&#34;Limpiar&#34;,&#34;&#34;).&#34;&#60;/center&#62;&#60;/td&#62;&#60;/tr&#62;&#34;;  }}else{  if(isset(&#036;tabla))  {    &#036;i=0;    //Tomamos todos los valores de POST, que en realidad serían los campos de la tabla.    foreach(&#036;_POST as &#036;nombre_campo =&#62; &#036;valor)    {      if(&#036;nombre_campo!='OK')      {        &#036;campos[&#036;i]=&#036;nombre_campo;        &#036;valores[&#036;i]=&#036;valor;        &#036;i++;      }    }    //Metemos todos los campos de la forma HTML como si fueran campos de la tabla (que realmente lo son, exceptuando    //el campo del boton submit:    &#036;SQL=&#34;INSERT INTO &#036;tabla (&#34;;    for(&#036;i=0; &#036;i&#60;count(&#036;campos); &#036;i++)    {      if(&#036;i!=count(&#036;campos)-1)        &#036;SQL.=&#036;campos[&#036;i].&#34;, &#34;;      else           &#036;SQL.=&#036;campos[&#036;i];    }    &#036;SQL.=&#34;) VALUES ('&#34;;    for(&#036;i=0; &#036;i&#60;count(&#036;valores); &#036;i++)    {      if(&#036;i!=count(&#036;valores)-1)        &#036;SQL.=&#036;valores[&#036;i].&#34;', '&#34;;      else           &#036;SQL.=&#036;valores[&#036;i].&#34;'&#34;;    }    &#036;SQL.=&#34;)&#34;;    echo &#036;SQL;  }}?&#62;&#60;/form&#62;&#60;/table&#62;  

Altareum:
Hace poco estaba armando un ABM semi-automático (ABM le llaman allá a lo que yo interpreté que uds llaman Catálogo).. O sea un panel de Alta/Baja/Modificación de datos.

Pero, al contrario de lo que armó Ibito, este no depende de la estructura de la DB, sino que se declaran en un array. En cuanto tenga unos minutos en casa lo adjunto a ver si pueden sacarle algo.
El único problema es que cuando lo hice, tuve que trabajarlo con FastTemplate, por lo que puede resultar un poco confuso al principio.

Altareum.

ibito:
A mi lo que me gustó de lo que posteé, fué que tienes que hacer casi nada, ahora, lo que tengo que hacer es poner en el script, que tablas se pueden accesar mediante el script, porque como que si pones: catalogo=mysql.users ... también funciona... :ph34r:

En fin, igual postea tu código... talvez algo pueda salir de ahí  :devil:

F_Tanori:
Yo tengo estas funciones que tal vez pudieran ser de utilidad



funciones.js

--- Código: Text --- var isIE = document.all?true:false;var isNS = document.layers?true:false; //-----------------------------------------------------------------------------------------//(c)Guillermo 'guille' Som, 1999 function InStr(n, s1, s2)       {    var numargs=InStr.arguments.length;     if(numargs&#60;3)      return n.indexOf(s1)+1;    else      return s1.indexOf(s2, n)+1;  } function UCase(s)  {   return s.toUpperCase();  } /*    F_Tanori   Julio del 2006   Validar tipo de caracteres conforme se va escribiendo   */ //-----------------------------------------------------------------------------------------/* == PARAMETROS ==   e= evento   permitidos:        *- &#34;sting&#34;= permitir solo caracteres alfabeticos     *- &#34;int&#34;= permitir solo caracteres numericos     *- &#34;all&#34;= permitir cualquier caracter     *- caracteres que se pueden permitir en la captura (Ej. &#34;123456ABCD&#34;)   mayusculas:    0 = Texto tal y como se captura          1 = Forzar a la conversion a mayusculas el texto capturado    2 = Forzar a la conversion a minusculas el texto capturado *///------------------------------------------------------------------------------------------function validar(e,permitidos,mayusculas)  {    var key = (isIE) ? window.event.keyCode : e.which;     var obj = (isIE) ? event.srcElement : e.target;    var letra=String.fromCharCode(key);    var NuevaLetra=letra.toUpperCase();       switch (permitidos)      {        case &#34;int&#34;:          permitidos=&#34;0123456789&#34;;        break;        case &#34;string&#34;:          permitidos=&#34;ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ &#34;;        break;       }      if (permitidos!=&#34;all&#34;)      {        var isPermitido = InStr(permitidos,NuevaLetra)&#62;0 ? true:false;      }    else      {        isPermitido =true;      }     if (mayusculas==1) //Forzar a mayusculas      {         key=NuevaLetra.charCodeAt(0);      }    else      {         if (mayusculas==2) //Forzar a minusculas        { NuevaLetra=letra.toLowerCase();          key=NuevaLetra.charCodeAt(0);        }      }     window.event.keyCode = (!isPermitido && isIE) ? 0:key;    e.which = (!isPermitido && isNS) ? 0:key;      return (isPermitido);   }  
agregandolo en el archivo


--- Código: Text --- &#60;script type=&#34;text/javascript&#34; language=&#34;JavaScript&#34; src=&#34;funciones.js&#34;&#62;&#60;/script&#62;  

--- Código: Text --- ... &#036;tipo= mysql_field_type(&#036;res, &#036;i);...Creartxt(mysql_field_name(&#036;res,&#036;i),&#34;text&#34;,25,&#34;&#34;,&#34;onKeyPress=validar(event,'&#036;tipo',1)&#34;)  
Faltaria agregar otras modificaciones como para el campo de fecha, hora,blob etc...
de momento no e tenido tiempo de probarlo por el trabajo pero espero pueda servir de algo....

ArKaNtOs:
pues ya que esta la uforia de esto :P porque no hacemos algo asi como el mambo o joomla :P o mejor aun, como una eshop, pero esto que no sea un fraude como el de los VJ jejejejejeje ¿Que les parece? :D

Seria el Solocodigo Shop :P jejejeje

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa