Foros del Web » Programando para Internet » PHP »

Consulta en BD con Formulario

Estas en el tema de Consulta en BD con Formulario en el foro de PHP en Foros del Web. Hola a tod@s: Tengo tres ficheros en el mismo directorio: 1º.- conexion.inc.php -->con los datos de la conexión a la BD 2º.- index.php --> donde ...
  #1 (permalink)  
Antiguo 27/12/2002, 13:54
 
Fecha de Ingreso: abril-2002
Mensajes: 17
Antigüedad: 22 años, 7 meses
Puntos: 0
Consulta en BD con Formulario

Hola a tod@s:

Tengo tres ficheros en el mismo directorio:

1º.- conexion.inc.php -->con los datos de la conexión a la BD

2º.- index.php --> donde hago la consulta a la BD
<?
$inicio = isset($_GET["inicio"]) ? $_GET["inicio"] : 0;
include('conexion.inc.php');
$link = Conectarse();
$sql = ("SELECT nome, telf FROM tb_amigos LIMIT $inicio,1");
$result = mysql_query($sql) or die ("La siguiente consulta contiene algún error:<br>\nSQL: <b>$sql</b>");
while ($row = mysql_fetch_array($result))
{
include('datos.php');
}

echo $inicio;
?>

3º.- datos.php --> muestras los datos de la consulta
<body>
<form name="datos" method="post" action="index.php">
Nome:
<? Print '<input type="text" name="nome" value="'.$row['nome'].'">'; ?>
Teféfono:
<? Print '<input type="text" name="telf" value="'.$row['telf'].'">'; ?>
<a href="index.php?inicio=1">Siguiente</a>
<? echo $inicio; ?>
</form>
</body>


--------------------
Según lo anterior la selección de la consulta a la BD sería registro a registro (LIMIT $inicio,1)
El While se repite hasta que no queden registros en la BD mostrando los datos en el formulario, puse un echo a $inicio para comprobar que se ejecute correctamente.
Al hacer clic en siguiente se incrementaría $inicio en una unidad, por lo tanto tendríamos que pasar al registro siguiente (Cosa que no hace).
Otra cosa curiosa si ese echo $inicio; (y quitando <? echo $inicio; ?> de datos.php) lo pongo donde aparece en el fichero index.php imprime en pantalla el valor cero, cuando en realidad no se terminó el bucle ¿Cómo es posible?

Última edición por QchiQchy; 27/12/2002 a las 13:57
  #2 (permalink)  
Antiguo 27/12/2002, 14:19
Avatar de chalito  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago, chile
Mensajes: 221
Antigüedad: 21 años, 10 meses
Puntos: 0
Hola
si lo que quieres es paginas los resultados lo mejor seria manejar una variable como por ejemplo $pagina he ir aumentandola, esta debe pasarse por la url

Código PHP:
if(!$pagina$pagina 1
y el los links del numero de paginas los haces con $pagina++ ou otro sistema

Saludos
  #3 (permalink)  
Antiguo 27/12/2002, 14:37
 
Fecha de Ingreso: abril-2002
Mensajes: 17
Antigüedad: 22 años, 7 meses
Puntos: 0
Gracias por contestar Chalito:

A lo que llamas $pagina yo la tengo como $inicio.
En cuanto a incrementar el número se tendría que hacer perfectamente con: <a href="index.php?inicio=1">Siguiente</a>
y no hace absolutamente nada. Sólo se muestra el primer registro de la tabla a pesar de tener más.
No encuentro el error posible que impide que pasen bien la variables por las urls.
A ver si alguien sabe como.
Muchas Gracias y Saludos.
  #4 (permalink)  
Antiguo 27/12/2002, 14:54
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Con tu codigo solo muestras dos registros, el 0 y el 1, si es que tu version de PHP soporta $_GET, que es a partir de la 4.1. Si no lo soporta, puedes usar $HTTP_GET_VARS en su lugar. Pero sin lugar a dudas al pinchar el link de Siguiente no incrementas en 1 $inicio, sino que le asignas el valor 1.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 27/12/2002, 15:46
 
Fecha de Ingreso: abril-2002
Mensajes: 17
Antigüedad: 22 años, 7 meses
Puntos: 0
Hola de nuevo y Gracias:
Efectivamente josemi con $HTTP_GET_VARS (mi php es la 4.0.2) e incrementando el contador ¡por fin funciona! A medias.
Gracias

Última edición por QchiQchy; 28/12/2002 a las 11:39
  #6 (permalink)  
Antiguo 27/12/2002, 16:38
Avatar de chalito  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago, chile
Mensajes: 221
Antigüedad: 21 años, 10 meses
Puntos: 0
Hola
pues para eso debes hacerlo con un cilco

Código PHP:
for($i 1$i $npaginas$i++) {
     echo 
"<a href=\"..../resultado.php?pagina=$i\">";

Obiamente que $npaginas es donde tienes almacenado el numero total de paginas

Saludos
  #7 (permalink)  
Antiguo 28/12/2002, 11:41
 
Fecha de Ingreso: abril-2002
Mensajes: 17
Antigüedad: 22 años, 7 meses
Puntos: 0
Hola de nuevo y Gracias:
Para que funcione bien: $HTTP_GET_VARS y la condición:
El enlace al siguiente registro ha de estar dentro de un echo en la página index.php de la forma:
<a href=\"index.php?inicio=$inicio\">Siguiente</a>
De mantenerlo en datos.php como:
<a href="index.php?inicio=$inicio">Siguiente</a> Nanai de la china (No recoge el contenido de la variable inicio).

Dando una vuelta de tuerca más a esta consulta, el paso siguiente es poner una botonera con:
Primer registro - Anterior - Siguiente - Último - Nº Registro - Salir
Así los navegantes pueden ir al que deseen, pero para construir el código y controlarlo por ejemplo con switch y break necesito saber que opción se seleccionó para asignar un valor a la variable que llamo $opcion.
¿Cómo debo hacer para asignar un valor según la opción elegida?
Esto lo desearía hacer en un fichero aparte (datos.php) que muestre los contenidos de los registros y controle los eventos de las pulsaciones (opciones).

Gracias por vuestro interés y Saludos.
  #8 (permalink)  
Antiguo 28/12/2002, 17:27
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Primero, el enlace de datos.php no esta en un echo, asi que te toma el texto '$inicio', no el valor de la variable.

Sobre la botonera, solo tienes que determinar como es el enlace de cada uno de los botones. Por ejemplo, para 'Primer registro' bastaria pasar inicio=0, para 'Anterior' inicio=$inicio-1 (habria que comprobar que no se pasan numeros negativos), para 'Siguiente' inicio=$inicio+1, para 'Ultimo' inicio=numero del ultimo registro (puedes hacer un 'select count(*) from tabla' para averiguar el numero de registro), para 'Nº Registro' inicio=valor (tendrias que comprobar que valor esta dentro del rango 0-(numero de registros - 1)y para 'Salir' el que quieras.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 29/12/2002, 09:34
 
Fecha de Ingreso: abril-2002
Mensajes: 17
Antigüedad: 22 años, 7 meses
Puntos: 0
Hola Josemi y muchas gracias:
Puedo hacer el incremento, decremento,... en el link?
<a href="index.php?inicio=$inicio">Siguiente</a>"
O antes tengo que incrementar,... el valor de la variable $inicio?

De ser esta segunda opción la correcta. Creo que debería contar con una nueva variable ($opción) que controle el clic realizado para luego entrar en la opción:
Por ej si se pulso atrás: opción=1, si fue adelante: opción=2,...

Quítame de dudas por favor.
Gracias y saludos.
  #10 (permalink)  
Antiguo 29/12/2002, 16:52
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Lo que tienes que lograr es que el HTML resultante sea el que quieres. Por ejemplo:
Código PHP:
$siguiente=$inicio+1;
$anterior=$inicio-1;
echo 
"<a href=\"index.php?inicio=0\">Primer registro</a>";
echo 
"<a href=\"index.php?inicio=$anterior\">Anterior</a>";
echo 
"<a href=\"index.php?inicio=$siguiente\">Siguiente</a>"
Lo de usar otra variable seria si quieres realizar una accion distinta, pero en este caso lo que quieres siempre es mostrar el registro de la posicion indicada por inicio. Por ejemplo, si tienes un link para borrar el registro mostrado o guardar las modificaciones que has hecho, puedes tener una variable opcion que pueda tener los valores 'mostrar', 'borrar' o 'modificar' (o valores numericos, da igual) y la variable inicio que indique sobre que registro quieres realizar la accion.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #11 (permalink)  
Antiguo 29/12/2002, 19:29
 
Fecha de Ingreso: abril-2002
Mensajes: 17
Antigüedad: 22 años, 7 meses
Puntos: 0
Bendito seas Josemi:

¡Me has abierto los ojos!
Llevo bastantes días quemando diotrías por internet y en el chat de php de irc hispano y... ¡Qué difícil lo quería hacer! cuando en realidad es tan sencillo (jejeje: Ahora que lo veo, antes... )
Lo dicho Muy agradecida por tus enseñanzas.
Aunque claro es, cuando más se avanza menos se sabe o al revés?

Volviendo sobre el tema como php se ejecuta en el servidor, si en un momento determinado hay más de un consultor en la BD esas variables habría que definirlas de forma diferente?
Ya que se daría la circunstancia de que uno al avanzar de un en un registro pudiera saltar al sexto,... dependiendo de los otros internautas y sus clics.

Saludos cordiales.
  #12 (permalink)  
Antiguo 29/12/2002, 20:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Volviendo sobre el tema como php se ejecuta en el servidor, si en un momento determinado hay más de un consultor en la BD esas variables habría que definirlas de forma diferente?
Ya que se daría la circunstancia de que uno al avanzar de un en un registro pudiera saltar al sexto,... dependiendo de los otros internautas y sus clics.
Tienes que tener claro la filosofia "Cliente-Servidor" ...

La aplicacion que ejecuta cada cliente sobre el servidor .. es UNICA y valida para ese usuario activo .. Por lo tanto si un Usuario A esta ejecutando tu_script.php; para este se crea una instancia del mismo con sus variables privadas q use y todas las acciones que requiera ... Si en ese instante .. el usuario B entra a ejecutar tu_script.php vuelve a crear otra instancia del mismo scritp ejectuandose de forma independiente .. Así con tatos cliente que le soliciten la ejecucion de dicho script .. A su vez dicho script podrá interactuar como es el caso con una Base de datos haciendo consultas (en ese caso estrictamente consultas) .. las cuales .. el servidor de Base de dtos q uses (Mysql en este caso) atiene de forma idependiente a cada una de ellas.

Si por alguna razón necesitaras compartir algunas variables para que sean comunes para todos los usuarios conectados a tus scripts.php en ese instante (al estilo ASP con su aplication o como se llame) .. eso sería otra cosa ahi tendrias q usar otras técnicas como la de usar un fichero de texto plano donde guardar esas variables y q sean accedidas por el resto de scripts.php y/o los mismos ... (o base de datos temporales en memoria por ejemplo .. etc).

Un saludo,
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 22:40.