Variable dinámica en el cambio del menú desplegable

http://img62.imageshack.us/img62/5582/20704606.jpg

El menú desplegable de arriba tiene 3 valores;

i)   Staf DC   
ii)  Admin
iii) Staf DT

El valor de la columna "Propietario" (hafiz) proviene de una base de datos. Cada valor del downdown tiene un valor de "Propietario" diferente. Quiero que se haga así;

Si se selecciona Staf DC, ejecutará esta consulta:

$query = "SELECT * FROM owner where type='Staf DC'";

Si se selecciona Admin, ejecutará esta consulta:

 $query = "SELECT * FROM owner where type='Admin'";

Además, el valor de la columna "Propietario" de la tabla debería cambiar automáticamente sin actualizar la página. ¿Puede alguien mostrarme un ejemplo de cómo hacer esto?

preguntado el 03 de mayo de 12 a las 07:05

Debe enviar una llamada ajax para obtener datos sobre el cambio de opción. Esto puede ayudar webdeveloper.com/forum/showthread.php?t=211952 -

2 Respuestas

El siguiente código llama a la función jquery en el cambio del menú desplegable. La función Jquery pasa el valor desplegable seleccionado a getdata.php, lo procesa y repite el nombre del propietario. Luego, el nombre del propietario se muestra en el cuadro de la etiqueta.

código desplegable

echo '<table><tr><td>ModelNo.</td><td>';
echo "<select id='typeval' onchange='changeOwner();'>";
echo "<option value='Staf DC'>Staf DC</option>";
echo '</select></td>';
echo "<td><label id='own'>hafiz</label></td></tr></table>";

código jquery

<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
function changeOwner()
{
    var selname = $("#typeval option:selected").val();  
    $.ajax({ url: "getdata.php",

        data: {"selname":selname},

        type: 'post',

        success: function(output) {
            $("#own").html(output);
        }

    });
}
</script>

código php (getdata.php);

$selname = $_POST['selname'];
$query = "SELECT * FROM owner where type='$selname'";
$res = mysql_query($query);
$rows = mysql_fetch_array($res);
echo $rows['owner']; //assumed that the column name in db is owner

contestado el 03 de mayo de 12 a las 08:05

Funciona, pero ¿cómo puedo mostrarlo en la misma página del menú desplegable? Cambio el tipo para obtener y se superpone a la página. - Hafiz Abdalá

Lo siento, no puedo entender. ¿Qué es la misma página del menú desplegable y se superpone a la página? niti

La etiqueta está en la página donde existe el menú desplegable. getdata.php solo repite la salida y la salida se agrega al HTML interno de la etiqueta. - niti

Perdón por la confusion. Ya lo arregle. Funciona perfectamente. Gracias. - Hafiz Abdalá

Si no desea actualizar toda la página, debe usar Javascript/Ajax. JQuery permite realizar lo que necesitas muy fácilmente con el .correo() método.

Primero agregue el archivo JQuery a su encabezado HTML

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">

Luego cree un archivo .php con su solicitud (por ejemplo: update_owner.php):

<?php
    // 1. Connect to your SQL database
    // ...

    // 2. Get the type
    $type = $_POST['type'];

    // 3. Perform your query
    $results = mysql_query("SELECT * FROM owner where type=".$type);

    // 4. Get the only result you want (the first row)
    $row = mysql_fetch_array( $results );

    // 5. Return the result in json format (assuming that the name
    echo json_encode(array("responseCode" => 200, "row" => $row));

Luego agregue algo de javascript (que usa JQuery):

$("select#type").change(function() {
    // Get the value of your input field
    var type = $(this).val();

    // Set the URL
    var url = 'update_owner.php';

    // Start send the post request
    $.post(url,
        function(data){

            // The response is in the data variable
            if (data.responseCode == 200) {
                // Write the name in the right cell (with #owner id)
                $("#owner").html( data.row.name );
            }
            else {
                // Bad request
            }
        },"json"
    ); // Make sure the the response is in json format
    return false;
});

Deberias hacer eso

PD: me disculpo por mi mal inglés... soy francés

contestado el 03 de mayo de 12 a las 08:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.