Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: seon22break en Septiembre 18, 2018, 05:55:18 AM

Título: Aleatorios sin repetir
Publicado por: seon22break en Septiembre 18, 2018, 05:55:18 AM
Me encuentro realizando un pequeño juego que consiste en lo siguiente: Tengo dos noticias, tienes que elegir cual es falsa de las dos. Todo esto lo estoy realizando con php y diseñando el front-end en bootstrap. Ahora viene mi duda. Extraigo las dos noticias una es verdadera y la otra es falsa, ahora bien quiero que nunca tengan una posición fija sino que aleatoriamente se vayan colocando en un lado y en el otro. Os dejo el codigo para que veais a que me refiero.

Código (php) [Seleccionar]
function elegir(){

//En esta función extraigo las dos noticias una verdadera y otra falsa
  global $conexion;

  $verdaderas = $conexion -> query("select titulo from falsas where op like ('T') order by rand() limit 1");
  $ver = $verdaderas -> fetch_assoc();
  $GLOBALS['ver']=$ver["titulo"];

  $falsas = $conexion -> query("select titulo from falsas where op like ('F') order by rand() limit 1");
  $fal = $falsas ->fetch_assoc();
  $GLOBALS['fal']=$fal["titulo"];

}

elegir();

function mostrar(){
//Esta funcion es a la cual llamo en el html para que muestre si es la verdadera o la falsa
  $aleatorio=rand(1,2);

  if($aleatorio==1){

    positionA($GLOBALS['ver']);
    //positionB($GLOBALS['fal']);

  }

  if ($aleatorio==2){

    //positionB($GLOBALS['ver']);
    positionB($GLOBALS['fal']);
  }

}


  function positionA($var){
   
     echo $var;
 
  }

  function positionB($var){
   
    echo $var;
  }


No lo juzguéis mucho jaja estoy empezando ahora a programar. :)) Cualquier aportación sería de gran ayuda, ya sea para optimizar el código como cualquier sugerencia
Título: Re: Aleatorios sin repetir
Publicado por: C0deM4n en Abril 13, 2021, 08:45:45 PM
Que tal, puedes generar un entero cada que envias las noticias al front.

Por ejemplo si tus noticias tienen esta estructura:

Código (json) [Seleccionar]

{
   "id":1,
    ...
}


Puedes agregar un atributo, utilizando una funcion que genere dos numeros al azar, por ejemplo: 1 y 2; donde 1 => Izquierda y 2 => Derecha:
El codigo para generar el numero random seria el siguiente:

Código (php) [Seleccionar]

function generateRandom(){
      $number = random_int(1, 2);
      return $number;
}


Para asignar a un atributo seria con el siguiente codigo:

Código (php) [Seleccionar]

$news[$index]['align'] = generateRandom();


Ya en la vista solo con el atributo align definirias el lado en que aparece la noticia. Saludos.
Título: Re: Aleatorios sin repetir
Publicado por: animanegra en Abril 14, 2021, 05:19:14 AM
Creo que la pregunta iba sobre el random en la querry y sacar las preguntas en las siguientes páginas sin que se repitan.