<?
#Definiciones de variables de la BASE de DATOS
$DBserver="server";
$DBusr="user";
$DBpwd="password";
$clase_campo="Campo_class_0105b.php3";
if(!$tabla_campos){$tabla_campos="campos";}
#if(!$tabla){$tabla="prod_autor";}
#if(!$tabla){$tabla="prod_autor2";}
if(!$tabla){$tabla="";}
if($nivel_){
$nivel=base64_decode($nivel);
}
$form_nombre="form1";
$form_metodo="post";
$form_accion="$SCRIPT_NAME";
$galleta_intervalo=120;
$galleta_nombre="CookieSesionProductos";
#define el nombre de la tabla de usuarios
$tb_usuarios="usuarios";
$tb_sesiones="sesiones";
#Conexión al servidor de base de datos
$DBcnx=@odbc_connect($DBserver,$DBusr,$DBpwd);
if(!$DBcnx){
print "\n<br>KAPUT<br><br>(No se pudo conectar al servidor...)";
exit;
}
##################################
##################################
## FUNCIONES DE SESION
##################################
##################################
function codificar($cadena){
return($cadena);
}
function decodificar($cadena){
return($cadena);
}
function doblar($usr,$expira){
$contenido=$usr."@".$expira;
return($contenido);
}
function desdoblar($contenido){
$lista=explode("@",$base);
return($lista);
}
##################################
##################################
## FUNCIONES DE MENU
##################################
##################################
#desplegable($nombre,$DBcnx,$tabla,$campo_valor,$campo_nombre,$campo_orden){
# $nombre es el nombre del control en el formulario (name="nombre")
# $DBcnx es la conexión
# $tabla es la tabla donde se hará la consulta
# $campo_valor es el nombre del campo (en la tabla) que se quiere usar como valor (value="valor") en la lista desplegable
# $campo_nombre es el texto que aparece en la lista de opciones de la lista desplegable <option ***>nombre</option>
# $campo_orden es el nombre del campo sobre el que se hace la ordenación en la query
#
# desplegable("id_autor",$DBcnx,"prod_autor","id_autor","nombre","nombre")
function desplegable($nombre,$DBcnx,$tabla,$campo_valor,$campo_nombre,$campo_orden,$nivel){
$query="SELECT $campo_valor,$campo_nombre,$campo_orden FROM $tabla WHERE auth>=$nivel ORDER BY $campo_orden ASC;";
$cursor=odbc_exec($DBcnx,$query);
if(!$cursor){
print "\n<br>No se pudo obtener el listado de la tabla $tb_cat...";
exit;
}
$selec="\n<SELECT name=\"$nombre\">";
$f=1;
while(odbc_fetch_into($cursor,$f,&$datos)){
$f++;
$id=$datos[0];
if($id==$id0){
continue;
}
$id0=$id;
$nom=$datos[1];
$selec.="\n<OPTION value=\"$id\">$nom</OPTION>";
}
$selec.="\n</SELECT>";
return($selec);
}
function menu($nivel){
global $form_nombre,$form_metodo,$form_accion;
global $nombre_usuario,$password,$tabla,$tabla_campos;
//menu inicio_html();
//menu formulario_inicial();
print "\n<form name=\"$form_nombre\" method=\"$form_metodo\" action=\"$form_accion\">";
print "\n<table>";
#generar desplegables con tablas objeto para este usuario
#desplegable($nombre,$DBcnx,$tabla,$campo_valor,$campo_nombre,$campo_orden);
global $DBcnx;
$nombre="tabla";
$tabla="campos";
$campo_valor="tabla";
$campo_nombre="tabla";
$campo_orden="tabla";
$lista_tablas=desplegable($nombre,$DBcnx,$tabla,$campo_valor,$campo_nombre,$campo_orden,$nivel);
print "\n<tr><td align=\"right\">Tabla: </td><td>$lista_tablas</td></tr>";
print "\n<tr><td></td><td>";
print "\n<input type=\"hidden\" name=\"tabla_campos\" value=\"$tabla\">";
$nivel_=base64_encode($nivel);
print "\n<input type=\"hidden\" name=\"nivel\" value=\"$nivel_\">";
print "\n<tr><td></td><td><input type=\"radio\" name=\"opcion\" value=\"nuevo\">generar nuevo<br>";
print "\n<input type=\"radio\" name=\"opcion\" value=\"editar\">editar existente ";
print "\n ID: <input type=\"text\" name=\"id\" value=\"\" size=\"3\" maxlength=\"5\"><br>";
print "\n<input type=\"submit\" name=\"mandar\" value=\"Enviar Datos\"></td></tr>";
print "\n</table>";
print "</form>";
//menu menu_final();
//menu fin_html();
}
#Hasta aquí todas las definiciones y comprabaciones, a partir de ahora
#los distintos case utilizarán el usuario y nivel obtenidos hasta aquí
###########################################
#####MAIN##################################
###########################################
$nivel=base64_decode($nivel);
switch($opcion){
###########################################
#####NUEVO#################################
###########################################
case nuevo:
#genera un formulario vacío para introducir datos nuevos
{
require("$clase_campo");
#menu inicio_html();
#$query="SELECT * FROM $tabla_campos WHERE tabla='$tabla' AND auth>=$nivel ORDER BY orden ASC;";
$query="SELECT * FROM $tabla_campos WHERE tabla='$tabla' ORDER BY orden ASC;";
$cursor=odbc_exec($DBcnx,$query);
if(!$cursor){
print "\n<br>Sin cursor...";
print "\n<br>DBcnx: $DBcnx";
print "\n<br>Query: $query";
print "\n<br>cursor: $cursor";
exit;
} else {
print "\n<br>Cursor:$cursor";
}
#print "\n<br>Cursor: $cursor\n<br> Query: $query";
###############
$campo_id="id";
#$campo_id="id_autor";
$query_max="SELECT MAX($campo_id) AS idmax FROM $tabla;";
$cursor_max=odbc_exec($DBcnx,$query_max);
if($cursor_max){
$idmax=odbc_result($cursor_max,"idmax")+1;
} else {
$idmax=1;
}
print "\n<br>Query_max: $query_max - Maxid: $idmax";
###############
print "<form name=\"$form_nombre\" method=\"$form_metodo\" action=\"$form_accion\">";
$c=1;
$k=0;
$lista_campos="";
print "\n<table>";
while(odbc_fetch_row($cursor,$c)){
//establece los valores de las variables
#$datos["nombre"]=odbc_result($cursor,"campo");
#$datos["nombre"]=odbc_result($cursor,"campos[$k]");
$datos["nombre"]=odbc_result($cursor,"campo");
$datos["tipo"]=odbc_result($cursor,"tipo");
$datos["valor"]=odbc_result($cursor,"valor");
$datos["longitud"]=odbc_result($cursor,"longitud");
$datos["longitud_maxima"]=odbc_result($cursor,"long_max");
$datos["valores"]=odbc_result($cursor,"valores");
$datos["evento"]=odbc_result($cursor,"evento");
$datos["evento_funciones"]=odbc_result($cursor,"evento_funciones");
$datos["habilitado"]=odbc_result($cursor,"habilitado");
$datos["rotulo"]=odbc_result($cursor,"rotulo");
$datos["rotulos"]=odbc_result($cursor,"rotulos");
$datos["rotulo_pos"]=odbc_result($cursor,"rotulo_pos");
$datos["rotulo_estilo"]=odbc_result($cursor,"rotulo_estilo");
$datos["es_cadena"]=odbc_result($cursor,"es_cadena");
#############
#$datos["id"]="id_autor";
$datos["id"]="id";
if(substr($datos["nombre"],0,2)=="id"){
$datos["valor"]=$idmax;
}
//crea la variable $campo[$c] a partir de
$campo[$c]=$datos;
#creacion del objeto campo
$xnombre[$c]=new Campo($campo[$c]);
print "\n\n<tr>";
print "\n <td>$c</td>";
print "\n <td align=\"right\"><span class=\"body\">$datos[rotulo]</span></td>\n <td>";
#impresion del campo llamando a su propia funcion imprime
$codigo_html_campo=$xnombre[$c]->imprime();
print $codigo_html_campo;
#print "\n<br>K: $k - Nombre: $datos[nombre]";
$lista_campos[$k]=$datos["nombre"];
$es_cadena[$k]=$datos["es_cadena"];
print "</td>\n</tr>";
$c++;
$k++;
}//fin del while
if($lista_campos && $es_cadena){
$lista_campos=join(",",$lista_campos);
$es_cadena=join(",",$es_cadena);
} else {
print "\n<br>(429)No hubo campos para crear formulario...\n<br>tabla: $tabla\n<br>Query: $query\n<br> :(";
break;
}
print "\n</table>";
print "\n<input type=\"submit\" name=\"mandar\" value=\"Enviar Datos\">";
print "\n<input type=\"hidden\" name=\"lista_campos\" value=\"$lista_campos\">";
print "\n<input type=\"hidden\" name=\"es_cadena\" value=\"$es_cadena\">";
print "\n<input type=\"hidden\" name=\"opcion\" value=\"introducir\">";
print "\n<input type=\"hidden\" name=\"tabla\" value=\"$tabla\">";
$nivel_=base64_encode($nivel);
print "\n<input type=\"hidden\" name=\"nivel\" value=\"$nivel_\">";
print "</form>";
$formulario=array($frm_datos,$campo,$plantilla);
//menu menu_final();
//menu fin_html();
break;
}
###########################################
####INTRODUCIR#############################
###########################################
case introducir:
{
//menu inicio_html();
//menu formulario_inicial();
$lista_c=explode(",",$lista_campos);
#$escadena[$c]
$es_cadena=explode(",",$es_cadena);
$n=sizeof($lista_c);
$query="INSERT INTO $tabla ";
$query.="(";
for($c=0;$c<$n;$c++){
$nombre_ = $lista_c[$c];
$contenido = $$nombre_;
#print "\n<br>$c: ($nombre_) - ($contenido)";
$query.="$nombre_";
if(($c+1)<$n){
$query.=", ";
}
}
$query.=") values (";
for($c=0;$c<$n;$c++){
$nombre_ = $lista_c[$c];
$contenido = $$nombre_;
#print "\n<br>$c: ($nombre_) - ($contenido)";
if($es_cadena[$c]==1){
$comilla="'";
} else {
$comilla="";
}
$query.=$comilla.$contenido.$comilla;
if(($c+1)<$n){
$query.=", ";
}
}
$query.=")";
$query.=";";
$cursor_datos=odbc_exec($DBcnx,$query);
if(!$cursor_datos){
print "\n<br>Kaput... Sin cursor al ejecutar la query: $query";
exit;
} else {
print "\n<br>Guay, Cursor:$cursor\n<br>Query:$query";
}
#phpinfo();
//menu menu_final();
//menu fin_html();
break;
}
###########################################
######EDITAR###############################
###########################################
case editar:
#genera un formulario con datos a partir de un registro existente
{
require("$clase_campo");
//menu inicio_html();
#esta query toma las propiedades de los campos de la tabla de descripción de campos
$query="SELECT * FROM $tabla_campos WHERE tabla='$tabla' ORDER BY orden ASC;";
$cursor=odbc_exec($DBcnx,$query);
if(!$cursor){
print "\n<br>Sin cursor al ejecutar la query: $query";
exit;
}
#$campo_id="id_autor";
$campo_id="id";
$query_datos="SELECT * FROM $tabla WHERE $campo_id=$id;";
$cursor_datos=odbc_exec($DBcnx,$query_datos);
if(!$cursor_datos){
print "\n<br>Sin cursor al ejecutar la query: $query_datos";
exit;
} else {
print "\n<br>GUAY Cursor:$cursor";
}
$cd=1;
# while(odbc_fetch_row($cursor_datos)){
# $valor_datos[$cd]=odbc_result($cursor_datos,$cd);
# $cd++;
# }
$cd_=1;
while(odbc_fetch_into($cursor_datos,$cd_,&$datos_recuperados)){
$n_=sizeof($datos_recuperados);
for($c_=0;$c_<$n_;$c_++){
$valor_datos[$c_]=$datos_recuperados[$c_];
}
$cd_++;
}
#print "\n<br>Numero de registros recuperados: $cd";
#print "\n<br>Numero de campos recuperados: $c_";
print "<form name=\"$form_nombre\" method=\"$form_metodo\" action=\"$form_accion\">";
$c=1;
$k=0;
$lista_campos="";
print "\n<table>";
while(odbc_fetch_row($cursor)){
//establece los valores de las variables
#$datos["nombre"]=odbc_result($cursor,"campo");
#$datos["nombre"]=odbc_result($cursor,"campos[$k]");
$datos["nombre"]=odbc_result($cursor,"campo");
$datos["tipo"]=odbc_result($cursor,"tipo");
$datos["valor"]=odbc_result($cursor,"valor");
$datos["longitud"]=odbc_result($cursor,"longitud");
$datos["longitud_maxima"]=odbc_result($cursor,"long_max");
$datos["valores"]=odbc_result($cursor,"valores");
#$datos["valores"]=$valor_datos[$k];
$datos["evento"]=odbc_result($cursor,"evento");
$datos["evento_funciones"]=odbc_result($cursor,"evento_funciones");
$datos["habilitado"]=odbc_result($cursor,"habilitado");
$datos["rotulo"]=odbc_result($cursor,"rotulo");
$datos["rotulos"]=odbc_result($cursor,"rotulos");
$datos["rotulo_pos"]=odbc_result($cursor,"rotulo_pos");
$datos["rotulo_estilo"]=odbc_result($cursor,"rotulo_estilo");
$datos["es_cadena"]=odbc_result($cursor,"es_cadena");
#$valores[$k]=3;
$datos["valor"]=$valor_datos[$k];
#print "\n<br>valor asignado: $datos[valor]";
//crea la variable $campo[$c] a partir de
$campo[$c]=$datos;
#creacion del objeto campo
$xnombre[$c]=new Campo($campo[$c]);
print "\n\n<tr>";
print "\n <td>$c</td>";
print "\n <td align=\"right\"><span class=\"body\">$datos[rotulo]</span></td>\n <td>";
#impresion del campo llamando a su propia funcion imprime
$codigo_html_campo=$xnombre[$c]->imprime();
print $codigo_html_campo;
$lista_campos[$k]=$datos["nombre"];
$es_cadena[$k]=$datos["es_cadena"];
print "</td>\n</tr>";
$c++;
$k++;
}//fin del while
if($lista_campos && $es_cadena){
$lista_campos=join(",",$lista_campos);
$es_cadena=join(",",$es_cadena);
} else {
print "\n<br>(610)No hubo campos para crear formulario...\n<br>Tabla: $tabla\n<br>Query: $query\n<br> :(";
break;
}
print "\n</table>";
print "\n<input type=\"submit\" name=\"mandar\" value=\"Enviar Datos\">";
print "\n<br><input type=\"reset\" name=\"reset\" value=\"RESET*\"><br>*Usar sólo para restablecer los datos del formulario borrando las modificaiones introducidas";
print "\n<input type=\"hidden\" name=\"lista_campos\" value=\"$lista_campos\">";
print "\n<input type=\"hidden\" name=\"es_cadena\" value=\"$es_cadena\">";
print "\n<input type=\"hidden\" name=\"opcion\" value=\"actualizar\">";
print "\n<input type=\"hidden\" name=\"tabla\" value=\"$tabla\">";
$nivel_=base64_encode($nivel);
print "\n<input type=\"hidden\" name=\"nivel\" value=\"$nivel_\">";
print "</form>";
$formulario=array($frm_datos,$campo,$plantilla);
//menu menu_final();
//menu fin_html();
break;
}
###########################################
#####ACTUALIZAR############################
###########################################
case actualizar:
{
//menu inicio_html();
//menu formulario_inicial();
#query para obtener el nombre del campo ID de la tabla en cuestión
$queryid="SELECT campo FROM $tabla_campos WHERE tabla='$tabla' AND orden=1;";
#ejecuta la query
$cursorid=odbc_exec($DBcnx,$queryid);
if(!$cursorid){
print"\n<br>Sin cursor al ejecutar la query: $queryid";
exit;
} else {
#en caso de exito
$nombre_de_campo_id=odbc_result($cursorid,1);
#obtiene el nombre de campo
print "\n<br>Nombre de campo ID: $nombre_de_campo_id";
#obtiene el valor de ese campo
print "\n<br>Valor (ID) ".$$nombre_de_campo_id;
}
#establece variables para delimitar la consulta de actualización
$id_campo=$nombre_de_campo_id;
$id=$$nombre_de_campo_id;
#trocea la cadena en un array
$lista_c=explode(",",$lista_campos);
$es_cadena=explode(",",$es_cadena);
#determina el tamaño del array
$n=sizeof($lista_c);
#comienza a establecer la cadena de la query...
$query="UPDATE $tabla set ";
#dibuja el cuerpo de la query...
for($c=0;$c<$n;$c++){
$nombre_ = $lista_c[$c];
$contenido = $$nombre_;
#establece la variable $comilla
#vacía en caso de ser un valor (campo) numérico
#o conteniendo la cadena ' en caso de ser alfabético (cadena)
if($es_cadena[$c]==1){
$comilla="'";
} else {
$comilla="";
}
#sigue poniendo valores a la cadena de la query
$query.="$nombre_=$comilla$contenido$comilla";
if(($c+1)<$n){
#si no es el ultimo elemento, pone una coma
$query.=", ";
}
}
#finaliza la query...
$query.=" WHERE $id_campo = $id;";
#ejecuta la query en la base de datos...
$cursor_datos=odbc_exec($DBcnx,$query);
if(!$cursor_datos){
#si no hay cursor (fallo al ejecutar la query)
print "\n<br>Sin cursor al ejecutar la query: $query";
exit;
} else {
#print "\n<br>Cursor:$cursor\n<br>Query:$query";
print "\n<br>OK...";
}
#phpinfo();
//menu menu_final();
//menu fin_html();
break;
}
default:
{
//menu inicio_html();
//menu formulario_inicial();
menu(1);
//menu menu_final();
//menu fin_html();
break;
}
}//fin del switch
?> |