Foros del Web » Programación para mayores de 30 ;) » Programación General »

Agregar más campos

Estas en el tema de Agregar más campos en el foro de Programación General en Foros del Web. Hola tengo un script en cgi que me encontré por ahí ue lo que hace es leer datos contenidos en un txt y son mostrados ...
  #1 (permalink)  
Antiguo 22/09/2004, 14:28
Avatar de Agripado  
Fecha de Ingreso: mayo-2001
Ubicación: En mi casa
Mensajes: 441
Antigüedad: 23 años, 6 meses
Puntos: 1
Agregar más campos

Hola tengo un script en cgi que me encontré por ahí ue lo que hace es leer datos contenidos en un txt y son mostrados cuando son consultados por un formulario de búsqueda:

Digamos que los datos del txt son de esta manera

Calle Luis Alfredo;[email protected];
Calle Renteria Eddy Martin - Exa - Piu - 200529;[email protected];
Calle Riofrio Paola;[email protected];
Camacho Gutierrez Julio - Piu - 990419;[email protected];

Bien el código del CGI es este


#!/usr/bin/perl -- -*-perl-*-
print ("Content-Type: text/html \n\n");
print <<"ENCABEZADO";

ENCABEZADO


# ------------------------------------------------------------------------------------------------
#
# Modificado para no afectar el archivo original (= no traducir minusculas en mayusculas)
#
# ------------------------------------------------------------------------------------------------

# -------------------------------
# Acceso a los datos transmitidos
# -------------------------------

read (STDIN, $save_string, $ENV{CONTENT_LENGTH});
@prompts=split(/&/, $save_string);
foreach (@prompts) {
($name, $value)=split(/=/, $_);
$name =~ s/\%(..)/pack("c", hex($1))/ge;
$value=~ s/\%(..)/pack("c", hex($1))/ge;
}

# ------------------
# PROGRAMA PRINCIPAL
# ------------------

open(IN, "externos.txt");

# ------------------------
# Extraccion de los campos
# ------------------------
$linea=<IN>;
@NombreCampo=split(";", $linea);
$encontrados=0;

while($linea=<IN>) {

@FLD=split(";", $linea);

# -----------------------------
# Copia de la linea del archivo
# -----------------------------
$busqueda=$linea; # Copiar para no afectar original
$busqueda=~ tr/a-z/A-Z/;

# --------------------
# Criterio de busqueda
# --------------------
$criterio=$value; # Cadena ingresado por el usuario
$criterio=~ tr/a-z/A-Z/; # Convertir minusculas en mayusculas

$i=0;
if ($busqueda=~ /$criterio/) { # Igual a busqueda ?
foreach(@FLD) {
$dato=$_;
if ($linea=~ /""/) {
$dato="No se indico"
}

# -------------------------------------
# Resultados de busqueda en codigo HTML
# -------------------------------------


print <<"TABLA";
<center>
<table border="0" width="400" cellspacing="0" cellpadding="2">
TABLA

if (($dato ne /""/)) {



#------------------------------------------------------------------


En esta parte de acá quiero que sea utilizada en lugar de usar la de abajo ya que muestra todo en una sola fila y dos columnas, ya que en la primera columna muestra Nombre e Email, y en la segunda muestra los datos encontrados en el txt la verdad que espero que me entiendan lo que quiero, porqué me enriendo mucho, y disculpenm si los confundo!

print "<tr>";
print "<td width=\"23%\">td>";
print "<td width=\"77%\"></td>";
print "</tr>";
print "<tr>";
print "<td></td>";
print "<td>&nbsp;</td>";
print "</tr>";
print "<tr>";
print "<td></td>";
print "<td>&nbsp;</td>";
print "</tr>";
print "<tr>";
print "<td></td>";
print "<td>&nbsp;</td>";
print "</tr>";
#------------------------------------------------------------------------

print "<tr>";
print "<td width=\"15%\" bgcolor=\"#003366\"><font face=\"Tahoma\" size=\"-1\" color=white></b></font></td>";
print "<td width=\"85%\"><font face=\"Tahoma\" size=\"-1\" color=black>";
if ((@NombreCampo[$i] eq "Email")) {
print "<a href=\"mailto:$dato\"><font face=\"Tahoma\" size=\"-1\" color=\"blue\"><u>";
}
print $dato;
if ((@NombreCampo[$i] eq "PAGINA")) {
print "</u></font></a>";
}
print "</td></tr>";
}

print <<"TABLA";
</table>
</center>
TABLA
$i=$i+1; # Numero de coincidencias por linea
}
# ----------------------
# Cantidad de resultados
# ----------------------
$encontrados=$encontrados+1;
print "<p>"
}
}



# -------------------------------------------
# Con este comando estoy completando la tabla
# -------------------------------------------


print <<"CIERRATABLA";

CIERRATABLA

close (IN);
__________________
El mundo es un mercado donde se compra honores, voluntad y conciencia
Samuel
  #2 (permalink)  
Antiguo 23/09/2004, 05:40
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Pero en si que es lo que quieres?

El script está bueno y es bastante simple, que quieres modificarle?

Saludos
PD: Quieres cada registro en una fila separada?
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 23/09/2004, 13:40
Avatar de Agripado  
Fecha de Ingreso: mayo-2001
Ubicación: En mi casa
Mensajes: 441
Antigüedad: 23 años, 6 meses
Puntos: 1
Si te dijas solamente hay dos campos que se imprimen en la primera columna de una tabla de 1 fila por 2 columnas, que vienen a ser en la primera columna: Nomre e Email
Y en la segunda columna, los resultados que han coincidido con la búsqueda.

Cierto?

Lo que yo quiero es que se agreguen Dos campos más, aparte de nombre e email, que haya dirección y dni y que no los imprima los 4 en una sola columna sino que los 4 los imprima en sus respectivas filas una debajo de otra y que a la columna de al lado se imprima su respectivo contenido uno debajo de otro, Ordenadamente

lo que nos daría como resultados una tabla de 2 columnas 4 filas, cierto?

Espero tu respuesta, estaré muy atento

Mi agradecimiento por anticipado!
__________________
El mundo es un mercado donde se compra honores, voluntad y conciencia
Samuel
  #4 (permalink)  
Antiguo 24/09/2004, 05:58
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Código:
print "<tr>";
print "<td width=\"15%\" bgcolor=\"#003366\"><font face=\"Tahoma\" size=\"-1\" color=white></b></font></td>";
#ESTA CELDA NO IMPRIME NADA, para colmo está mal el HTML porque pone el </b> pero nunca abrió esa etiqueta !!!!!

print "<td width=\"85%\"><font face=\"Tahoma\" size=\"-1\" color=black>";
if ((@NombreCampo[$i] eq "Email")) {
print "<a href=\"mailto:$dato\"><font face=\"Tahoma\" size=\"-1\" color=\"blue\"><u>";
}
print $dato;
#acá si se imprime el dato.

if ((@NombreCampo[$i] eq "PAGINA")) {
print "</u></font></a>";
}
print "</td></tr>";
}
Para hacerlo fácil...lo cambiaría


Código:
print "<tr>";
print "<td width=\"15%\" bgcolor=\"#003366\"><font face=\"Tahoma\" size=\"-1\" color=white></b></font></td>";
#ESTA CELDA NO IMPRIME NADA, para colmo está mal el HTML porque pone el </b> pero nunca abrió esa etiqueta !!!!!

print "<td width=\"85%\"><font face=\"Tahoma\" size=\"-1\" color=black>";
if ((@NombreCampo[$i] eq "Email")) {
print "<a href=\"mailto:$dato\"><font face=\"Tahoma\" size=\"-1\" color=\"blue\"><u>";
}
print $dato;
print "$NombreCampo[0] : $FLD[0]";
print "$NombreCampo[1] : $FLD[1]";
print "$NombreCampo[2] : $FLD[2]";
print "$NombreCampo[3] : $FLD[3]";

#acá imprimimos todos los campos que tienes el registro (4) que están en el archivo separados por ; como ser esteban;[email protected];argentina;buenos aires

if ((@NombreCampo[$i] eq "PAGINA")) {
print "</u></font></a>";
}
print "</td></tr>";
}
Ahora bien, a esas variables que imprimes le puedes dar el formato que quieras, si quieres una tabla de 4x2 sería algo así:

Código:
<table width=\"80\%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
    <td>$NombreCampo[0]</td>
    <td>$FLD[0]</td>
  </tr>
  <tr>
    <td>$NombreCampo[1]</td>
    <td>$FLD[1]</td>
  </tr>
  <tr>
    <td>$NombreCampo[2]</td>
    <td>$FLD[2]</td>
  </tr>
  <tr>
    <td>$NombreCampo[3]</td>
    <td>$FLD[3]</td>
  </tr>
</table>
Bueno, espero que te sirva y cuentame si te funcionó...

Saludos
__________________
Esteban Quintana

Última edición por monoswim; 24/09/2004 a las 05:59
  #5 (permalink)  
Antiguo 24/09/2004, 14:20
Avatar de Agripado  
Fecha de Ingreso: mayo-2001
Ubicación: En mi casa
Mensajes: 441
Antigüedad: 23 años, 6 meses
Puntos: 1
la verdad que me he mareado y no se por donde poner los datos, cual reemplazarlo con cual ya que el cgi es muy jodido con el orden de los datos... :s

lo he intentado acomodar de varias formas, pero nada
__________________
El mundo es un mercado donde se compra honores, voluntad y conciencia
Samuel
  #6 (permalink)  
Antiguo 24/09/2004, 19:13
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
El primer cuadro te lo dejé igual, el segundo es el mismo pero con algunas modificaciones...

acá te pongo delimitadores

Código:
#------------------------------------------------------------------------ 
############DESDE ACÁ SE HACEN LAS IMPRESIONES QUE NECESITAS
print "<tr>";
print "<td width=\"15%\" bgcolor=\"#003366\"><font face=\"Tahoma\" size=\"-1\" color=white></b></font></td>";
print "<td width=\"85%\"><font face=\"Tahoma\" size=\"-1\" color=black>";
if ((@NombreCampo[$i] eq "Email")) {
print "<a href=\"mailto:$dato\"><font face=\"Tahoma\" size=\"-1\" color=\"blue\"><u>";
}
print $dato;
if ((@NombreCampo[$i] eq "PAGINA")) {
print "</u></font></a>";
}
print "</td></tr>";
}
############ HASTA ACÁ
print <<"TABLA";
</table>
</center>
TABLA
Espero que te sirva

Saludos
__________________
Esteban Quintana
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 14:34.