Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Comparar registros en tablas y mostrar resultado y cantidad en una sesión determinada

Estas en el tema de Comparar registros en tablas y mostrar resultado y cantidad en una sesión determinada en el foro de PHP en Foros del Web. Quise entrar a bases de datos pero soy nuevo y no puede, pero espero me puedan echar una mano aquí. Estoy haciendo una web de ...
  #1 (permalink)  
Antiguo 14/08/2015, 18:24
 
Fecha de Ingreso: agosto-2015
Mensajes: 9
Antigüedad: 8 años, 8 meses
Puntos: 0
Comparar registros en tablas y mostrar resultado y cantidad en una sesión determinada

Quise entrar a bases de datos pero soy nuevo y no puede, pero espero me puedan echar una mano aquí. Estoy haciendo una web de tarea que es una escuela de idiomas, en ella tengo dos tablas en una base de datos, una llamada "usuarios" y otra "amigos" debido a que tendría usuarios que se den de alta entren a su sesión y ahí ellos registran a amigos suyos, dichos registros le sirven ya que si alguno de sus amigos se inscribe a la escuela el usuario recibiría un descuento en su mensualidad.

Favor de checar la imagen:


Lo que yo quiero por ejemplo es que si estoy en la sesión de Pepe aparezcan debajo del formulario (donde se da de alta) los amigos que ha registrado este y la cantidad con número, en automático cada que se haga un registro.

Encontré este código que me ha ayudado, pero solamente me indica la cantidad de registrados pero no se como hacer para llamar esos registros y mostrarlos, también me sale un error que no se como quitar:

Código PHP:
//hago mi conexion y todo lo demas
 
//selecciono el ID de determinados registros de la tabla01

$find_1 mysql_query("SELECT nombre FROM usuarios");

$find_2 mysql_query("SELECT usuario FROM amigos WHERE usuario='$_SESSION[nombre]'");
 
//busco las coincidencias
//numero que guardara las coincidencias
$num 0;
//busco en todos los resultados de select_1
while($data mysql_fetch_array($find_1)){
    
//busco en todos los resultados de select_2
    
while($data2 mysql_fetch_array($find_2)){
        if(
$data['usuario'] == $data2['nombre']){
            
$num++;
        }
    }
}
if(
$num >  0){
    echo 
"Has registrado ".$num." amigos";

    
}else{
    echo 
"No tienes amigos registrados";


Asi es como me aparece:



Gracias por su atención y espero haberme dado a entender, si necesitan que les mande más info por favor escribanme.
  #2 (permalink)  
Antiguo 14/08/2015, 18:49
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Comparar registros en tablas y mostrar resultado y cantidad en una sesión

una buena pregunta que te quiero hacer, antes de indagar mas en el tema, como vas a relacionar a los amigos con el user principal, en la tabla no veo nada, en tal caso yo la haria mendiante el email y asi hacer una interaccion social entre amigos, pero faltan detalles en el asunto
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 14/08/2015, 19:39
 
Fecha de Ingreso: agosto-2015
Mensajes: 9
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Comparar registros en tablas y mostrar resultado y cantidad en una sesión

Hola xfxstudios gracias por tu pronta respuesta.

Tengo un script donde tengo mis variables concernientes a la tabla usuarios:

$nombre= $_POST['nombre'];
$email= $_POST['email'];
$password= $_POST['password'];
$password2= $_POST['password2'];

tome la primera y la converti en variable de sesión:

$_SESSION['nombre'] = $fila['nombre'];

Esto lo hice porque tengo un archivo que es el que pongo en la segunda foto que lo llamo pagina_usuario.php que como veras dice Bienvenido y el nombre del usuario, el cuál lo mando llamar asi:

Bienvenido:<?php echo $_SESSION['nombre']?>

Mandando llamar antes la tabla de base de datos.

Esa misma sesión la tome y la asigne como otra variable llamada $usuario junto con todas las demás que serian ingresadas mediante mi formulario:

$usuario= $_SESSION['nombre'];
$nombre= $_POST['nombre'];
$telefono= $_POST['telefono'];
$email= $_POST['email'];
$social= $_POST['social'];

Y las inserte asi:

if(isset($email)){

$sql_insertar2="INSERT INTO amigos SET usuario='$usuario', nombre='$nombre', telefono='$telefono', email='$email', social='$social'";
mysql_query($sql_insertar2, $conex) or die (mysql_error());

echo "
<p class='avisos'>Registro insertado con exito</p>
<p class='avisos'><a href='javascript:history.go(-1)' class='clase1'>Volver atrás</a></p>";

}

Asi que cada vez que ingresara un nuevo usuario, como el nombre de este iba a cambiar, al momento de registrar a sus amigos se enviarían todos esos datos más el nombre de dicho usuario. Por eso si te fijas en la imagen de las tablas el nombre de Pepe esta dos veces porque registro a dos amigos en su sesión osea esos dos le conciernen a el, esa es la relación.

Por eso lo que hago en el codigo es buscar en dos tablas tomando como referencia la tabla usuarios y comparandola con la tabla amigos veo cuantas veces esta el nombre de por ejemplo Pepe si esque estoy en esa sesión, si esta 3 veces es porque he registrado 3 amigos, porque como ya te dije el usuario se registra junto con los demás datos estando su sesión acyiva.

Espero haberme dado a entender.
  #4 (permalink)  
Antiguo 14/08/2015, 19:52
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Comparar registros en tablas y mostrar resultado y cantidad en una sesión

yo te recomendaria que no utilices el nombre para la relacion porque es muy generico, ya que si hay un segundo pepe se podrian dar ambiguedades y mostrarias informacion que no corresponde al usuario equivocado, realiza la vinculacion mediante el id o en tal caso mediante el email que es practicamente inposible que encuentres uno igual a otro y de esa manera filtras de manera mas segura los registros
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 14/08/2015, 20:24
 
Fecha de Ingreso: agosto-2015
Mensajes: 9
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Comparar registros en tablas y mostrar resultado y cantidad en una sesión

Este es un ejemplo, pero no hay modo de que ingresen un usuario igual, eso ya lo solucione con algo asi:

$comprobar=mysql_query("SELECT nombre FROM usuarios WHERE nombre='$_POST[nombre]'");
if($nombre_ok=mysql_fetch_array($comprobar))

{
echo"
<p class='avisos'>El usuario que intentas ingresar ya esta registrado favor de probar con otro</p>
<p class='avisos'><a href='javascript:history.go(-1)' class='clase1'>Volver atrás</a></p> ";
}

El código no te lo pongo completo pero esta fue la idea XD.

En donde me atasque fue en lo que te comente.
  #6 (permalink)  
Antiguo 15/08/2015, 05:47
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Comparar registros en tablas y mostrar resultado y cantidad en una sesión

bueno tu sabras, intenta asi para contar y mostrar los registros de la tabla amigos:

Código PHP:
Ver original
  1. <?php
  2.  
  3. //Contamos cuantos amigos tenemos registrados
  4. $conta = $db->query("SELECT * FROM amigos WHERE usuario = '$_SESSION[nombre]'");
  5. $total_filas = mysqli_num_rows($conta);
  6.  
  7.  
  8. //imprimimos la cantidad de aigos
  9. echo "Usted tiene ".$total_filas." amigos registrados<br><hr>";
  10.  
  11. //mostramos una lista de los amigos
  12. if($total_filas >0){
  13.     $con =1;
  14.     echo "<table><tr><th>Nº</th><th>Nombre</th></tr>";
  15.     //listamos los amigos si se cumple la condicion
  16.     while($row = $conta->fetch_array())
  17.     {
  18.         echo "<tr><td>".$con."</td><td>".$row['amigo']."</td><tr>";
  19.        
  20.         $con++;
  21.     }
  22.     echo "</table>";
  23. } else{
  24.     echo "No tiene amigos registrados";
  25. }
  26. ?>
otra cosa la comprobacion del nombre de usuario deberias hacerla mediante ajax desde el mismo formulario para evitar que el usuario pase horas intentando ingresar un suario que ya existe, es decir, te evitas la recargadera de la pagina por enviar tantas veces el formulario, ya con ajax realizas la consulta apenas escriben en el input y recoben la respuesta de si esta disponible o no antes de enviar el formulario
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 15/08/2015, 08:21
 
Fecha de Ingreso: agosto-2015
Mensajes: 9
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Comparar registros en tablas y mostrar resultado y cantidad en una sesión

Disculpa mi ignorancia, pero en la línea 4 que vendrian siendo $db->query. Mira tengo un archivo llamado conex.php que es donde conecto con mi base de datos y especifico lo siguiente:

<?php if (!isset($_SESSION)){
session_start();
}

?>
<?php
$hostname = "localhost";
$database = "escuela";
$username = "root";
$password = "";
$conex = mysql_connect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);

mysql_select_db($database,$conex)
or die("ERROR con la base de datos");
?>

Lo que hice fue sustituir el $db por $conex, no se si este bien pero me apareció lo siguiente:

Fatal error: Call to a member function query() on resource in C:\xampp\htdocs\Web_Ingles\login\pagina_usuario.ph p on line 69

Tendría que cambiar algo en mi archivo conex.php?

Gracias por tu respuesta y espero me puedas orientar con esto.
  #8 (permalink)  
Antiguo 15/08/2015, 09:31
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Comparar registros en tablas y mostrar resultado y cantidad en una sesión

lo que sucede es que estas usando mysql y ese codigo esta en desuso debes utilizar mysqli:

Código PHP:
Ver original
  1. <?php
  2. //Conexion orientada a objetos
  3. $usuario = "USER";
  4. $pass = "PASS";
  5. $host = "HOST";
  6. $base = "BASE";
  7.  
  8. $db = new MySQLi($host, $usuario, $pass, $base);
  9. if($db->connect_error) {
  10.     die('Error de conexion ('.$db->connect_errno.')'
  11.         .$db->connect_errno);
  12. }
  13. ?>
__________________
[email protected]
HITCEL
  #9 (permalink)  
Antiguo 17/08/2015, 19:57
 
Fecha de Ingreso: agosto-2015
Mensajes: 9
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Comparar registros en tablas y mostrar resultado y cantidad en una sesión

A ok, muchas gracias por tu ayuda.

Etiquetas: cantidad, formulario, mysql, registro, registros, resultado, select, tabla, tablas, usuarios
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 21:30.