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

Lo que selecciono de un select a una variable

Estas en el tema de Lo que selecciono de un select a una variable en el foro de Mysql en Foros del Web. Bueno amigos espero que esta vez no me equivocare de foro al hacer mi pregunta, si es así que alguien lo mueva o me diga ...
  #1 (permalink)  
Antiguo 13/02/2012, 16:48
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Lo que selecciono de un select a una variable

Bueno amigos espero que esta vez no me equivocare de foro al hacer mi pregunta, si es así que alguien lo mueva o me diga como hacerlo.

Vereis en este código lo que hago es seleccionar unos registros de una base de datos que tiene 2 tablas "countries y letrasgrupo"
la primera tabla tiene 2 campos un campo "id_grupo" y otro "country"
la segunda tabla tiene 2 campos un campo "id" y otro"letra"

He puesto un campo de texto para buscar y funciona bien, utilizo para ello la variable $criterio y he puesto un select que relleno con los datos del campo "letra" de la tabla "letrasgrupo", tambien se rellena correctamente.
Por supuesto los campos que tengo que relacionar entre ambas tablas son "countries.id_grupo y letragrupos.id

Bueno mi problema es que tal como tengo la consulta de momento hecha (Porque no puedo ni debo eliminar la parte de SQL_CALC_FOUND_ROWS ni tocar la parte del LIMIT)debo de poner en la misma, esa relación y lo segundo es que segun la letra que seleccione en el select debe de coger el "id" correspondiente de la misma tabla y dejarlo en una variable ya que lo necesito para añadirlo a esa misma consulta y me presente los registros que cumplen las 2 condiciones la que puesto en el campo de texto mas la letra correspondiente que he seleccionado en el select, quiero recordar que cuando selecciono una letra en realidad estoy seleccionando el numero que tiene asociado esa letra en el campo "id" de la misma tabla.

Chic@s acudo a vosotros por que no se como hacerlo he probado de todo a ver si lo conseguia pero ni por esas a ver si me podeis ayudar

Gracias a tod@s, un saludo.


Código PHP:
meta http-equiv="content-type" content="text/html;charset=UTF-8">
</head>
<?php
$conexion 
mysql_connect('localhost''root''');
mysql_select_db('PruebaBusqueda');
?>
        
        
   <form name="form1"  action="Prueba.php" method="get"> 
    Criterio de b&uacute;squeda: 
    <input type="text" name="criterio" size="22" maxlength="150">
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    
    <select name="selpoblacion" id="selpoblacion" style class="Guias2">
        <option value="-1" selected>Todas las poblaciones</option>
        
<?php
    $tabletrasgrupo 
mysql_query("SELECT * FROM letrasgrupo ORDER BY letra ASC"); // Seleccionamos las ciudades de la tabla ciudades
    
while ($registroletra mysql_fetch_array($tabletrasgrupo)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
?>

<option value="<?php echo $registroletra['Id']; ?>"><?php echo $registroletra['letra']; ?></option>

<?php
    
// termina la zona de repeticion
    
mysql_free_result($tabletrasgrupo); // se libera la memoria usada por la tabla
?>
    </select>
    <input type="submit" value="Buscar"> 
    </form>
  
<?php 
//Aqui defino las variables para los criterios busqueda: ***************        
$criterio = isset($_GET["criterio"])? $_GET["criterio"]: '';
$txt_criterio=isset($_GET["txt_criterio"])? $_GET["txt_criterio"]: '';    

//inicializo el criterio y recibo cualquier cadena que se desee buscar 
$criterio "";
if (isset(
$_GET['criterio'])) {
   
$txt_criterio $_GET["criterio"]; 
    
$criterio " where country like '%" $txt_criterio "%'"
}    

        
// Número de registros que se debe mostrar en una página?
        
$records_per_page 5;

        
// Incluye la clase de paginación
        
require 'Zebra_Pagination.php';

        
// Instancia del objeto paginación
        
$pagination = new Zebra_Pagination();

       
         
// Aqui monto mi consulta a falta de poner lo seleccionado en el select
        
$MySQL 'SELECT SQL_CALC_FOUND_ROWS country FROM countries ' $criterio 'LIMIT ' . (($pagination->get_page()- 1) * $records_per_page) . ', ' $records_per_page '';
    

        
// Si la consulta no puede ser ejecutada
        
if (!($result = @mysql_query($MySQL))) {

            
// Parada de la ejecución y el mensaje de error de visualización
            
die(mysql_error());

        }
    
        
// Recuperar el número total de registros en la tabla
        
$rows mysql_fetch_assoc(mysql_query('SELECT FOUND_ROWS() AS rows'));

        
// Pasar el número total de registros a la clase de paginación
        
$pagination->records($rows['rows']);

        
// Registros por página
        
$pagination->records_per_page($records_per_page);

?>
        <table class="countries" border="1">

            <tr><th>Country</th></tr>

            <?php /*?><?php $index = 0?><?php */?>

            <?php while ($row mysql_fetch_assoc($result)):?>

            <tr<?php /*?><?php echo $index++ % 2 ? ' class="even"' : ''?><?php */?>>
                <td><?php echo $row['country']?></td>
            </tr>

            <?php endwhile?>

        </table>
        
      

<?php


        
        
echo "Número de registros encontrados: " $rows['rows']// Esto luego se puede quitar esta variable es la que cuenta la cantidad de registros encontrada
?>
  #2 (permalink)  
Antiguo 14/02/2012, 01:11
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Lo que selecciono de un select a una variable

No se entiende nada, resume la pregunta y el código,
Saludos.
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 14/02/2012, 02:55
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Lo que selecciono de un select a una variable

Tienes razón voy a ir por partes que sera mas facil.

Tengo un select que relleno con el campo de una tabla, lo que selecciono con dicho select, lo quiero pasar con una variable a mi consulta, pero debo mantener en la misma estas dos instrucciones ya que me son necesarias para una parte importante del resto de mi código:
SQL_CALC_FOUND_ROWS y
'LIMIT ' . (($pagination->get_page()- 1) * $records_per_page) . ', ' . $records_per_page . '';

Esta es la parte con la que relleno el select y funciona bien: La pongo por si hubiera que añadir algo en esta parte del código

Código PHP:
Ver original
  1. <form name="form1"  action="Prueba.php" method="get">
  2. <select name="selpoblacion" id="selpoblacion" style class="Guias2">
  3.         <option value="-1" selected>Todas las poblaciones</option>
  4.          
  5. <?php
  6.     $tabletrasgrupo = mysql_query("SELECT * FROM letrasgrupo ORDER BY letra ASC"); // Seleccionamos las ciudades de la tabla ciudades
  7.     while ($registroletra = mysql_fetch_array($tabletrasgrupo)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
  8. ?>
  9.  
  10. <option value="<?php echo $registroletra['Id']; ?>"><?php echo $registroletra['letra']; ?></option>
  11.  
  12. <?php
  13.     } // termina la zona de repeticion
  14.     mysql_free_result($tabletrasgrupo); // se libera la memoria usada por la tabla
  15. ?>
  16.     </select>
  17.     <input type="submit" value="Buscar">  
  18.     </form>

Y esta es mi consulta donde quiero poner la nueva variable (que no se crear) y que contendra lo que he seleccionado en el select, para que filtre mis datos por dicha variable y por la variable $criterio que ya esta puesta.

Código PHP:
Ver original
  1. // Aqui esta mi consulta a falta de poner la variable correspondiente a lo seleccionado en el select
  2.         $MySQL = 'SELECT SQL_CALC_FOUND_ROWS country FROM countries ' . $criterio . 'LIMIT ' . (($pagination->get_page()- 1) * $records_per_page) . ', ' . $records_per_page . '';

Espero haberme esplicado mejor esta vez.

Un saludo.
  #4 (permalink)  
Antiguo 14/02/2012, 03:03
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Lo que selecciono de un select a una variable

NO entiendo al 100% pero igual te comento un par de cosas.
Si haces una consulta con mysql_query, puedes recorrer el resultado con mysql_fetch_assoc(). De manera que:

Código PHP:
Ver original
  1. $sql = "select * from tabla";
  2. $query = mysql_query($sql);//Query es un recurso
  3. while($f = mysql_fetch_assoc($query))
  4. {
  5. //En este bucle $f contiene los campos de tu consulta de la forma:
  6. //$f['campo1']
  7. //$f['campo1'], por tanto
  8. $myVariable = $f['elcampoquequierescapturar'];
  9. }

A continuación, otra select hace la siguiente tarea, por ejemplo

Código PHP:
Ver original
  1. $sql = "select * from table2 where campo = $myVariable";

PUedes utilizar SQL_CALC_FOUND_ROWS y
'LIMIT ' . (($pagination->get_page()- 1) * $records_per_page) . ', ' . $records_per_page . ''; donde quieras ya que en principio no tiene nada que ver con lo que comentas.
Salu2!
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 14/02/2012, 10:20
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Lo que selecciono de un select a una variable

Bueno nos vamos acercando a la solución, solo queda una de las dos cosas. ¡ Ha Gracias por todo! aunque el problema es pequeño, yo no se solucionarlo por eso voy a tratar de darte toda la información lo mas clara posible.

He creado la variable y la he puesto en la consulta aunque para hacerla funcionar momentaneamente he hecho una pequeña trampa y le he dado un valor fijo y parece ser que funciona, y ahora paso a decirte el porque he hecho la trampa

Primero te dire como es mi tabla porque es muy simple solo tiene dos campos en el id (hay números) y en el campo letra (hay letras).

id ** letra
1 ****** A
2 ****** B
3 ****** C
4 ****** D

Etc...

Yo en realidad relleno el select con el campo letra de mi tabla y eso es lo que quiero, por eso digo que funciona hasta ahi bien, pero al seleccionar una de las letras en el select el valor que quiero pasar a la variable que he puesto "$myvariable" es el valor del campo "id" correspondiente a esa letra, y no como hago ahora que le paso el valor del campo"letra", por eso para probarlo he hecho la trampa de darle a $myvariable un valor númerico y he comprobado que funciona.
El código que tengo para rellenar el select con la variable que me coge el campo erroneo es este. La trampa para que así lo entiendas mejor, esta comentada en la linea "10"
Código PHP:
Ver original
  1. <form name="form1"  action="PruebaBusqueda.php" method="get">
  2.  <select name="selpoblacion" id="selpoblacion" style class="Guias2">
  3.         <option value="-1" selected>Todas las poblaciones</option>
  4.        
  5. <?php
  6.     $tabletrasgrupo = mysql_query("SELECT * FROM letrasgrupo ORDER BY letra ASC"); // Seleccionamos las ciudades de la tabla ciudades
  7.     while ($registroletra = mysql_fetch_array($tabletrasgrupo)) { // Vamos a repetir una Option (opcion), de la Lista Desplegable, por cada ciudad en la tabla
  8.  
  9. $myVariable = $registroletra['letra'];
  10. //$myVariable = 3 // EN ESTA LINEA HAGO LA TRAMPA  
  11.  
  12. ?>
  13.  
  14. <option value="<?php echo $registroletra['Id']; ?>"><?php echo $registroletra['letra']; ?></option>
  15.  
  16. <?php
  17.     } // termina la zona de repeticion
  18.     mysql_free_result($tabletrasgrupo); // se libera la memoria usada por la tabla
  19.    
  20. ?>
  21.     </select>
  22.     <input type="submit" value="Buscar">
  23.     </form>

En cuanto al problema que tenia en la consulta sobre las variables ya esta SOLUCIONADO consegui hacerla funcionar.

Última edición por ra120354; 14/02/2012 a las 13:05
  #6 (permalink)  
Antiguo 14/02/2012, 13:16
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Lo que selecciono de un select a una variable

Aquí tienes otra versión de tu código que tal vez se lea mejor:

Código PHP:
Ver original
  1. <form>
  2. <?php
  3. //1. La select
  4. $sql = "SELECT * FROM letrasgrupo ORDER BY letra ASC";
  5. //2. La consulta a la db
  6. if(!$query = mysql_query($sql))die('Imposible hacer la consulta: '.mysql_error());
  7. ?>
  8. <select name="selpoblacion" id="selpoblacion" style class="Guias2">
  9. <option value="-1" selected>Todas las poblaciones</option>
  10. <?php
  11.     //Por cada registro de la DB, un option
  12.     while($fetch = mysql_fetch_assoc($query))
  13.     {
  14.         //OJO: ESTA ASIGNACION HACE QUE myVar TOME EL VALOR DE EL ULTIMO REGISTRO QUE TRAE ESTA SELECT
  15.         //ADEMAS, ESTAS ASIGNANDO EL VALOR DE LETRA Y PARECE QUE LO QUE NECESITAS ES EL VALOR DE ID
  16.         $myVar = $registroletra['letra'];
  17.         ?>
  18.         <option value="<?php echo $registroletra['Id']; ?>"><?php echo $registroletra['letra']; ?></option>
  19.         <?php
  20.     }
  21.     mysql_free_result($query);
  22. ?>
  23. </select>
  24. <input type="submit" value="Buscar">
  25. </form>
No entiendo lo de la trampa, pero estás asignando el valor de letra y no el de id, además, como te comento, si lo haces así, $myVar toma el valor del ultimo registro que trae la select. No sé qué esperas de esa variable.
Respecto de la variable $criterio, no puedo decirte nada porque no sé donde va ni que valor trae. En cualquier caso , haz un echo de la select y pruebala en un cliente mysql para ver qué sale.
Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #7 (permalink)  
Antiguo 14/02/2012, 14:06
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Lo que selecciono de un select a una variable

Gracias por tu respuesta.

Sobre la variable $criterio ya lo he solucionado así que eso se puede aparcar, volvamos a la variable $myVar, efectivamente necesito pasarle el valor de "id" y NO el del campo letra y eso es lo que no me sale, posiblemente porque estare algo ofuscado.

El select si se tiene que rellenar con el campo letra y en estos momentos mi código lo hace, posiblemente tenga que cambiar toda esa parte del código porque no este muy bien desarroyada, pero hacerlo lo hace.

Por lo tanto, creo que sera mejor empezar desde cero esta parte del código, olvidemos donde esta colocada la variable $myVariable, con toda probabilidad estara mal colocada y olvidemos toda esa parte de código, voy a empezar de nuevo diciendote exactamente lo que necesito y en base a eso me dices lo que tengo que cambiar o hacer si no te importa.

RESUMO LO QUE NECESITO
1º) Que el select se rellene con el campo "letra" de mi tabla.
2º) y que al seleccionar una letra en el select le pase a la variable $myVar su valor correspondiente del campo "id" de la misma tabla.

Te agradezco la versión de tu código que se lee mucho mejor pero no soluciona lo que necesito, por eso he resumido mi necesidad, es posible que tenga que cambiar toda esta parte del código pero como ya te he dicho en estos momentos no se como hacerla.

Un saludo y muchas gracias.
  #8 (permalink)  
Antiguo 15/02/2012, 01:51
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Lo que selecciono de un select a una variable

1º) Que el select se rellene con el campo "letra" de mi tabla.
Ya está hecho, esto es exactamente lo que hace tu código

2º) y que al seleccionar una letra en el select le pase a la variable //$myVar su valor correspondiente del campo "id" de la misma tabla.
Cuando el usuario hace click en enviar, en PruebaBusqueda.php, el id de la letra seleccionada está almacenado en la variable:

$_POST['selpoblacion'];

Es imposible que puedas completar este programa si no lees un tutorial sobre formularios. Es un trabajo de 5 minutos pero no tienes los conocimientos básicos de PHP ni HTML. Mira php.net donde se explica cómo funciona esto. Saludos,
__________________
Fere libenter homines, id quod volunt, credunt.
  #9 (permalink)  
Antiguo 15/02/2012, 03:22
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Lo que selecciono de un select a una variable

Gracias , voy a hacerlo, aconsejame un tutorial

Un saludo

Última edición por ra120354; 15/02/2012 a las 03:27

Etiquetas: php, query, registros, select, sql, tabla, variables, campos
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 05:28.