He creado una fuente de comentarios que se recuperan de una base de datos MySQL usando una declaración while en PHP. El código para esto es similar al siguiente:

<?

$con = mysqli_connect("localhost","username","password","database");

if (!$con)
{
  die('Could not connect: ' . mysqli_connect_error());
}


$query = "SELECT * FROM table ORDER BY timestamp DESC LIMIT 0 , 1000";

$comments = mysqli_query($con, $query);

echo "<h1>Recent Posts</h1><br><br><hr>";

while($row = mysqli_fetch_array($comments, MYSQLI_ASSOC))
{
  $comment = $row['comment'];
  $timestamp = $row['timestamp'];

  echo " <div class='card'>
      <h3>Handle: $handle</h3><br />
      <p>$comment</p><br /><br />
      <img src='$file' style='width:60%; margin-left:20%; margin-right:20%; margin-top:5px; border-style:solid;'><br>
      <p style='color: grey'>$timestamp</p><hr>
    </div>
  ";
  }

mysqli_close($con);

?>

Ahora deseo que los usuarios puedan votar estas publicaciones. Para hacer esto, se usaría el siguiente proceso:

process

Para hacer esto, supongo que necesitará agregar algo como uno de los siguientes a la parte echo del código de alimentación:

  • <button onclick = "likefunction()">Upvote Comment</button>
  • <form name="$postid" method="post"><input type="submit" value="Upvote Comment"></form>
  • <a onclick = "likefunction()">Upvote Comment</a>

Y luego crea la función necesaria.

¿Cuál de estos tipos de entrada sería el correcto para este propósito?

Disculpas si esta es una pregunta bastante básica: todavía estoy aprendiendo los conceptos básicos de todo esto.

-2
John Smith 13 may. 2016 a las 18:36

4 respuestas

La mejor respuesta

Hay muchas maneras de hacer esto posible de una manera profesional y más organizada, siempre he usado los atributos data para realizar acciones de JavaScript para este tipo de funcionalidades, por ejemplo:

<button type="button" class="js_vote" data-type="upvote" data-post="32323">Upvote</button>
  • el tipo de datos se puede usar para votar a favor o en contra solo para identificar el tipo de voto
  • la publicación de datos se puede usar para colocar la identificación de la publicación y usarla dentro de la función de JavaScript para identificar la publicación

Y luego dentro de la función javascript debería verse algo así como:

$('.js_vote').on('click',function(e){
var type = $(this).data('type');
var post_id = $(this).data('post');
// and from here perform the ajax request to send the data to the server.
});

O si desea utilizar onclick, puede hacer algo como a continuación:

<a href="javascript:void(0);" onclick="js_vote('upvote',90239);">Upvote</a>

Javascript

function js_vote(type,post_id){
    // and from here perform the ajax request to send the data to the server.
}

Todos tienen su propia forma de pensar y lógica sobre la implementación del diseño / estructura de su propio sistema, le he recomendado la manera simple y fácil de organizar mejor sus datos.

Finalmente, usted elige cómo desea diseñarlo. Los mismos atributos de datos de atributos que puede usar con etiquetas de anclaje o incluso con div o span o cualquier etiqueta que desee.

0
Arsh Singh 13 may. 2016 a las 16:06

Cualquiera de estos elementos funcionaría, siempre que tenga alguna forma de pasar un identificador significativo a su likefunction() que indique la publicación que se está votando.

Tanto el botón como la entrada [enviar] son útiles si desea enviar datos de usuario desde campos de formulario junto con el clic del evento. Pero en este caso, supongo que esto es innecesario, ya que toda la información que necesita se puede inyectar en los atributos dom del elemento sobre el que se actúa.

Por lo tanto, es realmente una cuestión de qué elemento será más sencillo para usted el tema e integrarse en su estructura dom. Personalmente, elegiría <a> ya que requiere la menor sintaxis, pero solo soy yo.

0
ethan 13 may. 2016 a las 15:52

Use el botón o <a> dependiendo de cuál sea más fácil de diseñar (su funcionalidad será la misma). Use ajax dentro de esa función de javascript para hacer la lógica.

0
Ardit Meti 13 may. 2016 a las 15:50

Supongo que depende de si desea confiar en JavaScript o en el envío del formulario para la acción.

Si no desea usar Javascript para enviar el formulario, entonces usaría el método de formulario.

Un método alternativo sería usar el elemento del botón en el formulario (ya que un botón enviará el formulario de forma predeterminada) y el atributo 'acción':

<form name="$postid" action="./upvote-comment.php" method="post">
  <button>Upvote Comment</button>
</form>

Si desea / necesita usar JavaScript, depende de si desea usar los estilos de botón predeterminados definidos por los navegadores o el estilo de enlace. Aparte de cómo se ve , no puedo ver ninguna razón por la cual el uso de un enlace frente a un botón se comportaría de manera diferente.

En resumen:

  • Form es una solución que no es JavaScript y es perfectamente razonable
  • botón / enlace 'onclick' son equivalentes entre sí

Probablemente sea más fácil hacerlo en javascript (ya que puede manipular el dom sin volver a cargar la página para cambiar el contador).

0
Charlie Frater 13 may. 2016 a las 15:49