Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO obtener dato de una celda concreta

Estas en el tema de obtener dato de una celda concreta en el foro de PHP en Foros del Web. Buenas tardes foreros y foreras. Antes de nada, muchas gracias!! He buscado por el foro y por "san google" pero, o no lo he encontrado, ...
  #1 (permalink)  
Antiguo 29/11/2013, 12:40
 
Fecha de Ingreso: noviembre-2012
Mensajes: 12
Antigüedad: 12 años
Puntos: 0
obtener dato de una celda concreta

Buenas tardes foreros y foreras.
Antes de nada, muchas gracias!!

He buscado por el foro y por "san google" pero, o no lo he encontrado, o no está, cosa que dudo pero a ver si me pueden ayudar porque ando estancado.

he empezado hace poco con php y estoy atascado con una tabla, de la cual, no sé como obtener el dato de una cenda concreta al pulsar sobre un botón.

hago una consulta a la bbdd y se muestra una tabla con los resultados de esa consulta, y yo le he añadido una columna de tipo botón para que al hacer click sobre dicho botón, hacer un insert a la bbdd teniendo como dato principal el valor de una de las celdas de esa misma fila a la cual pertenece el botón. el problema es que esa consulta la hace bien, pero siempre me da el mismo dato, la última fila.
pero ¿cómo hago para obtener el valor de la fila que yo quiero?

Esta es la tabla:


y este el código.
Aquí está el código de la tabla(vuelos.php):

Código PHP:
<form action="reserva.php" method="post" id="reservas" name="reservas">
        <?php
session_start
();
//variables
$localhost 'localhost';
$usuario 'root';
$contrasena '********';
$basedatos '********';
$id $_SESSION['valid_user'];  



try {
    
$db_conn = new mysqli($localhost$usuario$contrasena$basedatos);
    
    if (
mysqli_connect_errno()){
            die (
'ERROR DE CONEXION CON LA BBDD: '.mysqli_connect_error());
        }

        
//consulta a la bbdd
        
$consulta "SELECT  
                        matricula,
                        modelo.modelo,
                        combustible,
                        horas,
                        aeropuerto,
                        estado.estado
                    FROM 
                           aviones,
                        modelo,
                        estado
                    WHERE
                        modelo.idmodelo = aviones.modelo
                    AND
                        estado.idestado = aviones.estado
                    AND
                        aviones.estado = 1
                    ORDER BY
                        modelo.modelo
                    DESC
                    "
;
        
        
$resultado mysqli_query($db_conn$consulta);
        
        if(
$resultado == true){
         
        
//obtenemos los datos resultado de la consulta
        
while ($row mysqli_fetch_row($resultado)){
            echo 
'<table border="0" width="auto" cellspacing="0">
                            <tr id="encabezadotabla">
                                <th scope="col">Matrícula</th>
                                <th scope="col">Modelo</th>
                                <th scope="col">Combustible</th>
                                <th scope="col">Horas de vuelo</th>
                                <th scope="col">Aeropuerto actual</th>
                                <th scope="col">Estado</th>
                                <th scope="col">Reservar</th>
                              </tr>
                              <tr id="datostabla">
                                   <th scope="col"><input id="datotabla" name="datotabla" type="text" value="'
.$row[0].'" readonly="true"></th>
                                <th scope="col">'
.$row[1].'</th>
                                <th scope="col">'
.$row[2].'</th>
                                <th scope="col">'
.$row[3].'</th>
                                <th scope="col">'
.$row[4].'</th>
                                <th scope="col">'
.$row[5].'</th>
                                <th scope="col"><input id="btnreserva" name="btnreserva" type="submit" value="Reservar"></th>
                              </tr>
                    </table>'
;
Y aquí el código del script php donde se envian las variables(reserva.php)

Código PHP:
session_start();
//variables
$localhost 'localhost';
$usuario 'root';
$contrasena '*******';
$basedatos '********';
$id $_SESSION['valid_user'];
$fecha date('j-n-Y');
$avion $_POST['datotabla'];/**ESTA ES LA VARIABLE QUE NECESITO OBTENER DE LA TABLA*/


try{
    
$db_conn = new mysqli($localhost$usuario$contrasena$basedatos);
    
    if (
mysqli_connect_errno()){
            die (
'ERROR DE CONEXION CON LA BBDD: '.mysqli_connect_error());
        }
//fin if
        
    
$consulta "INSERT INTO
                    reservas(usuario,avion,fecha)
                VALUES
                    ('$id','$avion' ,'$fecha')"
;
                    
    
$resultado mysqli_query($db_conn$consulta);
    
    if(
$resultado == true){
        echo 
'Has reservado el avión '.$avion.' con fecha '.$fecha;
        }
//fin if
        
else{
            echo 
'no se ha podido reservar el avión';
            }
    
}catch(
Exception $e){ 
Como veis, necesito obtener la matricula del avion dependiendo del botón al que le de, y enviar esa matricula como variable para el insert.

lo dicho, mucahs gracias y disculpar las molestias!!
  #2 (permalink)  
Antiguo 29/11/2013, 12:58
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: obtener dato de una celda concreta

Yo lo que haría es agregar al botón de reservas una función js que se encarga de hacer el trabajo por ajax.

Me explico mas o menos?
  #3 (permalink)  
Antiguo 29/11/2013, 13:01
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: obtener dato de una celda concreta

Toda la información la tienes en la base de datos. Así que lo único que necesitas enviar es el identificador de la línea que te sirva para recuperar el resto de la información. por ejemplo, la matrícula, si es única.

No pongas la matrícula un un input:text editable, por el amor de dios. Ponla igual que los otros.
Asi que cambia:
Código PHP:
Ver original
  1. <th scope="col"><input id="datotabla" name="datotabla" type="text" value="'.$row[0].'" readonly="true"></th>
Por:
Código PHP:
Ver original
  1. <th scope="col">'.$row[0].'</th>

Para poder enviar la matrícula por medio de un formulario, haz esto: sustituye:
Código PHP:
Ver original
  1. <th scope="col"><input id="btnreserva" name="btnreserva" type="submit" value="Reservar"></th>
Por:
Código PHP:
Ver original
  1. <th scope="col"><form method="post" action="pagina.php"><input type="hidden" name="matricula" value="'.$row[1].'" /><input id="btnreserva" name="btnreserva" type="submit" value="Reservar"></form></th>

Con eso crearás un formulario por cada linea de la tabla, que contendrá un campo oculto con el valor de la matrícula de esa línea, y el boton para enviar ese formulario a pagina.php.

En pagina.php sólo tienes que capturar $_POST["matricula"] para saber qué linea pulsó el usuario.

No es la más elegante forma de hacerlo, pero si no tienes soltura, por algo hay que empezar.
  #4 (permalink)  
Antiguo 29/11/2013, 13:29
 
Fecha de Ingreso: noviembre-2012
Mensajes: 12
Antigüedad: 12 años
Puntos: 0
Respuesta: obtener dato de una celda concreta

Gracias marlanga.
Sé que no es la forma mas adecuada, pero justo lo que quería.
sé que puedo hacerlo a través de JS, pero no sé por qué hacerlo por JS si se puede hacer a través de php directamente, supongo que por no saturar el servidor, pero para lo que es me va de lujo, y ha funcionado perfecto!!siempre hay que aprender, y mucho me queda, pero poco a poco.

Gracias a los dos!!!

Un saludo!!

Etiquetas: celda, dato, fecha, mysql, select, tabla, variable
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 13:05.