Comunidad de diseño web y desarrollo en internet online

llenar un combo box con bbdd

Citar            
MensajeEscrito el 21 Abr 2008 10:56 am
Salud.

1º Estoy intentando hacer un menu desplegable para un boletin de noticias en el cual necesito que dicho desplegable recoga los datos de una bbdd, y me cree tantos cambos como filas tengo.

Código :

<?php
$link = mysql_connect("serv", "user", "pas"); 
   mysql_select_db("base_db");

$sql = "SELECT * FROM tabla_db";
$res = mysql_query($sql) or die (mysql_error());

if( mysql_num_rows($res) >0){

   while ($fila = mysql_fetch_array($res)) {

}


y aki viene la duda, pues no se muy bien como realizarlo.
Supongo que imprimiendo los datos con un:

Código :

echo "<option value='$fila'</option>";


o

Código :

echo "<option>".$fila['asunto'];


pero no se muy bien como colocarlo o si deberia ser algo asi:

Código :

echo "<select name='id'>";
while ($fila = mysql_fetch_array($res)) {
echo "<option value='$fila'</option>";
echo "</select>";


o si no tengo ya ni idea.

2º El temita es que segun las seleccion de la fila que realizo, posteriormete en la parte de abajo debe cargar el resto de los datos de dicha fila, tal vez con una variable que me la almacenara el numero de fila seleccionado y con variables para el resto de datos tipo

Código :

$asunto_mostrar = $asunto [$fila_seleccionada];


No se, alguna idea?

Por Idearis

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Abr 2008 05:11 pm
Idearis, esto sería para crear el menú con las filas de tu bd

Código :


echo '<select>';

while ($fila = mysql_fetch_array($res)) {
  echo '<option value=" ' . $fila['campo1'] . ' "> '. $fila['campo1'] .'</option>';
}

echo '</select>';



Con respecto al segundo item, no me quedó claro ¿Tienes algun ejemplo en linea, para ver que es lo que deseas?

Por Necrophasto

Claber

148 de clabLevel



Genero:Masculino  

Diseñador gráfico y web

opera
Citar            
MensajeEscrito el 21 Abr 2008 05:59 pm
He probado a incluir tu texto pero, me sigue apareciendo en blanco.

Preparare un modelo y lo colgare para que puedas revisarlo.

Pero igual tengo mal la inclusion del php en mi html, ahora lo tengo un poco desordenado asi que lo ordeno y lo posteo!!!

Por Idearis

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Abr 2008 06:34 pm

Necrophasto escribió:

Idearis, esto sería para crear el menú con las filas de tu bd

Código :


echo '<select>';

while ($fila = mysql_fetch_array($res)) {
  echo '<option value=" ' . $fila['campo1'] . ' "> '. $fila['campo1'] .'</option>';
}

echo '</select>';



supongamos que en la BD guardes la descripcion de X cosa y eso sea lo que mostrarias en la lista pero ademas en la tabla identificas esa descripcion con un id enonces sería lo mas conveniente usar ese id en la lista tambien, por lo tanto quedaria algo asi el select:

Código :

echo '<select name="lista">';

while ($fila = mysql_fetch_array($res)) {
  echo '<option value=" ' . $fila['id'] . ' "> '. $fila['descripcion'] .'</option>';
}

echo '</select>';


y de esa manera mostrarias la lista llena con datos de la tabla y asociada a cada opcion de la lista estaría el ID correspondiente

Para el 2do punto puedes hacer 2 cosas:

1.- colocas el select, y un boton para "cargar" la informacion referente al registro seleccionado de la lista, la cuestion es que al darle al boton envies el formulario (generalmente a la misma pagina) y alli captures el valor ( $id=$_POST["lista"]; ) seleccionado de la lista y hagas un query "mas completo" utilizando el ID capturado para mostrar asi el detalle asociado al elemento seleccionado de la lista.

2.- investiga sobre ajax... es practicamente lo mismo pero sin recargar la página.

Por mauril26

161 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Abr 2008 09:06 am
1º Gracias por la ayuda ya consegui que el combo me lea los valores de la tabla.

2º Voy a replantera el tema de la segunada parte.

-Estoy realizando un boletin en el cual el cliente introduce los datos a una bbdd. (Esto lo tengo solucionado con un wysiwyg)
-Por otro lado tengo los tipicos furmularios de alta y de baja del boletin.
-El cliente puede acceder a un listado de usuarios y desde el listado ver, editar y eliminar los usuarios deseados.
-Ahora estamos en el tema actual, una vez tengo todo esto desde una pagina el cliente accedera al listado de boletines guardados ( el combo que me ayudaron a resolver) y seleccionando uno u otro deberia poder enviarlo al listado de usuarios.

De ahi la idea de que al seleccionar uno u otro del combo pudiera ver los datos en la parte inferior y luego confirmar el envio.

Segun he entendido deberia incluir un form y capturar el valor ( $id=$_POST["lista"]; )

echo '<form name="form1" method="post" action="$id=$_POST["lista"];">"
echo '<select name="lista">';

while ($fila = mysql_fetch_array($res)) {
echo '<option value=" ' . $fila['id'] . ' "> '. $fila['descripcion'] .'</option>';
}
echo '</select>';
echo '</form>';

Seria algo asi??

El envio a la misma pagina se realiza con $_SERVER['PHP_SELF'];

Por donde sigo

Por Idearis

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Abr 2008 11:12 am

Código :

echo '<form name="form1" method="post" action="nombre_pagina_que_quieres_ir.php">"
echo '<select name="lista">';

while ($fila = mysql_fetch_array($res)) {
echo '<option value=" ' . $fila['id'] . ' "> '. $fila['descripcion'] .'</option>';
}
echo '</select>';
echo '</form>';

Y luego, en nombre_pagina_que_quieres_ir.php, recoges las variables con $_POST['nombre_variable']

Te recomiendo que hagas más prácticas/tutoriales con php y mysql, antes de meterte con tanto código.

Por One

Claber

1488 de clabLevel

5 tutoriales

Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 22 Abr 2008 11:30 am
La pagina a la que quiero ir es la misma de ahi la consulta del "$_SERVER['PHP_SELF'];" sirve para la retornar a la misma pagina.

luego si esto fuera correcto me vastaria con realizar una nueva consulta sql donde id = $_variable del valor de la lista

Código :

<?php
$link = mysql_connect("serv", "user", "pas"); 
   mysql_select_db("base_db");

$sql = "SELECT * FROM tabla_db" WHERE id=$_POST['valor de la lista];
$res = mysql_query($sql) or die (mysql_error());

?>


Algunos conceptos no los tengo claros, (como el envio de la variable a la misma pagina) solicito ayuda para poder continuar na más na menos.

Por Idearis

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Abr 2008 11:39 am
Veo que no has leido bien el codigo del formulario donde pone:

Código :

...
action="nombre_pagina_que_quieres_ir.php"
...

Por One

Claber

1488 de clabLevel

5 tutoriales

Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 22 Abr 2008 12:05 pm
debo poner el mismo nombre que mi pagina actual?

Por Idearis

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Abr 2008 02:09 pm
Debes poner el nombre de la página a donde quieres enviar los datos del formulario.

Por One

Claber

1488 de clabLevel

5 tutoriales

Genero:Masculino  

Programador Web

firefox
Citar            
MensajeEscrito el 22 Abr 2008 03:07 pm
debo poner el mismo nombre que mi pagina actual?

Exacto...

Código :

echo "<form name=\"form1\" method=\"post\" action=\"boletin.php\">";
echo "<select name=\"lista\">";

while ($fila = mysql_fetch_array($res)) { //mientras existan resultados en la BD
echo "<option value=" . $fila['id'] . ">" . $fila["descripcion"] ."</option>";
}
echo "</select>";
echo "<input type=\"submit\" value=\"Detalles\" id=\"detalles\" >";


if (($id=$_POST["id"]) && ($_POST["detalles"])) //si presionas "detalles" y capturas algun id
{
//MOSTRAR DATA DEL DETALLE
echo "<input type=\"submit\" value=\"Enviar\" id=\"enviar\">";
}

echo "</form>";

Por mauril26

161 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Abr 2008 05:11 pm
Haber si esto seria correcto

Código :

<html>
<head><title>Prueba</title></head>
<body>
<table width='800' border='0' align='center' cellpadding='0' cellspacing='0'>
  <tr>
    <td height='30' align="left">Seleccionar un newletter:</td>
  </tr>
  <tr>
    <td height='30' align="left" valign="middle"><?php

   $link = mysql_connect("serv", "usu", "pas"); 
   mysql_select_db("boletin");

   $sql = "SELECT * FROM newsletter";
   $res = mysql_query($sql) or die (mysql_error());

   if( mysql_num_rows($res) >0){

   echo '<form name="form1" method="post" action="vista_previa.php">';
   echo '<select name="lista">';

   while ($fila = mysql_fetch_array($res)) { //mientras existan resultados en la BD
      echo '<option value=" ' . $fila['id'] . ' "> '. $fila['descripcion'] .'</option>';
   }
   echo '</select>';
   echo '<input type="submit" value="Detalles" id="detalles" >';


   if (($id=$_POST['id']) && ($_POST['detalles'])) //si presionas "detalles" y capturas algun id
   {
//MOSTRAR DATA DEL DETALLE
   echo '<input type="submit" value="Enviar" id="enviar">';
   }

   ?></td>
  </tr>
 //VUELVO A REALIZAR LA CONSUTA PARA RECOGER LA FILA SELECCINADA
  <?php
   $link = mysql_connect("serv", "usu", "pas"); 
   mysql_select_db("boletin");

   $sql = "SELECT * FROM newsletter WHERE id= '.$_POST['id'].' ";
   $res = mysql_query($sql) or die (mysql_error());

   $titulo = $fila['$titulo'];
   
   ?>
  <tr>
    <td><? echo "$fila['$contenido_esp'];" ?></td>
  </tr>
</table>
</body>
</html>


Seria algo asi.?

Me da un error en la linea 38

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /usr/home/marisolpark/www/newsletter/vista_previa2.php on line 38

Por Idearis

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Abr 2008 09:18 pm
aca falta cerrar la llave:

Código :

if( mysql_num_rows($res) >0){


acá debes corregir la sentencia SQL:

Código :

$sql = "SELECT * FROM newsletter WHERE id= '".$_POST['id']."' ";


y acá debes corregir el uso de la variable dentro el string:

Código :

<td><? echo $fila['$contenido_esp']; ?></td>


Ademas creo que no me captaste bien lo que quise decir con esto:

Código :

if (($id=$_POST['id']) && ($_POST['detalles'])) //si presionas "detalles" y capturas algun id
{
//MOSTRAR DATA DEL DETALLE
echo '<input type="submit" value="Enviar" id="enviar">';
}


todo lo que esté dentro de ese "if" se mostrará cuando selecciones alguna opcion de la lista

Por mauril26

161 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Abr 2008 11:53 am
A Fuerza de ser un Güevudo (Lo estaras pensando).

Modifique los errores de codigo como me indicaste y funciono.

No me marca error alguno, sale la lista y el boton de envio. Pero no me devuelve el resultado que le marco.

Podrias explicarme, pues me perdi aki.

Código :

if (($id=$_POST['id']) && ($_POST['detalles'])) //si presionas "detalles" y capturas algun id
{
//MOSTRAR DATA DEL DETALLE
echo '<input type="submit" value="Enviar" id="enviar">';
}


Pues yo entiendo que captura el valor de id seleccionada en la lista, que al pulsar el boton se envia nuevamente a la pagina.
De ahi luego realizo otra consulta a Mysql

Código :

$sql = "SELECT * FROM newsletter WHERE id= '".$_POST['id']."' ";
   $res = mysql_query($sql) or die (mysql_error());

   $fila = mysql_fetch_array($res);


Donde esta vez le indico que la id se igual a la id que se selecciono anteriormente, para que me muestre los datos relativos a ese asunto

Vuelvo a colocar el codigo con las variables bien definidas (Puse algunas mal y resultaba que los datos no correspondian)

Código :

<html>
<head><title>Prueba</title></head>
<body>
<table width='800' border='0' align='center' cellpadding='0' cellspacing='0'>
  <tr>
    <td height='30' align="left">Seleccionar un newletter:</td>
  </tr>
  <tr>
    <td height='30' align="left" valign="middle"><?php

   $link = mysql_connect("serv", "usu", "pass"); 
   mysql_select_db("boletin");

   $sql = "SELECT * FROM newsletter";
   $res = mysql_query($sql) or die (mysql_error());

   if( mysql_num_rows($res) >0){

   echo "<form name=\"form1\" method=\"post\" action=\"vista_previa2.php\">";
   echo "<select name=\"lista\">";

   while ($fila = mysql_fetch_array($res)) { //mientras existan resultados en la BD
   echo "<option value=" . $fila['id'] . ">" . $fila["asunto"] ."</option>";
   }
   echo "</select>";
   echo "   "."<input type=\"submit\" value=\"Ver\" id=\"asunto\" >";

   if (($id=$_POST["id"]) && ($_POST["asunto"])) //si presionas "detalles" y capturas algun id
   {
   //MOSTRAR DATA DEL DETALLE
   echo "<input type=\"submit\" value=\"Enviar\" id=\"enviar\">";
   }
   echo "</form>";
   }
   echo $sql
   ?></td>
  </tr>
  <?php
  $link = mysql_connect("serv", "usu", "pass"); 
   mysql_select_db("boletin");

   $sql = "SELECT * FROM newsletter WHERE id= '".$_POST['id']."' ";
   $res = mysql_query($sql) or die (mysql_error());

   $fila = mysql_fetch_array($res);
   $titulo = $fila['$titulo_esp'];
  ?>
  <tr>
    <td><? echo $titulo_esp; ?></td>
  </tr>
</table>
</body>
</html>


Es correcto el uso de la segunda conculta a mysql o debe ir de otra manera acepto cualquier consejo.

Gracias de nuevo por la ayuda.

Por Idearis

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Abr 2008 03:24 pm
Si a continuacion agrego un script

<?php
if (isset($_POST['id']) {
echo " $_POST['id']";
}
?>

Deberia mostrarme la variebel que de vuelto de la capturar.

Por Idearis

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Abr 2008 04:46 pm
Replanteando que es gerundio.

Si envio el formulario a otra pagina

Código :

echo "<form name=\"form1\" method=\"post\" action=\"otra_pagina.php\">";
   echo "<select name=\"lista\">";
   while ($fila = mysql_fetch_array($res)) { //mientras existan resultados en la BD
   echo "<option value=" . $fila['id'] . ">" . $fila["asunto"] ."</option>";
   }
   echo "</select>";
   echo "   "."<input type=\"submit\" value=\"Ver\" id=\"id\" >";
   if (($id=$_POST["id"]) && ($_POST["asunto"])) //si presionas "detalles" y capturas algun id
   {
   //MOSTRAR DATA DEL DETALLE
   echo "<input type=\"submit\" value=\"Enviar\" id=\"enviar\">";
   }
   echo "</form>";


Como debo recoger las variables? con if (isset($_POST['enviar']) o ($_POST['id'])


Código :

if (isset($_POST['enviar']) {
$link = mysql_connect("serv", "usu", "pass"); 
      mysql_select_db("boletin");
$sql = "SELECT * FROM newsletter WHERE id='[color=red]".$_POST['id']."'[/color] "; (Etos seria correcto?)
$res = mysql_query($sql) or die (mysql_error());
}

Por Idearis

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Abr 2008 04:47 pm
Replanteando que es gerundio.

Si envio el formulario a otra pagina

Código :

echo "<form name=\"form1\" method=\"post\" action=\"otra_pagina.php\">";
   echo "<select name=\"lista\">";
   while ($fila = mysql_fetch_array($res)) { //mientras existan resultados en la BD
   echo "<option value=" . $fila['id'] . ">" . $fila["asunto"] ."</option>";
   }
   echo "</select>";
   echo "   "."<input type=\"submit\" value=\"Ver\" id=\"id\" >";
   if (($id=$_POST["id"]) && ($_POST["asunto"])) //si presionas "detalles" y capturas algun id
   {
   //MOSTRAR DATA DEL DETALLE
   echo "<input type=\"submit\" value=\"Enviar\" id=\"enviar\">";
   }
   echo "</form>";


Como debo recoger las variables? con if (isset($_POST['enviar']) o ($_POST['id'])


Código :

if (isset($_POST['enviar']) {
$link = mysql_connect("serv", "usu", "pass"); 
      mysql_select_db("boletin");
$sql = "SELECT * FROM newsletter WHERE id='[color=red]".$_POST['id']."'[/color] "; (Etos seria correcto?)
$res = mysql_query($sql) or die (mysql_error());
}

Por Idearis

19 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.