SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: RadicalEd en Martes 19 de Septiembre de 2006, 17:05

Título: Cargar Datos En Un Combo
Publicado por: RadicalEd en Martes 19 de Septiembre de 2006, 17:05
Hola chicos de SoloCodigo, tengo un problema como siempre con estas pinches páginas; resulta que tengo que cargar datos de una DB en un combo, pero no me sale, el código que tengo es el siguiente:
<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>HTML </td></tr><tr><td id='CODE'><!--html1--><select name="cat" id="cat">
 <option value="0">Elija una categoría...</option>
<?
$link = mysql_connect("localhost", "usuario", "pass");
mysql_select_db("DB", $link);

//obtengo los datos de la base
$result = mysql_query("SELECT * FROM categorias", $link);

if (!$result){
   echo "fallo";
   exit;
}
else
{
//mediante un while recorro todas las categorias y las imprimo en pantalla
while($row = mysql_fetch_array($result)){
$categoria = $row[0];
$nombre = $row[2];
 echo "<option value=$categoria>$nombre</option>";
}
}
?>
</select><!--html2--></td></tr></table><div class='postcolor'><!--html3-->
El problema es que no muestra si si o no se conecta y pues la conexión y todo esta bien, pero no me da nada a la hora de imprimir datos.

Me pueden explicar que esta mal.

Gracias Chao.
Título: Re: Cargar Datos En Un Combo
Publicado por: RadicalEd en Martes 19 de Septiembre de 2006, 17:26
De esta forma si me carga :devil:  :comp:
<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>HTML </td></tr><tr><td id='CODE'><!--html1--><?php
$link = mysql_connect("localhost", "usuario", "pass");
mysql_select_db("DB", $link);
echo "<select name='lin'>";
echo "<option>Seleccione Línea</option>";
$result=mysql_query("SELECT * FROM lineas", $link)or die (mysql_error());
while ($row=mysql_fetch_array($result)) {
$nombre= $row["idlinea"];
$categorias = $row["descripcion"];
echo "<option value=\"$categorias\">$nombre</option>";
}
echo "</select>";
?><!--html2--></td></tr></table><div class='postcolor'><!--html3-->
Solo cambien la tabla sino que ya empece con la segunda.

Ahora el problema es que la primer tabla que se debe cargar es esta que se llama Línea y pues la tabla categorias depende de esta, 'tonces cuando yo selecciono una línea en otro combo se me deben desplegar todas las categorias de esa línea, ahora como le hago????? :(

Gracias Chao.
Título: Re: Cargar Datos En Un Combo
Publicado por: ArKaNtOs en Martes 19 de Septiembre de 2006, 17:28
mira a mi si me salio :P lo acabo de intentar pero de esta manera :)

Código: Text
  1. &#60;?php
  2. &#036;conexion=mysql_connect(&#34;localhost&#34;, &#34;user&#34;, &#34;pass&#34;);
  3. mysql_select_db(&#34;mibase&#34;,&#036;conexion);
  4. if (!&#036;conexion) {
  5.  die('No se puede conectar: ' . mysql_error());
  6. }
  7. &#036;con=&#34;SELECT Nombre FROM Articulo&#34;;
  8. &#036;res=@mysql_query(&#036;con,&#036;conexion);
  9. if(!&#036;res){
  10.  echo &#34;:P fallo&#34;;
  11. }
  12. else{
  13.   echo &#34;&#60;select name='select1'&#62;&#34;;
  14.   while (&#036;fila=mysql_fetch_array(&#036;res)){
  15.     echo &#34;&#60;option&#62;&#34;, &#036;fila['Nombre'], &#34;&#60;/option&#62;&#34;;
  16.   }
  17.   echo &#34;&#60;/select&#62;&#34;;
  18. }
  19. ?&#62;
  20.  

Te me adelantaste perdon :P
Título: Re: Cargar Datos En Un Combo
Publicado por: ArKaNtOs en Martes 19 de Septiembre de 2006, 17:50
Citar
Ahora el problema es que la primer tabla que se debe cargar es esta que se llama Línea y pues la tabla categorias depende de esta, 'tonces cuando yo selecciono una línea en otro combo se me deben desplegar todas las tablas de esa línea, ahora como le hago????? sad.gif

Explicate un poco mejor :P es que no te entendi jejejeje
Título: Re: Cargar Datos En Un Combo
Publicado por: RadicalEd en Martes 19 de Septiembre de 2006, 18:00
Cita de: "ArKaNtOs"

Explicate un poco mejor :P es que no te entendi jejejeje
Si ni siquiera yo entendi :P

A ver un ejemplo; cuando llenan el formulario de registro de la chucha de Hotmail, y este les pide el nombre del país donde viven, el carga en un siguiente combo el nombre de los estados (departamentos) que hay en ese país, yo me imagino que esto lo hacen con javascript (Aunque creo que es muy largo), 'tonces lo mejor es hacerlo cojiendo los campos de una DB, 'tonces cuando yo escojo un campo del combo línea p.e. Aseo, en el combo Categorías me debera mostrar todas las categorías que dependan de aseo (AMBIENTADORES, DETERGENTES LIQUIDOS, BOLSAS PLASTICAS, DETERGENTE POLVO) y así.

Ahora si me hago entender?
Título: Re: Cargar Datos En Un Combo
Publicado por: ArKaNtOs en Martes 19 de Septiembre de 2006, 18:36
despues de investigar algo me encontre con que a fuerzas tenia que recargar la pagina asi que hice algo asi para darte algunas ideas :)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
<script LANGUAGE="JavaScript">
  function ir(sitio)
 {
   document.location.href = sitio.options[sitio.selectedIndex].value
 }
</SCRIPT>
</head>
<body>
<?php
$conexion=mysql_connect("localhost", "user", "pass");
mysql_select_db("midb",$conexion);
if (!$conexion) {
 die('No se puede conectar: ' . mysql_error());
}
$con="SELECT clave, Nombre FROM articulo";
$res=@mysql_query($con,$conexion);
if(!$res){
 echo ":P fallo";
}
else{
  echo "<form method='GET' name='menu' ><select name='select1' onChange='ir(this.form.select1)'>";
  while ($fila=mysql_fetch_array($res)){
    echo "<option value='/index.php?", $fila['clave'], "'>", $fila['Nombre'], "</option>";
  }
  echo "</select></form>";
}
?>
</body>
</html>

[Modificado]perdon puse algo mal, seria asi
<option value='/index.php?variable=", $fila['clave'], "'>
Título: Re: Cargar Datos En Un Combo
Publicado por: RadicalEd en Martes 19 de Septiembre de 2006, 19:04
Cuando se recarga la página se pierde el dato, y me toco que ponerla de esta manera:
echo "<option value=\"agregarproductos.php\">$descrip</option>";
Por que me sacaba este error.
Código: Text
  1.  
  2. Warning: Unexpected character in input: '&#092;' (ASCII=92) state=1 in /var/www/vhosts/distribuidorafuller.com/httpdocs/pedidos/agregarproductos.php on line 37
  3.  
  4. Parse error: parse error, unexpected '&#092;&#34;', expecting ',' or ';' in /var/www/vhosts/distribuidorafuller.com/httpdocs/pedidos/agregarproductos.php on line 37
  5.  
  6.  
[/color]
Título: Re: Cargar Datos En Un Combo
Publicado por: ArKaNtOs en Martes 19 de Septiembre de 2006, 19:09
que curioso a mi no me salta ningun error, por cierto ya viste la modificacion :P
Título: Re: Cargar Datos En Un Combo
Publicado por: RadicalEd en Martes 19 de Septiembre de 2006, 19:19
Me puedes regalar la página donde sacastes la info, es que hay algunas cosas que no me cuadran, por ejemplo

variable=", $fila['clave'], "'>

Esto que viene siendo, pues se que $fila['clave'], para mi es una variable '$linea', pero esa función o yo no se 'variable=' no comprendo a que se refiere.
Título: Re: Cargar Datos En Un Combo
Publicado por: ArKaNtOs en Martes 19 de Septiembre de 2006, 19:25
Cita de: "RadicalEd"
Me puedes regalar la página donde sacastes la info, es que hay algunas cosas que no me cuadran, por ejemplo

variable=", $fila['clave'], "'>

Esto que viene siendo, pues se que $fila['clave'], para mi es una variable '$linea', pero esa función o yo no se 'variable=' no comprendo a que se refiere.
no lo saque de ningun sitio  :huh: solo consulte como hacer la redireccion en js :(
y lo de varible=blablabla

es como esto
foros.solocodigo.com/index.php?showtopic=24090&st=0&#entry85401

lo unico que harias seria obtener ese valor que es pasado por GET y asi modificar tu combo, ahorita me pongo a intentar hacerte un ejem  :)
Título: Re: Cargar Datos En Un Combo
Publicado por: RadicalEd en Martes 19 de Septiembre de 2006, 19:27
Sorry.
Adjunto el código:
<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>HTML </td></tr><tr><td id='CODE'><!--html1--><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>Agregar Producto</title>
  <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<script LANGUAGE="JavaScript">
function ir(sitio)
{
document.location.href = sitio.options[sitio.selectedIndex].value
}
</script>
</head>
<body>
<div style="text-align: center;"><img src="images/toppic2.gif" height="65" width="419"></div>
<br>
<form action="agregar.php" method="GET" name="form1">
  <font color="#666666" face="Arial, Helvetica, sans-serif">
  <h3>Nuevos Productos</h3>
  <div align="justify">Este formulario sirve para agregar nuevos productos a la DB<br><br>
  </div>
  </font>

  <font color="#666666" face="Arial, Helvetica, sans-serif"
 size="2">Línea:</font>
              

<?php
$link = mysql_connect("localhost", "user", "pass");
mysql_select_db("DB", $link);
echo "<select name='lin' id='lin' onChange='ir(this.form.lin)'>";
echo "<option>Seleccione Línea</option>";
$result=mysql_query("SELECT * FROM lineas", $link)or die (mysql_error());
while ($row=mysql_fetch_array($result)) {
$linea = $row["idlinea"];
$descrip = $row["descripcion"];
//echo "<option value=\"agregarproductos.php\">$descrip</option>";
//echo "<option value=\'agregarproductos.php", $linea\"'>$descrip</option>";
echo "<option value='agregarproductos.php?variable=", $linea, "'>$descrip</option>";
//echo "<option value=\"$linea\">$descrip</option>";
}
echo "</select>";
?>
<br>

  <p><font color="#666666"
 face="Arial, Helvetica, sans-serif" size="2">Categoria:</font>
         

<?php
echo "<select name='cat' id='cat'>";
echo "<option>Seleccione Categoría</option>";
$results=mysql_query("SELECT * FROM categorias WHERE linea = '$descrip'", $link)or die (mysql_error());
while ($row=mysql_fetch_array($results)) {
$nombre= $row["nombre"];
$categorias = $row["idcategorias"];
echo "<option value=\"$categorias\">$nombre</option>";
}
echo "</select>";
?>
</p>

  <p><font color="#666666"
 face="Arial, Helvetica, sans-serif" size="2">Referencia:</font>
        
<input name="ref" id="ref" size="30" type="text">
  </p>
  <font color="#666666" face="Arial, Helvetica, sans-serif"
 size="2">Descripción:</font>
       
<input name="des" id="des" size="30" type="text"><br><br>
<input name="Submit" value="Enviar" type="submit">
</form>
</body>
</html>
<!--html2--></td></tr></table><div class='postcolor'><!--html3-->
Título: Re: Cargar Datos En Un Combo
Publicado por: ArKaNtOs en Martes 19 de Septiembre de 2006, 19:33
lo que tienes que hacer es recoger el valor de la variable

Citar
$results=mysql_query("SELECT * FROM categorias WHERE linea = '$descrip'"
cambialo por
$descripcion=$_GET['variable'];
$results=mysql_query("SELECT * FROM categorias WHERE linea = '$descripcion'"

:)
Título: Re: Cargar Datos En Un Combo
Publicado por: ibito en Martes 19 de Septiembre de 2006, 19:35
Otra manera de tener selects dependientes es con AJAX  :D
Título: Re: Cargar Datos En Un Combo
Publicado por: RadicalEd en Martes 19 de Septiembre de 2006, 19:40
Gracias ArKaNtOs, mira como quedo:
<!--html--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>HTML </td></tr><tr><td id='CODE'><!--html1--><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>Agregar Producto</title>
  <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<script LANGUAGE="JavaScript">
function ir(sitio)
{
document.location.href = sitio.options[sitio.selectedIndex].value
}
</script>
</head>
<body>
<div style="text-align: center;"><img src="images/toppic2.gif" height="65" width="419"></div>
<br>
<form action="agregar.php" method="GET" name="form1">
  <font color="#666666" face="Arial, Helvetica, sans-serif">
  <h3>Nuevos Productos</h3>
  <div align="justify">Este formulario sirve para agregar nuevos productos a la DB<br><br>
  </div>
  </font>

  <font color="#666666" face="Arial, Helvetica, sans-serif"
 size="2">Línea:</font>
              

<?php
$link = mysql_connect("localhost", "user", "pass");
mysql_select_db("DB", $link);
echo "<select name='lin' id='lin' onChange='ir(this.form.lin)'>";
echo "<option>Seleccione Línea</option>";
$result=mysql_query("SELECT * FROM lineas", $link)or die (mysql_error());
while ($row=mysql_fetch_array($result)) {
$linea = $row["idlinea"];
$descrip = $row["descripcion"];
//echo "<option value=\"agregarproductos.php\">$descrip</option>";
//echo "<option value=\'agregarproductos.php", $linea\"'>$descrip</option>";
echo "<option value='agregarproductos.php?variable=", $linea, "'>$descrip</option>";
//echo "<option value=\"$linea\">$descrip</option>";
}
echo "</select>";
?>
<br>

  <p><font color="#666666"
 face="Arial, Helvetica, sans-serif" size="2">Categoria:</font>
         

<?php
echo "<select name='cat' id='cat'>";
echo "<option>Seleccione Categoría</option>";
$linea = $_GET["variable"];
$results=mysql_query("SELECT * FROM categorias WHERE linea = '$linea'", $link)or die (mysql_error());
while ($row=mysql_fetch_array($results)) {
$nombre= $row["nombre"];
$categorias = $row["idcategorias"];
echo "<option value=\"$categorias\">$nombre</option>";
}
echo "</select>";
?>
</p>

  <p><font color="#666666"
 face="Arial, Helvetica, sans-serif" size="2">Referencia:</font>
        
<input name="ref" id="ref" size="30" type="text">
  </p>
  <font color="#666666" face="Arial, Helvetica, sans-serif"
 size="2">Descripción:</font>
       
<input name="des" id="des" size="30" type="text"><br><br>
<input name="Submit" value="Enviar" type="submit">
</form>
</body>
</html>
<!--html2--></td></tr></table><div class='postcolor'><!--html3-->
Gracias man te debo una grande.
Título: Re: Cargar Datos En Un Combo
Publicado por: ArKaNtOs en Martes 19 de Septiembre de 2006, 19:41
Siempre es grato ayudar alguien :)
Título: Re: Cargar Datos En Un Combo
Publicado por: RadicalEd en Martes 19 de Septiembre de 2006, 19:45
Seria mucho pedir si te pregunto como vuelvo a dejar el primer combo con el valor de la variable, es que se me pierde :(  :(
Título: Re: Cargar Datos En Un Combo
Publicado por: ArKaNtOs en Martes 19 de Septiembre de 2006, 20:01
ya estuve intentando e intentado y nada  :(  pero dejame seguir probando y espero tener una solucion :comp:  :whistling:
Título: Re: Cargar Datos En Un Combo
Publicado por: ibito en Martes 19 de Septiembre de 2006, 20:08
Cita de: "RadicalEd"
Seria mucho pedir si te pregunto como vuelvo a dejar el primer combo con el valor de la variable, es que se me pierde :(  :(  
no entiendo que quieres hacer?
Título: Re: Cargar Datos En Un Combo
Publicado por: RadicalEd en Martes 19 de Septiembre de 2006, 20:31
Si revisas el código, cuando se carga de nuevo la página el valor escogido en el primer combo, digamos 'Aseo', este se pierde y vuelve a quedar la frase "Seleccione Línea", pos yo necesito que la selección de ese combo también quede, por que eso se guardara en una tabla.
Título: Re: Cargar Datos En Un Combo
Publicado por: ibito en Martes 19 de Septiembre de 2006, 20:41
sencillo

en la parte de
Código: Text
  1.  
  2. while (&#036;row=mysql_fetch_array(&#036;result)) {
  3. &#036;linea = &#036;row[&#34;idlinea&#34;];
  4. &#036;descrip = &#036;row[&#34;descripcion&#34;];
  5. //echo &#34;&#60;option value=&#092;&#34;agregarproductos.php&#092;&#34;&#62;&#036;descrip&#60;/option&#62;&#34;;
  6. //echo &#34;&#60;option value=&#092;'agregarproductos.php&#34;, &#036;linea&#092;&#34;'&#62;&#036;descrip&#60;/option&#62;&#34;;
  7. echo &#34;&#60;option value='agregarproductos.php?variable=&#34;, &#036;linea, &#34;'&#62;&#036;descrip&#60;/option&#62;&#34;;
  8. //echo &#34;&#60;option value=&#092;&#34;&#036;linea&#092;&#34;&#62;&#036;descrip&#60;/option&#62;&#34;;
  9. }
  10.  
  11.  

solo cambia la linea de
Código: Text
  1.  
  2. echo &#34;&#60;option value='agregarproductos.php?variable=&#34;, &#036;linea, &#34;'&#62;&#036;descrip&#60;/option&#62;&#34;;
  3.  
  4.  

por:
Código: Text
  1.  
  2. if(&#036;_GET['variable']==&#036;linea)
  3.     echo &#34;&#60;option value='agregarproductos.php?variable=&#34;.&#036;linea. &#34;' selected='selected'&#62;&#036;descrip&#60;/option&#62;&#34;;
  4. else
  5.     echo &#34;&#60;option value='agregarproductos.php?variable=&#34;.&#036;linea. &#34;'&#62;&#036;descrip&#60;/option&#62;&#34;;
  6.  
  7.  

O si quieres puedes usar un if corto para que se vea mejor :D
Código: Text
  1.  
  2. echo &#34;&#60;option value='agregarproductos.php?variable=&#34;. &#036;linea. &#34;'&#34;.(&#036;_GET['variable']==&#036;linea?&#34;selected='selected'&#34;:&#34;&#34;).&#34;&#62;&#036;descrip&#60;/option&#62;&#34;;
  3.  
  4.  
Título: Re: Cargar Datos En Un Combo
Publicado por: RadicalEd en Martes 19 de Septiembre de 2006, 21:50
Gracias ibito, me sirvio full.

Solo por molestar aunque ya me trunca, como haria para pasar estos valores a dos TextBox y que no se lleguen a borrar.

Gracias Chao.
Título: Re: Cargar Datos En Un Combo
Publicado por: ibito en Martes 19 de Septiembre de 2006, 23:05
Lo que sucede, es que tu estás mandando los valores de los selects por medio de GET, y para que el valor por default de un select, o mejor dicho, el valor selected (seleccionado) de la lista solo tienes que agregarle
Código: Text
  1.  
  2. selected=&#34;selected&#34;
  3.  
  4.  
al tag de <option>.

Entonces, con un textbox sería igual pero en la propiedad "value"

por ejemplo:
Código: Text
  1.  
  2. if(isset(&#036;_GET['linea']))
  3. {
  4.     echo '&#60;input type=&#34;textbox&#34; name=&#34;textfield&#34; value=&#34;'.&#036;_GET['linea'].'&#34;&#62;';
  5. }
  6. else
  7. {
  8.     echo '&#60;input type=&#34;textbox&#34; name=&#34;textfield&#34; value=&#34;&#34;';
  9. }
  10.  
  11.  

No se si me expliqué, cualquier duda pregunta  :D
Título: Re: Cargar Datos En Un Combo
Publicado por: angel_del_madrid en Jueves 21 de Junio de 2007, 17:14
Hola, que estoy haciendo mal, me parece que no he entendido muy bien lo de las direcciones que hay que pasar en el action" " del formulario o a los values " " del select
Es eso o tengo alguh otro error.
Saludos


<script LANGUAGE="JavaScript">
function ir(sitio)
{
document.location.href = sitio.options[sitio.selectedIndex].value
}
</script>

</head>

<body>
<table width="200" border="1">
  <tr>
    <td> </td>
    <td>
   
   <form action="agregar.php" method="GET" name="form1">
   
   <?php
   require_once("dataAccess.php");
connect();
echo "<select name='lin' id='lin' onChange='ir(this.form.lin)'>";
echo "<option>Seleccione </option>";
$result=mysql_query("SELECT grupo FROM `grupos_docentes`");
while ($row=mysql_fetch_array($result)) {
$linea = $row["grupo"];
$descrip = $row["grupo"];
//echo "<option value=\"agregarproductos.php\">$descrip</option>";
//echo "<option value=\'agregarproductos.php", $linea\"'>$descrip</option>";
echo "<option value='prueba1.php?variable=", $linea, "'>$descrip</option>";
//echo "<option value=\"$linea\">$descrip</option>";
}
echo "</select>";
?>

   </td>
  </tr>
</table>
<table width="200" border="1">
  <tr>
    <td height="29">
   <?php
echo "<select name='cat' id='cat'>";
echo "<option>Seleccione Estudiante</option>";
$linea = $_GET['variable'];
$results=mysql_query("SELECT solapin FROM `estudiante` WHERE(`estudiante`.grupo='$linea')")or die (mysql_error());
while ($row=mysql_fetch_array($results)) {
$nombre= $row["solapin"];
$categorias = $row["solapin"];
echo "<option value=\"$categorias\">$nombre</option>";
}
echo "</select>";
?>
</p>

</form>