entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Como registrar datos en una BD haciendo click en un HREF?

Tengo este código PHP que me permite saber si tengo amigos registrados(cuando entro a su perfil,esta el botón que dice AGREGAR),si el usuario es mi amigo dice AGREGADO.muy bien.Pero me gustaría que me ayudaran a que cuando yo pulse el botón(que es un enlace),este me ejecute algún código para insertar el ID de este usuario en la BD(Si no es mi amigo). Ya sea mediante ajax,no se.Pero claro cuando yo haga click.

Me gustaría que fuera dentro del ELSE.

<?php

 include_once('conexion.php');
if ($user != $my_id) {
 $mysqli = mysqli_connect("localhost", "root", "", "registros");
$quer = mysqli_query($mysqli,"SELECT * FROM friends WHERE (User_one =
'$my_id'     
AND User_two = '$user') OR (User_two = '$user' AND User_one = '$my_id')");

if (mysqli_num_rows($quer) == 1) 

{

    $mensaje = "<a href= '#'>Already Friends</a>";
}

else{

$mensaje = "<a href= 'agregarN.php?Id=".$user."'>No Friends</a>";

}

}

?>

2 Respuestas

2votos

luis2016 Puntos1930

Este es el codigo le arregle un par de cosas.

PHP

<?php

include_once('conexion.php');
if ($user != $my_id) {
     $mysqli = mysqli_connect("localhost", "root", "", "registros");
    $quer = mysqli_query($mysqli,"SELECT * FROM friends WHERE (User_one = '$my_id'  AND User_two = '$user') OR (User_one = '$user' AND User_two = '$my_id')");

if (mysqli_num_rows($quer) > 0) 

    {

        while ($nada = mysqli_fetch_assoc($quer)) {
            if ($nada['Activo'] == 1) {

           $mensaje = "<a  onclick='eliminar(".$user.")'>Amigos</a>";

            }

          else {

             }

}

}

else { // if the relationship don't exist
     $mensaje = "<a onclick='guardar(".$user.")'>Add this user as a friend</a>";
}

}

?>

JavaScript(Ajax)

<script type="text/javascript">
 function guardar(id) {
        $.ajax({
            type: "POST",
            url: "Add.php",
            data: {
                iduser:id,
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert(errorThrown);
            },
            success: function (data, textStatus, jqXHR) {
                alert("se envio");
            }
        });
    }

</script>

Add.php

<?php

include('verificarid.php');

$idusuario = $_POST['iduser'];
$Id = $fila['Id'];

$query = "INSERT INTO friends (User_one,User_two,Activo) VALUES ('$Id','$idusuario','1')";
$result = mysqli_query($conn, $query);

?>

1voto

Peter comentado

Gracias por compartir la solución.

2votos

Leonardo-Tadei Puntos227320

Hola @luis2016,

la estructura de tu código está bien planteada. En el ELSE, estás generando un HREF que apunta a agregarN.php y le pasa como parámetro GET el valor del usuario del perfil de la página.

Para agregar el registro en la tabla, lo importante es lo que hace agregarN.php.

Si estás manteniendo en una variable de sesión el contenido de $my_id, con este valor más lo que recibís en $_GET['Id'] ya tenés lo necesario para hacer el INSERT en la tabla.

Si no estás manteniendo el valor en una sesión, le tendrás que pasar a agregarN.php ambos valores: el id del usuario logueado y el del usuario que está mirando.

Todo esto se puede hacer también por POST, si en lugar de un HREF ponés un botón...

En este escenario, bastaría que la última línea de agregarN.php haga un header("Location: ...") para volver a la pagina del perfil.

Esto puede refinarse un poco haciendo que la petición a agregarN.php la haga el llamador con AJAX, pero no cambia el funcionamiento del script, que seguirá regibiendo por GET o por POST los datos para trabajar. Puede ser una mejora posterior para evitar que la página se recargue, aunque sea casi imperceptible la recarga por la caché del navegador.

Saludos cordiales

1voto

luis2016 comentado

Amigo gracias por tu ayuda,pero ya lo habia resolvido,colocare el codigo.
Antes de eso,me surgio una duda de que estoy haciendo algo mal.

Primero:

Los datos se repiten en la BD.Intente poner los campos "User_one" y "User_two" con valor 'unique'Pero y si yo queria agregar a otro usuario?No se registraba.

segundo(la gran duda):

No creo que se buena idea solo agregar a una persona como amigo asi como si nada.Lo primero seria algo como de notificaciones informándole al usuario(al que se quiere agregar)que se quiere ser amigo de el.Y si,use Ajax.

2votos

Peter comentado

@luis2016 si ya lo solucionaste, por favor comparte la respuesta con la solución abajo y selecciónala como correcta.

Para otras dudas, por favor abre preguntas nuevas.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta