php – Perguntas e respostas utilizando Ajax

Antes de mais nada, faltou informações na sua pergunta, por isso sugiro que NÃO DEIXE de ver Como criar um exemplo Mínimo, Completo e Verificável e Como fazer uma boa pergunta? para assim, poder elaborar uma boa pergunta sem deixar qualquer detalhe para trás.. Neste caso, faltou o seu código php para complementar, mas sem problemas!


Resolvi montar um “esqueminha” de questões para perguntas/respostas bem simples utilizando jQuery

$(function() {
   $.ajax({
      url: "questoes.php?obter-questoes",
      type: "get",
      dataType: "json",
      cache: false,
      success: (json, status, xhr) => {
         $("#frmMain h3").html(Object.keys(json)(0));
         Object.values(json)(0).forEach((value, index) => {
            $("#frmMain ul").append(`<li><input type="radio" name="respostas" value="${index}" />${value}</li>`);
         });
      }
   });
});

$("#frmMain").on("submit", function(e) {
   e.preventDefault();
   $.ajax({
      url: "questoes.php?obter-respostas",
      type: "post",
      dataType: "json",
      cache: false,
      data: {
         "questao": $("#frmMain h3").html(),
         "resposta": $("(type=radio)(name=respostas):checked").val()
      },
      success: (json, status, xhr) => {
         const obj = Object.entries(json);
         const res = obj.find((item, i) => {
            if (item(1) == true) {
               $("(type=radio)(name=respostas)").each(function() {
                  if (Number($(this).val()) == i) {
                     $(this).parent().css("background-color", "lime");
                  } else {
                     $(this).parent().css("background-color", "red");
                  }
               });
            }
         });

      }
   })

});
form { max-width: 30%; }
li { list-style-type: none; }
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Perguntas e Respostas</title>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.5.0.js"></script>
</head>
<body>
    <form id="frmMain">
        <h3></h3>
        <ul></ul>
        <button type="submit">Responder</button>
    </form>
</body>
</html>

Já no back-end é um código bem pequeno..

Contudo daria para fazer utilizando apenas o JavaScript

<?php  
    
    // Com apenas 4 questões, mas poderá utilizar alguma API para obter questões (tipo: Quiz)
    $questoes = array(
        "Quem é o atual presidente do Brasil?" => array(
            "Lula" => false,
            "Dilma Rousseff" => false,
            "Jair Bolsonaro" => true,
            "Michel Temer" => false
        ),
        "Quanto é 2 x 2 = ?" => array(
            "2" => false,
            "5" => false,
            "8" => false,
            "4" => true
        ),
        "O que significa Legend em Português?" => array(
            "Legenda" => true,
            "História" => false,
            "Conto" => false,
            "Legado" => false
        ),
        "Qual melhor site de perguntas e respostas?" => array(
            "Reddit" => false,
            "Stack Overflow em Português" => true,
            "Quora" => false,
            "Comunidades da Microsoft" => false
        )
    );


    if (isset($_GET("obter-questoes"))) {
        // randomiza os indices das chaves saindo de forma "aleatória"..
        $questao = array_keys($questoes)(rand(0, count($questoes) - 1));

        // adiciona a um novo array contendo apenas as chaves pais/filhos sem a resposta true/false
        $retorno($questao) = array_keys($questoes($questao));

        // imprime o resultado (será o response da solicitação ajax)
        print_r(json_encode($retorno));

    } else if (isset($_GET("obter-respostas"))) {
        
        // uma simples busca baseado no nome da questão e a resposta selecionada..
        print_r(json_encode($questoes($_POST("questao"))));
    }   

?>

Sem dúvidas alguma de que dá para melhorar muito o código, o refatorando, mas espero que seja útil em algo para você!

html5 – Como alinhar um item a direita da navbar utilizando o bootstrap?

Estou com dúvida em relação ao código abaixo. Preciso alinhar os items “Botão exemplo” e item “Minha Conta”, porém nenhuma das classes que estou utilizando do próprio bootstrap me permitem a alteração. A idéia é que a logo e os 4 primeiros itens fiquem alinhados a esquerda, enquanto o botão e último item fiquem alinhados a direita. Não há aplicado nenhuma personalização nas classes com CSS.

<main class="container-fluid">
  <div class="row justify-content-center">

    <div class="col-8 align-self-center">
      <nav class="navbar navbar-expand-sm">
        <ul class="navbar-nav">
          <li class="nav-item">
            <a class="navbar-brand" href="#">
              <img src="https://pt.stackoverflow.com/exemplo" alt="http://pt.stackoverflow.com/exemplo">
            </a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Exemplo 1</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Exemplo 2</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Exemplo 3</a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Exemplo 4</a>
          </li>

          <button type="button" class="btn">Botão Exemplo</button>

          <li class="nav-item">
            <a class="nav-link" href="#">Minha Conta</a>
          </li>
        </ul>
      </nav>
    </div>

  </div>
</main>

javascript – ¿ Por qué no puedo posicionar mi footer utilizando flex en react js?

que tal? quiero implementar un sticky footer utilizando reactjs y no estoy entendiendo la razón de por no funciona.

Necesito un footer que se quede pegado abajo en caso de que la página tenga poco contenido, pero que al mismo tiempo de haber mas contenido no aparezca hasta que se llegue al fondo de la misma en vez de quedar anclado y a la vista todo el rato.
El siguiente código CSS funciona tanto en vanilla JS como en react

footer{
       position: fixed ;
       bottom: 0 ;
       width: 100vw ;
}

Pero claro, el footer va a estar a la vista tengas poco o mucho contenido.

Y el siguiente código si posiciona el footer en el fondo en caso de haber poco contenido, pero no lo muestra hasta llegar al fondo en caso de que haya mucho contenido. Pero aunque esto si funciona en vanilla JS por alguna razón que no logro comprender no funciona para react.

body {
  display: flex ;
  flex-direction: column ;
  min-height: 100vh ;
}
.algún div  etc con contenido {
  flex-grow:  1 ;
}
footer {
  min-height: 18vh;
}

Bueno, si alguien sabe como puedo resolver este problema voy a estar muy agradecido, gracias :3

react native – ¿Cómo puedo evitar el Alert si ya guardé los cambios?, utilizando navigation.addListener(‘beforeRemove’

Necesitaría adaptar el siguiente código obtenido de React Navigation Docs (Snack), para evitar el Alert si ya he “guardado los cambios” antes de intentar regresar a la página anterior (por ejemplo si ya los he guardado a través de un botón, utilizando AsyncStorage.setItem). El código sólo detecta cambios en el campo text y mas allá de haber guardado o no previamente dichos cambios, siempre genera el Alert cuando se pretende regresar.

import * as React from 'react';
import { Alert, View, TextInput, StyleSheet } from 'react-native';
import { Button } from 'react-native-paper';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

const EditTextScreen = ({ navigation }) => {
  const (text, setText) = React.useState('');

  const hasUnsavedChanges = Boolean(text);

  React.useEffect(
    () =>
      navigation.addListener('beforeRemove', (e) => {
        const action = e.data.action;
        if (!hasUnsavedChanges) {
          return;
        }

        e.preventDefault();

        Alert.alert(
          'Discard changes?',
          'You have unsaved changes. Are you sure to discard them and leave the screen?',
          (
            { text: "Don't leave", style: 'cancel', onPress: () => {} },
            {
              text: 'Discard',
              style: 'destructive',
              onPress: () => navigation.dispatch(action),
            },
          )
        );
      }),
    (hasUnsavedChanges, navigation)
  );

  return (
    <View style={styles.content}>
      <TextInput
        autoFocus
        style={styles.input}
        value={text}
        placeholder="Type something…"
        onChangeText={setText}
      />
    </View>
  );
};

const HomeScreen = ({ navigation }) => {
  return (
    <View style={styles.buttons}>
      <Button
        mode="contained"
        onPress={() => navigation.push('EditText')}
        style={styles.button}
      >
        Push EditText
      </Button>
    </View>
  );
};

const Stack = createStackNavigator();

export default function App() {
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component={HomeScreen} />
        <Stack.Screen name="EditText" component={EditTextScreen} />
      </Stack.Navigator>
    </NavigationContainer>
  );
}

const styles = StyleSheet.create({
  content: {
    flex: 1,
    padding: 16,
  },
  input: {
    margin: 8,
    padding: 10,
    borderRadius: 3,
    borderWidth: StyleSheet.hairlineWidth,
    borderColor: 'rgba(0, 0, 0, 0.08)',
    backgroundColor: 'white',
  },
  buttons: {
    flex: 1,
    justifyContent: 'center',
    padding: 8,
  },
  button: {
    margin: 8,
  },
});

Tal vez haya otro modo de hacerlo. Agradezco cualquier ayuda.

La idea es implementarlo en una App (sin Expo).

spring boot – ¿Cómo conectarse a una cola (queue) de un servicio utilizando JMS en Java?

Tengo actualmente un pequeño ejemplo de como recibir un mensaje en la queue con ActiveMQ en springboot, hice un tutorial y cree dos proyectos un Sender y un Reciever y esta sencillo y funciona OK, pero ahora quiero conectarme a un servicio real, ya tengo los datos de conexion, lo que tengo que hacer es conectarme a ese servicio y a una de sus queues para recibir un mensaje real, pero como lo hago?
como me conecto a ese servicio real?
Supongo que yo sere la Reciever, y en este proyecto hacer la conexion al servicio real y recibir el mensaje, pero no se como hacerlo, soy new en el tema de jms, colas, y activeMQ
necesito alguna libreria o dependencia adicional?

compart el ejemplo del proyecto Sender

@RestController
@RequestMapping("/api")
public class MessageController {
    
    
    @Autowired
    private Queue queue;
    
    @Autowired
    private JmsTemplate jmsTemplate;
    
    @GetMapping("message/{message}")
    public ResponseEntity<String> publish(@PathVariable("message") final String message){
        jmsTemplate.convertAndSend(queue, message);
        return new ResponseEntity<String>(message, HttpStatus.OK);
    }

}
@Configuration
public class JmsConfig {
    
    
    @Bean
    public Queue queue(){
        return new ActiveMQQueue("test-queue");
    }

}

Reciever

@Component
@EnableJms
public class MessageConsumer {
    
    
    private final Logger logger = LoggerFactory.getLogger(MessageConsumer.class);
    
     @JmsListener(destination="test-queue")
     public void listener(String message) {
         logger.info("Message received {} ", message);
     }

}

android – e possível modificar uma ação ou adicionar algum objeto novo em qualquer jogo utilizando java?

Por exemplo: adicionar um novo monstro ao jogo, adicionar propriedades, aumentar velocidade do jogador, vida ,se adm do jogo , fazer uma copia do jogo para joga off com amigos etc.

teclado – Por que não funcionam as teclas pressionadas utilizando pygame?

Estou aprendendo sobre programação recentemente e olhando um vídeo na internet consegui replicar este programa abaixo, que é um jogo snake padrão, para dar uma estudada. Porém mesmo replicando exatamente o que estava no vídeo, quando coloco para rodar o jogo, apenas a tecla “LEFT” e “2” são reconhecidas, as outras não funcionam!
Seria isso um erro no código ou em alguma configuração do IDE (estou usando PyCharm2020.2.5)?

import pygame
import time
import random

# Iniciar PyGame
pygame.init()

# Definir cores
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
orange = (255, 165, 0)

width, height = 600, 400

game_display = pygame.display.set_mode((width, height))
pygame.display.set_caption("Snake Game")

clock = pygame.time.Clock()

snk_size = 10
snk_speed = 20

message_font = pygame.font.SysFont('ubuntu', 26)
score_font = pygame.font.SysFont('ubuntu', 20)


def print_score(score):
    text = score_font.render('Score: ' + str(score), True, orange)
    game_display.blit(text, (0, 0))


def draw_snake(snk_size, snk_pixel):
    for pixel in snk_pixel:
        pygame.draw.rect(game_display, white, (pixel(0), pixel(1), snk_size, snk_size))


def run_game():

    game_over = False
    game_close = False

    x = width/2
    y = height/2

    x_speed = 0
    y_speed = 0

    snk_pixels = ()
    snk_length = 1

    food_x = round(random.randrange(0, width - snk_size) / 10.0) * 10.0
    food_y = round(random.randrange(0, height - snk_size) / 10.0) * 10.0

    while not game_over:

        while game_close:
            game_display.fill(black)
            game_over_message = message_font.render('Game Over!', True, red)
            game_display.blit(game_over_message, (width/3, height/3))
            print_score(snk_length - 1)
            pygame.display.update()

            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_1:
                        game_over = True
                        game_over = False
                    if event.key == pygame.K_2:
                        run_game()
                if event.type == pygame.QUIT:
                    game_over = True
                    game_over = False


        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_over = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x_speed = -snk_size
                    y_speed = 0
                if event.type == pygame.K_RIGHT:
                    x_speed = snk_size
                    y_speed = 0
                if event.type == pygame.K_UP:
                    x_speed = 0
                    y_speed = -snk_size
                if event.type == pygame.K_DOWN:
                    x_speed = 0
                    y_speed = snk_size

        if x >= width or x < 0 or y >= height or y < 0:
            game_close = True

        x += x_speed
        y += y_speed

        game_display.fill(black)
        pygame.draw.rect(game_display, orange, (food_x, food_y, snk_size, snk_size))

        snk_pixels.append((x, y))

        if len(snk_pixels) > snk_length:
            del snk_pixels(0)

        for pixel in snk_pixels(:-1):
            if pixel == (x, y):
                game_close = True

        draw_snake(snk_size, snk_pixels)
        print_score(snk_length - 1)

        pygame.display.update()

        if x == food_x and y == food_y:
            food_x = round(random.randrange(0, width - snk_size) / 10.0) * 10.0
            food_y = round(random.randrange(0, height - snk_size) / 10.0) * 10.0
            snk_length += 1

        clock.tick(snk_speed)

    pygame.quit()
    quit()


run_game()

php – Select puxando dados do banco de dados com JS utilizando Tabledit

Estou utilizando Tabledit jQuery em minha tabela para manipular edições exclusões na mesma.

Estou tendo um pequeno problema na parte do ‘edit‘, pois tenho alguns campos em minha tabela em que eu puxo os valores do meu banco de dados, e eu não sei como implementar isso no jQuery, como poderia estar fazendo isso?

// Edit inline via ajax with MySQL
$(document).ready(function() {

    $('#example').on('draw.dt', function(){
        $('#example').Tabledit({
            url:'update-delete.php',
            dataType:'json',
            columns:{
            identifier : (0, 'id'),
            editable:((1, 'campo1'), (2, 'campo2'), (3, 'campo_select', '{"1":"Option1","2":"Option2" ...}'), (4, 'campo4'))
            },
                restoreButton:false,
                onSuccess:function(data, textStatus, jqXHR)
            {
             if(data.action == 'delete')
            {
                $('#example').DataTable().ajax.reload();
            }
            },

        });
    });
});

Nesse caso, gostaria que o ‘campo_select‘ me trouxesse valores de um campo especifico de uma tabela X em meu banco de dados.

javascript – ¿Cómo puedo hacer POST hacia una url remota utilizando Express?

Muy buenas a todos,
me encuentro en un problema, no llevo mucho tiempo utilizando js en el lado del servidor y quisiera una ayuda en este problema.

En pocas palabras, necesito hacer POST hacia una url externa pasándole una entrada en este formato:

{“string” : “palabra1 palabra2 palabra3 palabra4 palabra3 palabra1 palabra3 palabra2”}

Puede ser cualquier frase mientras estén separadas por un espacio.

Al utilizar POSTMAN puedo hacerlo sin problemas, definiendo esta entrada en la sección RAW de la pestaña BODY como ilustra la siguiente captura de pantalla:
introducir la descripción de la imagen aquí

Mi punto es, como puedo hacer exactamente eso, pero desde Express en JavaScript.

Cuento con lo siguiente en el servidor:

index.js

const port = require('./config/config').port;
const express = require('express');
const app = express();
app.use(require('cors')());
app.use(require('body-parser').json());

app.use('/elLink', require('./api/Controllers/elControlador'));

app.listen(port, () => console.log(`Server running on port ${port}...`));

elControlador.js

const servicio = require('../../Data/service');
const express = require('express');
const router = express.Router();

router.post('/', async(req, res) => {
    try {
        const data = await servicio.funcion();
        return res.status(200).json(data);
    }
    catch(e) {
        console.log(e);
        return res.status(500).json(e.message);
    }
});

module.exports = router;

service.js

const { funcion_2 } = require('./repository');

async function funcion() {
    return await funcion_2();
}

module.exports = {
    funcion
}

repository.js

const fetch = require("node-fetch");

async function funcion_2() {
    const url='https://fe...';
    const data=await (await fetch(url)).text();
    return data;
}
module.exports = {
    funcion_2
};

El link al que quiero hacer post está en repository.js como https://fe…

No se en donde definir la entrada. ni como pasarla por “parámetro” o algo por el estilo, aclaro que esta url no acepta algo como: “elLink/laentradaenlaurl”, debe ser explícitamente como lo hace en POSTMAN, pasándole la entrada en formato raw en el body.

Agradezco de antemano si alguien puede ayudarme, es de suma importancia para mi proyecto.