Rellenar formulario con tabla de bd

102 visitas 10 respuestas

Mi pregunta es como puedo rellenar los datos de un formulario con los datos que esta ya tiene en la base de datos, tengo una tabla de userslog en la que se guarda el email y el pass cuando se registran y tengo una tabla que se referencia con el id de la de userslog y en esta se llenan datos como nombres, apellidos, etc...

por

Registrado desde: 10 meses

Respuestas

1 0

Hola amigo, simplemente debes consultar dichos datos a la DB y los imprimes en el atributo value del input o inputs en cuestion... Te dejo el ejemplo...

<input type="text" name="username" value="<?php echo $user_cunsultado_db; ?>" autocomplete="off"/>

Otra opción para imprimir el dato...

<input type="text" name="username" value="<?= $user_cunsultado_db ?>" autocomplete="off"/>

Saludos AlanB

por

Registrado desde: 20 Aug 14
0 0

Gracias por responder @AlanB.

La consulta la tendria que hacer con un join? Ya que como habia comentado las tablas son separadas pero enlazadas por el id

por

Registrado desde: 10 meses
1 0

Si, si tienes varias tablas, ocupas hacer los JOIN y recomiendo hacer una ""VIEW" para que sea mas presentable desde el código

por desde México

Registrado desde: 28 días
0 0

Que tal @ksius tal vez me vaya a ver muy ignorante y algo incongruente pero a que te refieres con que haga un "view"?

Y si quiero hacer un insert seria de igual manera con un join o solo dejando la variable id como nula?

Ej. "Insert into user id, nombre, apelldo blabla values null, :nombre, :apellido

por

Registrado desde: 10 meses
0 0

Claro deberías usar un INNER JOIN y consultas ambas tablas utilizando nombre_tabla.nombre_campo, te dejo mejor un ejemplo de la consulta, creo que es lo que estas buscando, no comprendi tu consulta al principio...

$resultado_consulta = mysqli_query($link, "SELECT usuarios.name, usuarios.password, usuarios.email, userslog.email, userslog.pass FROM usuarios INNER JOIN userslog ON usuarios.id = userslog.id");

Creo que esto es lo que necesitas, claro reemplaza los valores tabla y campos por los tuyos.

Saludos AlanB

por

Registrado desde: 20 Aug 14
0 0

Gracias @AlanB. Aun no estoy muy familiarizado con los INNER JOIN. La consulta no seria mas simple si hiciera un SELECT * FROM user, userlog WHERE id.user = id.userlog

por

Registrado desde: 10 meses
0 0

veran tengo mi codigo de la siguiente manera

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

    $nombre = $_POST['nombre'];
    $apaterno = $_POST['apaterno'];
    $amaterno = $_POST['amaterno'];
    $profesion = $_POST['profesion'];
    $ciudad = $_POST['ciudad'];
    $perfilprofe = $_POST['perfilprofe'];
    $perfilperso = $_POST['perfilperso'];
    $tel = $_POST['tel'];
    $cel = $_POST['cel'];

    $errores = '';

    if (empty($nombre) or empty($apaterno) or empty($amaterno) or empty($profesion) or empty($ciudad) or empty($perfilprofe) or empty($perfilperso) or empty($tel) or empty($cel)) {
    $errores .= '<li>Por favor rellena todos los datos correctamente</li>';
    } else {
        try {
            $conexion = new PDO('mysql:host=localhost;dbname=empleo', 'root', '');
        } catch (PDOException $e) {
            echo "Error: " . $e->getMessage();
        }

        $statement = $conexion->prepare('INSERT INTO user (id, , nombre, apaterno, amaterno, profesion, ciudad, perfilprofe, perfilperso, tel, cel) VALUES (null, :nombre, :apaterno, :amaterno, :profesion, :ciudad, :perfilprofe, :perfilperso, :tel, :cel, null, null)');

        if ($errores == '') {
            $statement->execute(array(
        ':nombre' => $nombre,
        ':apaterno' => $apaterno,
        ':amaterno' => $amaterno,
        ':profesion' => $profesion,
        ':ciudad' => $ciudad,
        ':perfilprofe' => $perfilprofe,
        ':perfilperso' => $perfilperso,
        ':tel' => $tel,
        ':cel' => $cel
        ));
        }
}

}

se que esta mal ya que no tiene la referencia con la otra tabla pero reitero, no estoy familiarizado con los joins

por

Registrado desde: 10 meses
0 0

Creo que de la forma que mencionas debería funcionar siempre y cuando tengas consultados ya ambos IDs (ten en cuenta que seguirías cargando de consultas la DB), con INNER JOIN realizarías una sola consulta y obtendrías todos los datos necesarios. Además deberías tener en cuenta también que si la consulta es por un registro no debería afectar el rendimiento y la carga de tu proyecto, pero supongamos que quieres auditar el mismo desde un panel admin y que en vez de uno debes consultar 1000, demorarías más en obtener tus datos... Como tip extra debeas analizar si vas a realizar más SELECT (MyISAM) que INSERT (InnoDB).

por

Registrado desde: 20 Aug 14
0 0

pues creo que de alguna manera lo afecta por que no hace ningun insert jaja y todas las tablas estan con InnoDB

por

Registrado desde: 10 meses
0 0

Ten en cuenta que para hacer un INSERT, deberías hacerlo en ambas tablas para relacionarlas con el mismo ID, de lo contrario deberiías hacer la consulta e igualar emails por ejemplo y obvio que el campo email en ambas tablas debe ser UNICO. Si no te está insertando el dato es porque tenes un error seguro en el insert que estas preparando. También ten en cuenta que si no utilizas INNER JOIN, estarías duplicando los datos por cada ID o EMAIL igualado... Creo que tu santa solución es leer y practicar INNER JOIN, ya que este te unifica los datos igualados...

$link = mysqli_connect("localhost", "root", "", "db_test");

$resultado = mysqli_query($link, "SELECT usuarios.id, usuarios.nombre, usuarios_log.email FROM usuarios INNER JOIN usuarios_log ON usuarios.email = usuarios_log.email");

while($rows = mysqli_fetch_array($resultado)){
    echo $rows['id']." | ".$rows['nombre']." | ".$rows['email']."<br>";
}

Analiza este código!

por

Registrado desde: 20 Aug 14