PHP - Select html, enlazados

 
Vista:
sin imagen de perfil

Select html, enlazados

Publicado por Juan Antonio (3 intervenciones) el 31/08/2021 19:38:06
Hola a todos me presento, soy un programador de la vieja escuela (Cobol,Fortam, Ensamblador..) he aprendido algo de HTML y programación WEB en PHP con MySql ya estoy jubilado y como hobby he desarrollado una web acceder a las foros que tengo guardadas en un árbol de directorios.

De momento lo he solucionado con una página index.php con una función que crea un SELECT con todos los directorios del directorio RAIZ de la WEB para seleccionar un directorio y pasarlo a otra página WEB que hace lo mismo pero cuyo directorio a leer es raiz/directorio1/ y a si sucesivamente hasta crear un directorio tipo raiz/dierectorio1/directorio2/directorio3 y leer todas las fotos incluidas.

El tema es , ¿qué necesitaría utilizar para que todos los select y funciones estuvieran en la misma página y se alimentara la función reiterativamente con los resultados de cada select para pasar el elegido al siguiente select?...

Las página web tiene esta estructura y las sucesivas reciben el resultado y llaman a una función similar añadiendo el directorio resultado de la anterior

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/bootstrap-theme.css" rel="stylesheet">
<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body style="background-color:#E8F8F5;">
<div class="container">
<div class="row" >
<h3 style="text-align:center" class="text-primary"><b>WEB de JASO</b></h3>
<h3 style="text-align:center"><b>Vídeos, Aplicaciones, Fotos, Documentos</></h3>
</div><hr>
</div>
<div class="container" align="center">
<?php include_once 'tiraFotos.php'; ?>
<div class="container" >
<div class="col">
<?php dirTipo();?>
</div>
</div>
<hr>
<div class="container">
<div class="row">
<?php include_once 'enlaces.php'; ?>
</div><hr>
</div>
<div class="container">
<div class="column" align="center">
<a href="index.php" class="btn btn-primary">Volver</a><b>
</div>
</div>
</div>
</body>
</html>

<?php
$archivo = "Numero.dat";
$abre = fopen($archivo, "r");
$total = fread($abre, filesize($archivo));
fclose($abre);
$abre = fopen($archivo, "w");
$total = $total + 1;
$grabar = fwrite($abre, $total);
fclose($abre);
?>

<?php
function dirTipo()
{
?>
<form method="post" action="grupo.php" align="center">
<?php
$dir="raiz/";
echo 'Tipo de documento: ';
echo '<select name="valTipo" class="btn btn-primary">';
?>
<option value="">Seleccione una opción</option>
<option value="videos">Vídeos</option>
<?php
$directorio=opendir($dir);
$archivo = readdir($directorio);
print_r($archivo);
while ($archivo = readdir($directorio))
{
if(($archivo != '.')&&($archivo != '..'))
{
echo '<option value="'.$archivo.'">'.$archivo.'</option>';
}
}
closedir($directorio);
echo '</select>';
?>
<input type="submit" name="submit" value="Buscar" />
</form>
<?php
}
?>


la siguiente pagina con el siguiente select es:

<?php $tip = $_REQUEST['valTipo'];
if ($tip == 'videos')
{
include_once 'videos.php';
}
else
{
?>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/bootstrap-theme.css" rel="stylesheet">
<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body style="background-color:#E8F8F5;">
<div class="container">
<div class="row" >
<h3 style="text-align:center" class="text-primary"><b>WEB de JASO</b></h3>
<h3 style="text-align:center"><b>Vídeos, Aplicaciones, Fotos, Documentos</></h3>
</div><hr>
</div>
<div class="container" align="center">
<?php include_once 'tiraFotos.php'; ?>
<div class="container" >
<div class="col">
<?php dirTipo();?>
</div>
<div class="col">
<?php dirGrupo();?>
</div>
</div>
<hr>
<div class="container">
<div class="row">
<?php include_once 'enlaces.php'; ?>
</div><hr>
</div>
<div class="container">
<div class="column" align="center">
<a href="index.php" class="btn btn-primary">Volver</a><b>
</div>
</div>
</div>
</body>
</html>
<?php
}

function dirTipo()
{
?>
<div class="alert alert-info" role="alert">
<?php $tip = $_REQUEST['valTipo'];echo 'Tipo de documento seleccionado: '.$tip;?>
</div>
<?php
}

function dirGrupo()
{
?>
<form method="post" action="subGrupo.php" align="center">
<?php
$tip = $_REQUEST['valTipo'];
$tip = $_REQUEST['valTipo'];
$enviaTP=$_REQUEST['valTipo'];
$dir="raiz/".$tip;
echo 'Grupo de documentos: ';
echo '<select name="valGrupo" class="btn btn-primary">';
?>
<option value="">Seleccione una opción</option>
<?php
$directorio=opendir($dir);
$archivo = readdir($directorio);
print_r($archivo);
while ($archivo = readdir($directorio))
{
if(($archivo != '.')&&($archivo != '..'))
{
echo '<option value="'.$archivo.'">'.$archivo.'</option>';
}
}
closedir($directorio);
echo '</select>';
?>
<?php $tip = $_REQUEST['valTipo'];?>
<input type="hidden" name="valortipo" value="<?php echo $tip; ?>" />
<input type="submit" name="submit" value="Buscar" />
</form>
<?php
}
?>
El árbol de la WER tiene varias ramas así que utilizo varias paginas enlazadas, para que en la última lea todos los ficheros y con la clausula select elegir cual es el fichero que se desea abrir.

Que podría hacerlo solo con HTML y PHP, o necesitaría javascript o algún otro lenguaje para poder hacer todo el proceso sin salir de la página, el proceso que tengo de momento funciona perfectamente y rápido, pero si puede ser me gustaría hacer todo el proceso con los select retroalimentados en la misma página y reutilizando la misma función sin tener que duplicar procedimientos similares en las sucesivas páginas WEB
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Select html, enlazados

Publicado por Mauro (1036 intervenciones) el 07/09/2021 14:37:30
Hola Juan!

Bienvenido a la programación web :)

Para hacer la página con alta interactividad necesitas usar algunos componentes del lado del navegador, básicamente JavaScript.

En puedes ver algunos ejemplos de cómo lograr lo que buscas:


Consúltame cualquier duda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Select html, enlazados

Publicado por Juan Antonio (3 intervenciones) el 08/09/2021 11:20:54
Muchas gracias por la contestación, pero desgraciadamente no me vale, dado que no se trata de construir los select con datos de una base de datos sino que hay que leer el directorio raíz para construir el primer select con los nombres de los directorios. (elegimos dir4)

El segundo select se construye con los subdirectorios del directorio (dir4) elegido. (elegimos: subd4_3)

El tercer select se construye con los subdirectorios del subdirectorio elegido (dir4/subd4_3) en el select anterior. elegimos sbd4_3_7)

Una vez tenemos la ruta raiz/dir4/subd4_3/ sbd4_3_7 leemos ese directorio y creamos el cuarto select con los nombres de los archivos encontrados.

Por eso hay que estar leyendo en el servidor y creando es select en el cliente para cada select, lo que intento es poder hacerlo en la misma página sin tener que seleccionar y pulsar el boton enviar de cada select, sino que simplemente al abrir la página lanza el proceso para crear el primer select

Una vez creado, al seleccionar uno de los valores lance el proceso para generar el segundo select, y así sucesivamente, la opción on change del select no vale para PHP, asi que imagino que habrá que hacer un hibrido de php-java script

Creo que ese es el camino y que me toca aprender java-script, no se si hay otra opción solo con php+html, para hacerlo en la misma página y sin tener que dar al botón enviar en cada select.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Select html, enlazados

Publicado por Mauro (1036 intervenciones) el 10/09/2021 13:39:47
Hola Juan!

Entiendo. Pues entonces creo que lo más conveniente sería utilizar Ajax para levantar los archivos del directorio seleccionado por el usuario desde el FrontEnd.

Este ejemplo no es exactamente lo que buscas pero pienso que puede darte una idea de cómo lograrlo: https://academy.leewayweb.com/como-hacer-un-autocomplete-con-php/

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Select html, enlazados

Publicado por JASO (3 intervenciones) el 10/09/2021 17:22:01
Muchas gracias, nmiraré por ese camino
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 393
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Select html, enlazados

Publicado por Jefferson (203 intervenciones) el 10/09/2021 21:11:56
Hola y con permiso

Porque no sigues con la idea del árbol ?

Me parece mejor que estar liando al usuario select por select.

Simplemente pintale el árbol y que este seleccione dónde ir?

Pienso yo, no se ...

Hacer un árbol es relativamente fácil de hacer.

Si no estás muy apurado te preparo un ejemplo y comparas opciones

Saludos ya comentarás
Desde Venezuela
Jefferson Jiménez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar