Création d'un message d'alerte.

Fermé
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024 - 12 mars 2020 à 10:58
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024 - 14 mars 2020 à 09:29
Bonjour,
Je recherche comment modifier le script que voici concernant un formulaire pour les lignes 31 à 74 incluses.

case 'invite' :
		$contents .= '
			<form name="response" action="index.php?page=invite" method="post"><br/>
			<h2 style="text-align: center">Vos invitations en attente</h2>
				';

		$label  = 'Invitations envoyées par d\'autres joueurs:';
		$no_data_label = 'Aucun joueur ne vous a invité pour le moment.';

		$contents .= get_game_table($label, $no_data_label, $invites, $type = 'invite')."<br>";

		$contents .= '
					<input type="hidden" name="respond" value="" />
					<input type="hidden" name="message_from" value="" />
					<input type="hidden" name="game_id" value="" />
				</form>
				<hr class="fancy" />
				<form name="withdraw" action="index.php?page=invite" method="post">
					';
		
		$label  = '<h2>Invitations envoyées par vous:</h2>';
		$no_data_label = 'Aucune de vos invitations n\'est restée sans réponse.';

		$contents .= get_game_table($label, $no_data_label, $outvites, $type = 'invite');

		$contents .= '
				<input type="hidden" name="game_id" value="" />
				<input type="hidden" name="withdrawl" value="yes" />
			</form>
			<br /><br />
			<form name="challenge" action="index.php?page=invite" method="post">
			<fieldset>
				<h2>Inviter un adversaire</h2>
				Sélectionnez un joueur:<br />
				<select name="opponent">
					';

					$query = "
						SELECT P.*
							, (
								SELECT COUNT(*)
								FROM ".T_GAME."
								WHERE (
										g_white_player_id = P.p_id
										OR g_black_player_id = P.p_id
									)
									AND g_game_message IN ('', 'Player Invited')
							) AS num_games
						FROM ".T_PLAYER." AS P
						WHERE p_id != '{$_SESSION['player_id']}'
						ORDER BY p_username
					";
					$players = $mysql->fetch_array($query, __LINE__, __FILE__);

					foreach ($players as $player)
					{
							if (($player['num_games']-5) > $player['p_max_games'])	
						{
							continue;
						}

						$contents .= "<option value=\"{$player['p_id']}\"> ({$player['p_rating']}) {$player['p_username']} </option>";
					}
			
			$contents .= '
				</select><br />
				<br />
				Votre couleur:<br />
				<label for="colorR"><input name="color" id="colorR" type="radio" value="random" checked="checked" />Au hasard</label> |
				<label for="colorW"><input name="color" id="colorW" type="radio" value="white" />Blancs</label> |
				<label for="colorB"><input name="color" id="colorB" type="radio" value="black" />Noirs</label><br />
				<br />';
				$contents .= '<input type="button" value="Inviter" class="button" onclick="validateInvite( );" />
			</form><br/><br/>';	
							
			if (false != $CFG_CHESS960)
			{
				 $contents .= '
				 <div id="gamebuttons">
				 <h2>Chess960 ID </h2>
				 <span id="castle">Connaître Chess960 -->
					<a href="./help/c960.html" class="help" onclick="window.open("./help/c960.html","help","resizable,scrollbars,width=550,height=500,top=50,left=50","_blank");return false;"><FONT COLOR="#0000ff"> ?</FONT></a></span>
				    </div>
				 (laissez vide pour une partie normal): 
				 <input name="txtId960" type="text" maxlength="3" /> <input type="button" name="randomid960" value="Au hasard" onclick="txtId960.value = Math.floor(Math.random( ) * 960);" /><br>
				 Ou entrez un nombre entre 0 et 959 pour jouer à Chess960, ou appuyez sur \'Au hasard\' pour créer une partie au hasard.<br />
				 ';
			}

			$contents .= '<input type="button" value="Inviter" class="button" onclick="validateInvite( );" />
			</form></fieldset>
		';
		
		$hint = array(
			'Ceci est un apercu de toutes vos invitations en attente.' ,
			'Vous pouvez Accepter ou Refuser n\'importe quelle invitation, ou vous pouvez annuler vos invitations à d\'autres joueurs.' ,
			'Vous pouvez aussi sélectionner un adversaire et lui envoyer une inviatation pour jouer une nouvelle partie.' ,
		);

		$html = get_item($contents, $hint);

		break;


Ceci afin d'y ajouter un message javascript selon cet exemple:


Lorsqu'une invitation à jouer une partie est envoyé à un joueur.

Merci d'avance de bien vouloir m'aider à trouver la solution.

Configuration: Windows / Opera Next 36.0.2130.80
A voir également:

2 réponses

Salut
là vous présentez un script PHP qui contient uniquement du texte HTML dans une variable.
Si vous parlez d'utiliser un message d'alerte vous pouvez voir avec le manuel de la fonction alert() en JavaScript:
https://www.qwant.com/?q=javascript+alert

Ceci dit comme son nom l'indique alert est un cas exceptionnel signifiant que le programme ne marche pas comme il faut.
Il serais plus approprié d'utiliser une fenêtre modale ou un simple message en texte qui contrairement à alert ne bloquera pas la page et le navigateur. D'ailleurs les navigateurs risquent de bloquer le message d'alerte comme une menace potentielle surtout si celi ci vient à répétition.

Toutefois vous avez 2 axes de recherches à étudier pour votre application:
+ Javascript exécutant côté serveur il faut un moyen de lui communiquer des informations serveurs à jour. Cela se fait par AJAX qui n'est pas une technologie à proprement parler (asynchronymous Javascript and XML)mais le moyen d'éviter un rechargement de pages à chaque chargement de données et de limiter les accès au serveur = une page plus rapide et constante.
+ Comment mettre à jour la page de la personne qui reçoit les informations nouvelles(l'invitation). Vous pouvez par exemple vous inspirer de la technologie pour créer un chat de discussion ou des nouveau messages apparaîtront quand il sont envoyés. Un indice cela passe par une base de données. Éventuellement vous avez les variables de session (globales en PHP)qui peuvent vous aider à déterminer un état(invité ou pas invité) mais ça me sembles pas judicieux ni efficace.

Je suppose que vous avez déjà traité le résultat du formulaire, sinon c'est par là que vous devez commencer: que faire des informations envoyées et où les stocker.

Bref vous dites chercher comment faire mais comme vous ne montrez pas le travail accompli il faut que vous cherchiez mieux ou commencer par réaliser quelque chose.
Si c'est la méthode qui vous manque il vous suffit d'apprendre, j'ai donné l'exemple d'un chat de discussion parce qu'il me paraît similaire à ce que vous voulez... et que vous résumez à un pauvre message d'alerte en JavaScript, qui en plus de n'être pas adéquat ne prends pas en compte les mécanismes des données à utiliser pour qu'un utilisateur (dument identifié et connecté?) puisse recevoir ou envoyer une notification par le biais du réseau.

Ceci peut vous aider à démarrer plutôt que chercher sans trouver visiblement:

premier résultat trouvé avec les mots clés 'apprendre analyse conception systèmes d’informations' en faisant une recherche, bien sûr à approfondir par vous même et vos propres cherches, le lien à l'avantage d'être fait par des professionnels de l'enseignement donc meilleur que pas mal d'autres vulgarisation, en clair c'est pédagogique même si seulement une introduction:
https://fr.slideshare.net/MireilleBF/analyse-et-conception-des-systmes-dinformation

et côté développement pur et dur si j'ose dire, bien sûr négliger la partie analyse et conception c'est perdre du temps pour faire quelque chose de plus mauvais surtout si on débute. Cela a par contre l'avantage d'être dans un cas concret de travail par vous même et d'avoir toutes les étapes pas à pas:
https://openclassrooms.com/fr/courses/918836-concevez-votre-site-web-avec-php-et-mysql/914663-tp-un-mini-chat
1
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
14 mars 2020 à 09:29
Bonjour et merci pour votre réponse bien détaillée!
Les 3 liens que vous me présentez sont intéressants.

Pour en revenir à ce que je souhaite modifier sur mon site, j'ai trouvé la solution.
Je vous la présente ci dessous:
Cette ligne comporte une fonction appelée validateInvite( )
$contents .= '<input type="button" value="Inviter" class="button" onclick="validateInvite( );" />


Que l'on retrouve dans un fichier javascript utilisé pour regrouper un ensemble de fonctions et dont voici les lignes concernées:
function validateInvite( )
{
	if (document.challenge.txtId960)
	{
		if (document.challenge.txtId960.value >= 960 || document.challenge.txtId960.value < 0)
		{
			alert("Désolé, c\'est un numéro de Chess960 invalide.\nSVP utilisez un numéro entre 0 et 959.");
			document.challenge.txtId960.value = '';
			document.challenge.txtId960.focus( );
			return;
		}
		else
		{
		    alert("Votre invitation à jouer est validée.");
			document.challenge.submit( );
		}
	}
	else
	{
		document.challenge.submit( );
	}
}

J'ai donc ajouté la ligne 14 comme indiquée ci dessus pour faire apparaitre le message d'alerte ou plus exactement de confirmation dans mon cas et que voici:

Le fait de cliquer sur le bouton OK finalise la démarche.
Mon but premier était de modifier le formulaire pour y incorporer un script javascript. Mais n'ayant pas trouvé la façon de procéder de cette manière, je me suis ensuite orienté sur la fonction javascript validateInvite( ).
Voilà.
0