Foros del Web » Programando para Internet » PHP »

Guardar campo de mysql despues de realizar una consulta

Estas en el tema de Guardar campo de mysql despues de realizar una consulta en el foro de PHP en Foros del Web. Hola tengo una duda que no termino de saber hacerla. Me explico quiero que cuando un usuario haga loguin en mi paginase busque su id ...
  #1 (permalink)  
Antiguo 08/01/2015, 08:49
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 0
Guardar campo de mysql despues de realizar una consulta

Hola tengo una duda que no termino de saber hacerla.

Me explico quiero que cuando un usuario haga loguin en mi paginase busque su id y este se alamacene en una variable.

Hasta ahora lo que tengo es que el correo (es lo que se usa para loguearse) se almacene en una sesion.

Me falta hacer la consulta para averiguar el id y guardarlo en una variable de php que dure hasta que el usuario haga logout.

Solo e conseguido realizar la consulta para sacar su id que seria esta
Código mysql:


Código PHP:
Ver original
  1. SELECT id_usuario FROM `usuarios` WHERE email = 'david'



si alguien podria decirme como guardarlo lo agredeceria y si se puede en otro sesion mucho mejor

Gracias a todos por adelantado
  #2 (permalink)  
Antiguo 08/01/2015, 09:34
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 11 años, 10 meses
Puntos: 326
Respuesta: Guardar campo de mysql despues de realizar una consulta

En el arreglo de $_SESSION (donde supongo que guardas el correo), puedes añadir las variables que quieras....
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 08/01/2015, 11:54
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 0
Respuesta: Guardar campo de mysql despues de realizar una consulta

Si lo que guardo es el correo te dejo el codigo

Código PHP:
Ver original
  1. <?php
  2. session_start(); //Iniciamos o Continuamos la sesion
  3. if (isset($_POST['email'])) //Si llego un Nickname via el formulario lo grabamos en la Sesion
  4. {
  5. $_SESSION['email'] = $_POST['email']; //Nickname Grabado
  6. }
  7.  
  8. ?>
  9.  
  10. <html lang="es">
  11.  
  12. <head>
  13.     <title>prueba</title>
  14.     <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  15.     <link href="estilo.css" type="text/css"
  16.      rel="stylesheet" />
  17. </head>
  18.         <div id="todo">
  19.         <div id ="contenedor">
  20.                 <div id ="cabecera">
  21.                    
  22.                     <div id="logo">
  23.                         <ul>
  24.                             <li><img src="logo.png" width="100px" height="100px" alt="Despliegate"/></li>
  25.                             <li><a href="/paginas/prueba/index.php">Despliegate</a></li>
  26.                         </ul>
  27.                     </div>
  28.                 </div>
  29.                
  30.                 <div id="menu">
  31.                     <div id="menu">
  32.                         <ul>
  33.                             <li><a href="#menuh" id="primero">Inicio</a></li>
  34.                             <li><a href="#menuh">Comentarios</a></li>
  35.                             <li><a href="#menuh">Noticias</a></li>
  36.                             <li><a href="#menuh">Contacto</a></li>
  37.                             <li><a href="#menuh">Acerca de nosotros</a></li>
  38.                         </ul>
  39. </div>
  40.                 </div>
  41.                 <div id ="panel">
  42.                     <table>
  43.                        
  44.                          <form action="conecta.php" method="post" name="datos">
  45.                                
  46.                             <tr>
  47.                                 <td>Correo electronico:</td><td><input type="text" name="email" id="email"  /><br></td>
  48.                             </tr>
  49.                             <tr>
  50.                                 <td>Contraseña:</td><td><input type="password" name="contrasena" id="contrasena"><br></td>
  51.                             </tr>  
  52.                        
  53.                             <tr>
  54.                             <td></td><td><input type="submit" value="Iniciar sesion" /></td>
  55.                             </tr>
  56.                           </form>
  57.                     </table>
  58.                     <a href="Registro.html"><h3>Registro</h3></a>
  59.                    
  60.                 </div>
  61.                 <div id ="contenido">
  62.                     <a href="conexion.php" id="Inicio">Inicio</a>
  63.                 </div>
  64.                
  65.  
  66.         </div>
  67.         </div>
  68.  
  69.     </body>
  70. </html>
  71. </body>
  72.  
  73. </html>

Ahora lo que no se es realizar la consulta para saber el id... y guardarlo tambien...
  #4 (permalink)  
Antiguo 08/01/2015, 12:08
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.323
Antigüedad: 12 años, 2 meses
Puntos: 2654
Respuesta: Guardar campo de mysql despues de realizar una consulta

Cita:
Ahora lo que no se es realizar la consulta para saber el id... y guardarlo tambien...
No me queda claro:
¿No sabes hacer consultas desde PHP a una base de dartos, o es que no sabes cómo tomar el resultado que la base devuelve?

Cualquiera de las dos cosas las peudes encontrar en el manual de referencia de PHP en la web, o en las FAQs de este mismo foro...
¿lo has intentado hacer?

Manual de PHP:
http://php.net/manual/es/mysqli.quic...onnections.php
http://php.net/manual/es/mysqli.quic...statements.php
http://php.net/manual/es/mysqli.query.php
http://php.net/manual/es/mysqli-result.fetch-assoc.php
http://php.net/manual/es/mysqli-result.fetch-array.php


Tutos:
http://www.sanwebe.com/2013/03/basic-php-mysqli-usage

Acotemos tu duda: ¿Qué es lo que no entiendes?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 08/01/2015, 12:10
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 0
Respuesta: Guardar campo de mysql despues de realizar una consulta

En la base de datos se hacer consultas, lo que no se es hacerlas en php y guardar el resultado de la consulta en una variable.

E buscado pero no e encontrado la solución por eso pregunte aquí.
  #6 (permalink)  
Antiguo 08/01/2015, 12:15
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 0
Respuesta: Guardar campo de mysql despues de realizar una consulta

por lo que e visto en el enlace que as dejado mi duda se resolvería así...

Código PHP:
Ver original
  1. $id_usuario = $mysqli->query("SELECT id_usuario FROM `usuarios` WHERE email = 'david';

voy a probar y gracias :)
  #7 (permalink)  
Antiguo 08/01/2015, 12:34
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 0
Respuesta: Guardar campo de mysql despues de realizar una consulta

Ahora lo tengo asi dentro del archivo de loguin

Código PHP:
Ver original
  1. <?php
  2. /* start the session */
  3.  
  4.  
  5.  
  6.  $host_db = "localhost";
  7.  $user_db = "root";
  8.  $pass_db = "dmrx921";
  9.  $db_name = "despliegate";
  10.  $tbl_name = "usuarios";
  11.  
  12. // Connect to server and select databse.
  13. mysql_connect("$host_db", "$user_db", "$pass_db")or die("Cannot Connect to Data Base.");
  14.  
  15. mysql_select_db("$db_name")or die("Cannot Select Data Base");
  16.  
  17. $id_usuario = "sin loguear";
  18.  
  19. // sent from form
  20. $username = $_POST['email'];
  21. $password = $_POST['contrasena'];
  22.  
  23.  
  24. $id_usuario = $sql = "SELECT id_usuario FROM `usuarios` WHERE email = '$username'";
  25.  
  26.  
  27. $sql= "SELECT * FROM $tbl_name WHERE email = '$username' and contrasena='$password'";
  28.  
  29. $result=mysql_query($sql);
  30.  
  31. // counting table row
  32. $count = mysql_num_rows($result);
  33. // If result matched $username and $password
  34.  
  35. if($count == 1){
  36.  
  37.  $_SESSION['loggedin'] = true;
  38.  $_SESSION['email'] = $username;
  39.  $_SESSION['start'] = time();
  40.  $_SESSION['expire'] = $_SESSION['start'] + (60 * 60) ;
  41.  
  42. header('Location: index2.php');
  43. }
  44.  else {
  45.  echo "<br/>Email o contraseña estan incorrectos.<br>";
  46.  
  47.  echo "<a href='index.php'>Volver a Intentarlo</a>";
  48.  
  49.  
  50. }
  51.  
  52. ?>

y me da el siguiente error
Notice: Undefined variable: id_usuario in C:\xampp\htdocs\paginas\prueba\index2.php on line 7

Haber si alguien me puede decir que hago mal...
  #8 (permalink)  
Antiguo 08/01/2015, 13:17
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 7 años, 4 meses
Puntos: 38
Respuesta: Guardar campo de mysql despues de realizar una consulta

Hola la línea 25 ... mal , cuando pones un igual es un op de asignación, es decir a = b; nunca puedes hacer algo como a=b=c.. en todo caso harias por ejempo:a=b y c=a...
Escribo desde el móvil , lo que debes hacer es bien sencillo:
1 haces una consulta en bd.
2 haces fecht de los resultados
3 guardas en una var de session el valor del id
4 cuando haces logout haces unset de var de session.

Ejemlo sacado del manual de php:
Código PHP:

<?php
$enlace 
mysqli_connect("localhost""mi_usuario""mi_contraseña""world");

/* verificar la conexión */
if (mysqli_connect_errno()) {
    
printf("Conexión fallida: %s\n"mysqli_connect_error());
    exit();
}
$consulta"SELECT id_usuario FROM $tbl_name WHERE email = '$username' and contrasena='$password'";
if (
$resultado mysqli_query($enlace$consulta)) {

    
/* obtener array asociativo */
    
while ($row mysqli_fetch_assoc($resultado)) {
        
$_SESSION['id_usuario'] =$row['id_usuario'];
    }

    
/* liberar el conjunto de resultados */
    
mysqli_free_result($resultado);
}


$user=$_SESSION['id_usuario'];
echo 
$user;
//te devolverá el id de usuario que esta en session en el mismo script 
// $_SESSION['id'] es un objeto global que contiene el id y al que puedes acceder desde cualquier parte del código
/* cerrar la conexión */
mysqli_close($link); ?>
Un saludo!

Última edición por Djoaq; 08/01/2015 a las 15:05
  #9 (permalink)  
Antiguo 08/01/2015, 17:20
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 0
Respuesta: Guardar campo de mysql despues de realizar una consulta

Gracias funciona perfecto y ahora una cosa eso yo lo voy a tener puesto en el fichero de loguin si despues quiero llamarlo para trabajar con el id debo llamar a la variable $user o a $_SESSION['id_usuario'] por que llamando a cualquiera de las 2 desde otro fichero me sale que esta sin definir, ¿se puede hacer como yo quiero o deberia repetir la consulta a la db?
  #10 (permalink)  
Antiguo 08/01/2015, 17:38
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 7 años, 4 meses
Puntos: 38
Respuesta: Guardar campo de mysql despues de realizar una consulta

Hola dmrx921,

Cuando usas variables de session debes hacer

Código PHP:
Ver original 

Al principio de todos los scripts que tengas !

De esa forma haces que se mantenga la variable de session entre diferentes archivos php.

Un saludo!
  #11 (permalink)  
Antiguo 08/01/2015, 17:52
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 0
Respuesta: Guardar campo de mysql despues de realizar una consulta

Si eso ya lo tengo el problema es que al intentar mostrarla en un sript distinto al que se hace la consulta me da error Notice: Undefined variable: user in C:\xampp\htdocs\paginas\prueba\index2.php on line 3

Lo que intento hacer es un echo $user;
Tambien probe con echo $_SESSION['id_usuario']
pero me devuelve un Notice: Undefined index: id_usuario in C:\xampp\htdocs\paginas\prueba\index2.php on line 3

Saludos!
  #12 (permalink)  
Antiguo 08/01/2015, 18:08
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 7 años, 4 meses
Puntos: 38
Respuesta: Guardar campo de mysql despues de realizar una consulta

index1.php
Código PHP:
Ver original
  1. <?php
  2. $enlace = mysqli_connect("localhost", "mi_usuario", "mi_contraseña", "world");
  3.  
  4. /* verificar la conexión */
  5.     printf("Conexión fallida: %s\n", mysqli_connect_error());
  6.     exit();
  7. }
  8. $consulta= "SELECT id_usuario FROM $tbl_name WHERE email = '$username' and contrasena='$password'";
  9. if ($resultado = mysqli_query($enlace, $consulta)) {
  10.  
  11.     /* obtener array asociativo */
  12.     while ($row = mysqli_fetch_assoc($resultado)) {
  13.         $_SESSION['id_usuario'] =$row['id_usuario'];
  14.     }
  15.  
  16.     /* liberar el conjunto de resultados */
  17.     mysqli_free_result($resultado);
  18. }
  19.  
  20. mysqli_close($link); ?>

index2.php
Código PHP:
Ver original
  1. echo $_SESSION['id_usuario'];

Esto debería ir si o si !

Entonces si no te funciona puede ser que te este rellenando mas de un valor y entonces sea una array y no en encuentre el indice id_usuario.

Para comprobar estos casos , debes usar var_dump($objeto), en este caso var_dump($_SESSION['id_usuario']);
asi sabrás si es un array o es un string .. etc..

Haz var dump y nos dices!

Última edición por Djoaq; 08/01/2015 a las 18:09 Razón: Me dejé un paréntesis!
  #13 (permalink)  
Antiguo 09/01/2015, 11:41
Avatar de dmrx921  
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 0
Respuesta: Guardar campo de mysql despues de realizar una consulta

Haciendo var dump me da NULL

Última edición por dmrx921; 10/01/2015 a las 11:18

Etiquetas: campo, mysql, select, usuarios, 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 23:13.