Página 1 de 1

Ayuda Forlumario y Grupo

Publicado: 29 May 2018, 11:50
por CoryuKimura

Datos de Soporte - Inicio

URL: https://proyecto-mm.000webhostapp.com/foro/
Estilo(s) usuado(s): X-Creamy
MODs/Extensiones instaladas: Add User, Advanced BBCode Box, Auto Groups, Board Announcements, Category Image, cmBB
Versión de phpBB: 3.2.2
Tu conocimiento: Conocimiento básico
Servidor: Gratuito, es para hacer pruebas. Una vez construido correctamente, pasaremos a pago.
Es una actualización desde otra versión: No, instalación nueva.
Es una conversión desde otro tipo de Foro: No

Datos de Soporte - Fin

Buenas!!

Disculpar si este no es el lugar, no he encontrado otro sitio donde ponerlo (O.O) Estoy intentando hacer una cosa en el foro pero no sabría como. Era por si me podían dar alguna idea y/o ayudar.

Me gustaría que cuando un usuario se registrase, le saliese una encuesta. En la encuesta todas las preguntas tendrían 4 respuestas. (A, B, C y D). Una vez contestada todas las preguntas, sumaria los puntos de cada uno y la "solución" sería la que mas puntos tenga. Una vez terminada la añadiría de forma automática al grupo correspondiente. ¿Se me entiende?

Gracias!

Re: Ayuda Forlumario y Grupo

Publicado: 30 May 2018, 07:34
por AlfredoRamos
CoryuKimura escribió: 29 May 2018, 11:50Una vez contestada todas las preguntas, sumaria los puntos de cada uno y la "solución" sería la que mas puntos tenga.
Qué solución? De qué forma esa "solución" determinará el grupo al que será asginado el usuario?

No existe tal extensión, es algo muy espécífico y no sé si hacer la encuesta al registrarse sea una buena idea, eso haría el proceso de registro tedioso para nuevos usuarios.

Re: Ayuda Forlumario y Grupo

Publicado: 30 May 2018, 11:16
por CoryuKimura
Buenas,

Estamos desarrollando un foro de rol y queremos designar a cada usuario a un grupo en cuanto se registran. Si no es en el registro pues en un enlace a parte o algo así.

Sobre lo que digo es esto:

Ejemplo formulario:

1ª Pregunta -> Con cuatro respuestas. La primera respuesta sumaria +1 a "A", la segunda respuesta sumaria +1 a "B" y asi...
2ª Pregunta -> Con dos respuestas. La primera respuesta sumaria +1 a "C" y la segunda +1 a "A"
y así...

Una vez respondido todo, se sumaría todo y quedaría (ejemplo) A = 10, B = 12, C = 1, D = 5. Pues entonces al sumarse más puntos en la opción B la que mayor tiene por lo que le añadiria al grupo B. ¿Se me entiende?

Yo a lo mejor por php podría hacer el formulario, pero me faltaría el como hacer que según lo que toque lo añada a un grupo u otro. Y también que compruebe que no este en el grupo para que no haya problemas.

Un Saludo.

Re: Ayuda Forlumario y Grupo

Publicado: 30 May 2018, 22:16
por AlfredoRamos
Mmm... podrías usar la extensión (en desarrollo) Survey, aunque no tiene eventos PHP para usar, y no estoy seguro si sería factible, pero de serlo podrías usar la función group_user_add() y group_user_del() para añadir y eliminar del grupo.

En el caso de group_user_add() ya cuenta con verificación si existe el usuario en el grupo, regresará la cadena GROUP_USERS_EXIST; en group_user_del() la sentencia SQL simplemente será ignorada.

Suponiendo que las opciones de cada pregunta tienen los mismos valores, para contar los resultados podrías recorrer el array de preguntas phpbb\request\request::variable_names(), comparar los valores (con phpbb\request\request::variable()) e ir sumando los valores, ya con ello tienes más de la mitad del problema resuelto.

Te dejo un ejemplo muy cutre en PHP puro, ignora los ciclos for ya que solo fueron para generar las preguntas más fácilmente.
Spoiler

Código: Seleccionar todo

<?php

$html = '';

$resultados = [
	'gespecial1' => 0,
	'gespecial2' => 0,
	'gespecial3' => 0,
	'gespecial4' => 0
];

if (isset($_POST['submit'])) {
	foreach ($_POST as $key => $value) {
		if ($key == 'submit') {
			continue;
		}
		
		foreach ($resultados as $k => $v) {
			if ($value !== $k) {
				continue;
			}
			
			$resultados[$value] += 1;
		}
	}
	
	echo '<pre><code>';
	var_dump($resultados);
	echo '</code></pre>';
}

$html .= '<form action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '" method="POST">';

for($i = 1; $i <= 10; $i++) {
	$html .= '<fieldset>';
	$html .= '<legend>Pregunta ' . $i . '</legend>';
	for ($j = 1; $j <= 4; $j++) {
		switch($j) {
			case 2:
				$inciso = 'B';
				break;
			case 3:
				$inciso = 'C';
				break;
			case 4:
				$inciso = 'D';
				break;
			default:
				$inciso = 'A';
				break;
		}
		$html .= vsprintf(
			'<input type="radio" name="pregunta_%1$d" value="gespecial%2$d" />%3$s',
			[$i, $j, $inciso]
		);
	}
	$html .= '</fieldset>';
}

$html .= PHP_EOL . '<button type="submit" name="submit">Enviar</button>';
$html .= '</form>';

echo $html;
Puedes probar el código en phptester.net

https://www.phpbb.com/community/viewtopic.php?t=2333241
https://github.com/phpbb/phpbb/blob/3.2 ... .php#L2672