Bouton ne fonctionnant plus.

Résolu/Fermé
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024 - 3 mai 2019 à 12:23
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024 - 5 mai 2019 à 09:59
Bonjour,
Depuis 2 semaines, (sur serveur) j'ai mon site de jeu ayant trait à des questions sous forme de QCM, ne fonctionne plus à cause d'un bouton ne réagissant plus normalement.
Par contre en local sous Wamp celui fonctionne toujours.
Voici en image ce dont il s'agit plus exactement:
Le bouton valider dont il est question est prêt à recevoir le clic de souris.


Voici ce qui change au passage de la souris sur celui ci:

Il change de couleur et une information apparait en bas à gauche de l'écran.


En cliquant ensuite sur ce bouton il change de nouveau d'apparence pour devenir grisé et plus rien ne se passe.


Voici une partie du fichier voir_qcm_script.js totalisant 170 lignes et probablement utile concernant ce bouton pour trouver la résolution du problème:
if (http_request.readyState == 4 && http_request.status == 200)
	{
		//alert(http_request.responseText);
		var fichierxml = http_request.responseXML;

		if (fini == 1) // Affichage du corrigé.
		{
			var question, image, explic, reponses;
			var xml = fichierxml.getElementsByTagName('question').item(0);
			if (xml.childNodes[0].firstChild) question = xml.childNodes[0].firstChild.data;
			else question = '';
			if (xml.childNodes[1].firstChild) image = xml.childNodes[1].firstChild.data;
			else image = '';
			if (xml.childNodes[2].firstChild) explic = xml.childNodes[2].firstChild.data;
			else explic = '';
			reponses = new Array;
			for (i = 0; i < xml.childNodes[3].childNodes.length; i++)
			{
				reponses[i] = new Array;
				if (xml.childNodes[3].childNodes[i].firstChild)
					reponses[i][0] = xml.childNodes[3].childNodes[i].firstChild.data;
				else
					reponses[i][0] = '';
				reponses[i][1] = xml.childNodes[3].childNodes[i].getAttribute('coul');
			}

			// remplissage de la page avec les données lues.
			document.getElementById('c_titre').innerHTML = ':. Correction : Question '+q+'/'+nb_q+' .:';
			var html = '<div id="voir_question">'+question+'</div>';
			if (image != '') html += '<div id="voir_image"><img alt="" src="qcm/'+qcm+'/'+image+'" /></div>';
			if (explic != '') html += '<div id="voir_explic">'+explic+'</div>';
			html += '<div id="voir_reponses">';
			rep = 0;
			for (i = 0; i < reponses.length; i++)
			{
				html += '> <a class="'+reponses[i][1]+'">'+reponses[i][0]+'</a><br />';
			}
			html += '</div>';
			document.getElementById('c_cadre').innerHTML = html;
			if (q > 1) document.getElementById('bout_0').innerHTML = '<a href="javascript:c_prec();">Question précédante</a>';
			else  document.getElementById('bout_0').innerHTML = 'Question précédante';
			if (q < nb_q) document.getElementById('bout_1').innerHTML = '<a href="javascript:c_suiv();">Question suivante</a>';
			else  document.getElementById('bout_1').innerHTML = 'Question suivante';
			return 0;
		}


		if (fichierxml.getElementsByTagName('bonnesreponses').item(0) != null)
		{
			// Le QCM est fini, on affiche le nombre de bonnes réponses.
			var bonnes_rep = fichierxml.getElementsByTagName('bonnesreponses').item(0).firstChild.data;
			document.getElementById('c_cadre').innerHTML = '<div id="voir_result"><img src="interface/vert.gif" alt="" height="15" width="'+Math.floor(bonnes_rep*200/nb_q)+'" class="no_border_droite" /><img src="interface/rouge.gif" alt="" height="15" width="'+Math.floor((nb_q-bonnes_rep)*200/nb_q)+'" class="no_border_gauche" /><br /><br />Bonnes réponses : '+bonnes_rep+'/'+nb_q+'</div>';
			document.getElementById('c_titre').innerHTML = ':. Résultats .:';
			document.getElementById('bout_1').innerHTML = '<a href="javascript:corrige();">Voir le corrigé</a>';
			setTimeout(function() {
			window.location.href = '/jeu_printemps/ph_qcm/insertion_points.php';
			}, 15000);	
			// redirection au bout de 15 secondes.
			document.getElementById('voir_resultats').innerHTML = '<h2 style="color: Green;">La bonne réponse est montrée en verte dans le corrigé.</h2><br><h3 style="color: red;">Vous verrez automatiquement les résutats dans 15 secondes.<br>Ou cliquez sur la flèche ci dessous pour les consulter de suite.</h3><a href="/jeu_printemps/ph_qcm/insertion_points.php"><img src="/jeu_printemps/ph_qcm/img/retour_d.gif" alt="Aller"/></a>';
			return 0;
		}

		// On récupère les données de la question.
		var question, image, explic, reponses;
		var xml = fichierxml.getElementsByTagName('question').item(0);
		if (xml.childNodes[0].firstChild) question = xml.childNodes[0].firstChild.data;
		else question = '';
		if (xml.childNodes[1].firstChild) image = xml.childNodes[1].firstChild.data;
		else image = '';
		if (xml.childNodes[2].firstChild) explic = xml.childNodes[2].firstChild.data;
		else explic = '';
		reponses = new Array;
		for (i = 0; i < xml.childNodes[3].childNodes.length; i++)
		{
			if (xml.childNodes[3].childNodes[i].firstChild) reponses[i] = xml.childNodes[3].childNodes[i].firstChild.data;
			else reponses[i] = '';
		}

		// remplissage de la page avec les données lues.
		document.getElementById('c_titre').innerHTML = ':. Question '+q+'/'+nb_q+' .:';
		var html = '<div id="voir_question">'+question+'</div>';
		if (image != '') html += '<div id="voir_image"><img alt="" src="qcm/'+qcm+'/'+image+'" /></div>';
		if (explic != '') html += '<div id="voir_explic">'+explic+'</div>';
		html += '<div id="voir_reponses">';
		rep = 0;
		for (i = 0; i < reponses.length; i++)
		{
			html += '<input type="radio" name="rep"'+((i == rep) ? ' checked="checked"' : '')+' onclick="javascript:rep='+i+';" /> '+reponses[i]+'<br />';
		}
		html += '</div>';
		document.getElementById('c_cadre').innerHTML = html;
		document.getElementById('bout_1').innerHTML = '<a href="javascript:suiv();">Valider</a>';
	}


J'attire votre attention sur la ligne 92 qui correspond à ce bouton devenu sans effet sur le déroulement du jeu.

Je rappelle qu'en local le site fonctionne mais plus sur serveur.
Et que le service technique de ce serveur ne répond plus désormais qu'aux questions commerciales mais plus techniques!

C'est ainsi que je m' oriente désormais ici sur ce site vraiment complet en espérant qu'une personne compétente saura me guider afin de résoudre la question.
Bien sûr je me tiens à votre disposition pour vous apporter d'éventuels éclaircissements si nécessaire en recherchant ensemble la cause de ce dysfonctionnement.

En vous en remerciant par avance.
Cordialement.









Configuration: Windows / Opera Next 36.0.2130.80

4 réponses

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
3 mai 2019 à 15:14
Bonjour,

As tu des indications dans la CONSOLE de ton navigateur lorsque tu cliques sur le bouton en question ?
Un imprime écran serait le bienvenu...
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
3 mai 2019 à 17:26
Voici la partie utile de la console avec le reste:


Il n'y a pas de point console dans le script.
Si il faut en mettre un pour y voir plus clair, indiques moi à quel endroit si possible et ce qu'il faut y écrire stp.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647 > Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
3 mai 2019 à 19:52
Tu dois activer l'affichage des erreurs JS
là il semble désactivé
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
3 mai 2019 à 18:25
A savoir que le jeu fonctionne sous Wamp.
Et qu'à ce titre il peut servir de comparaison pour de tels essais.
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
4 mai 2019 à 09:57
J'ai cherché à vérifier l'activation de l'affichage des erreurs JS.
J'ai trouvé une configuration possible en cliquant sur la roue dentée comme indiqué par la flèche rouge comme ci dessous:

Ce qui permet d'obtenir les informations de configurations présentées ci dessus.
Ainsi à la lecture de ces réglages pourrais tu m'indiquer si l'activation est effective?
Ou sinon que devrais faire pour activer l'affichage des erreurs ou procéder à la vérification en question?
Merci.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647 > Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
4 mai 2019 à 12:10
Dans ta précédente catpure écran on peut voir que l'onglet "js" n'est pas actif....
Il faut le selectionner pour qu'il soit de la même couleur que les autres puis rafraichir ta page
et ensuite cliquer sur le bouton qui te pose problème...
Tu peux aussi me donner le lien vers ta page sur le serveur pour que je regarde par moi même
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
4 mai 2019 à 12:48
Merci pour ta réponse.
Je te présente l'image de la console avec l'onglet "js" actif et en même temps le message d'erreur retourné cette fois ci par la console:

Voici l'adresse de ce site de jeu des questions QCM:
https://jeuxechecs.fr/jeu_printemps/ph_qcm/index.php
Pour accéder à ce dysfonctionnement il faut choisir une question.
La 31 à laquelle il est encore possible d'y répondre et la n°11.
La 31 n'a pas d'intérêt au niveau de la question.Tandis que la 11 traite d'une question sur le jeu d'échecs.
Pour accéder à l'une de ces 2 questions il faut inscrire un pseudo et un mot de passe après avoir choisi une question.
Ensuite en validant l'inscription, tu pourras accéder à la question proprement dite et tester le bouton qui pose problème.
Enfin, tu peux créer autant de pseudos que tu le souhaites pour plusieurs essais si cela est nécessaires.
Merci pour cette aide à laquelle je pense que nous pourrons résoudre ce dysfonctionnement.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
Modifié le 4 mai 2019 à 13:36
Donc.. le message d'erreur indique un souci sur la ligne
if (fichierxml.getElementsByTagName('bonnesreponses').item(0) != null)

concernant la variable fichierxml
Variable qui est null...

Si on regarde ton code, cette variable est remplie par l'appel d'un script Ajax ( xmlhttprequest )
function reception()
{
 if (http_request.readyState == 4 && http_request.status == 200)
 {
  //alert(http_request.responseText);
  var fichierxml = http_request.responseXML;

Cette requête, si on regarde dans la console ( en ayant activé le débug de l'ajax...(xhr) ) on peut voir que ça retourne une erreur

Erreur ! SQLSTATE[HY000]: General error: 1364 Field 'nom' doesn't have a default value Les datas : Array ( [:inscription_id] => 28 [:qcm] => 1552243963 [:repond] => 0 [:nb_q] => 1 [:titre] => QCM N°11 [:points] => 0 [:titreid] => 11 )
Warning: Cannot modify header information - headers already sent by (output started at /customers/6/0/9/jeuxechecs.fr/httpd.www/jeu_printemps/ph_qcm/voir_ajax.php:77) in /customers/6/0/9/jeuxechecs.fr/httpd.www/jeu_printemps/ph_qcm/voir_ajax.php on line 99 0

Erreur provenant du code de ton fichier voir_ajax.php
Donc ton souci se trouve dans ton fichier php et ne concerne pas un souci de javascript.
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
4 mai 2019 à 14:15
Merci pour cette recherche.
Je crois que je vais trouver.
Car depuis quelques jours le serveur ne me permet plus d'utiliser mes tables avec des champs vides comme cela était le cas jusqu'à il y a deux ou 3 semaines.J'avais réussi à résoudre ce problème seul ensuite sur d'autres tables en créant de valeurs "bidons" qui était mises à jours ensuite lorsque cela était nécessaire..
Quand au Warning démasqué en cette occasion, c'est à mon avis un autre problème que j'ai déjà rencontré avec "headers already" et que j'ai su résoudre.
Je vais d'abord voir pour remplir tous les champs des tables.Même si ils sont mis à jour comme nécessaire ensuite.
Après je reviendrai pour t'informer de mes travaux si tu veux bien.
Si jamais je ne parvenais pas à résoudre ce problème qui n'est pas du ressort de JS, je noterai ce sujet comme résolu.Puis j'ouvrirais un nouveau sujet sous PHP concernant le problème du fichier voir_ajax.php.
D'accord?
Cela dit l'utilisation de la console permet d'obtenir bien des investigations que je ne soupçonnais pas bien sûr!
Ce que tu as trouvé m'aide beaucoup.
Merci.
A très bientôt.
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
4 mai 2019 à 15:35
J'ai modifié le fichier voir_ajax.php pour remplir tous les champs de la table reponses en ajoutant les lignes 50 et 51.Afin de résoudre cette erreur:
General error: 1364 Field 'nom' doesn't have a default value Les datas : Array ( [:inscription_id] => 28 [:qcm] => 1552243963 [:repond] => 0 [:nb_q] => 1 [:titre] => QCM N°11 [:points] => 0 [:titreid] => 11 )
Comme ci dessous:
<?php
session_start();
require_once 'connexion.php';
/* Cette page gère les requêtes envoyées avec Ajax depuis la page de visualisation de QCM.
Variables :
$_SESSION['qcm'] => Identifiant du QCM.
$_SESSION['rep'] => Réponses de l'utilisateur.
$_SESSION['q'] => Numéro de la question actuelle.
$_SESSION['nb_q'] => Nombre de questions dans le QCM (pour ne pas avoir à la lire tout le temps dans le fichier XML).
$_SESSION['fini'] => Indique si le QCM est fini. On montre alors la correction.
*/
require_once 'fonctions.php';
/*error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
*/
$fichier_xml = simplexml_load_file('qcm/'.$_SESSION['qcm'].'/qcm.xml');

if ($_SESSION['fini'] != 1)
{
	// Le QCM n'est pas encore terminé et se poursuit normalement.
	// Si $_SESSION['q'] == -1, l'utilisateur n'a pas encore répondu a une question
	// Si $_SESSION['q'] >= 0, l'utilisateur a répondu à la question $_SESSION['q'] et on doit sauvegarder sa réponse.
	//if ($_SESSION['q'] >= 0 && isset($_POST['rep'])) $_SESSION['rep'][] = (int)$_POST['rep'];
	if ($_SESSION['q'] >= 0 && isset($_POST['rep']))
	{
		$_SESSION['rep'][] = (int)$_POST['rep'];
		
		$bonnes_reponses = 0;
		$i = 0;
		foreach ($fichier_xml->question as $qxml)
		{
			if (isset($qxml->reponses->rep[$_SESSION['rep'][$i]]) && (int)$qxml->reponses->rep[$_SESSION['rep'][$i]]['bonne'] == 1)
				$bonnes_reponses ++;
			$i ++;		
		}
		$_SESSION['rep_bon']=$bonnes_reponses;
		
		//Lecture du coefficient dans la table coeffi
		$requete = $connection->prepare("SELECT coef FROM coeffi  WHERE dossier = :dossier ");
		$requete->bindValue('dossier', ($_SESSION['qcm']), PDO::PARAM_STR);
		$requete->execute();
		while($row = $requete->fetch()) 
			{
			$_SESSION['coeff']=$row['coef'];
			
			$points = $_SESSION['rep_bon'] * $_SESSION['coeff']; // calcul des points correspondant à la question	
			
			//préparation de la requête et des variables
			$nomm="xx";//Valeur au hasard pour remplir tous les chmaps de la table
			$datereponse= 10;//Valeur au hasard pour remplir tous les chmaps de la table
				$sql = "INSERT INTO reponses(inscription_id, dossier, nom; rep_bon, nbr_questions, password, titre, date_reponse, point_total, titre_id) VALUES (:inscription_id, :qcm, :pseudos, :repond, :nb_q, :titre, :date, :points, :titreid)";
				$datas = array (':inscription_id'=>$_SESSION['id_inscription'],
								':qcm'=>$_SESSION['qcm'],
								':pseudos'=>$nomm,
								':repond'=>$_SESSION['rep_bon'],
								':nb_q'=>$_SESSION['nb_q'],
								':titre'=>$_SESSION['titre'],
								':date'=>$datereponse,
								':points'=>$points,
								':titreid'=>$_SESSION['id']);
			}					
	//Execution de la requete
		try{
		  $requete = $connection -> prepare($sql) ;
		  $requete->execute($datas) ;
		}catch(Exception $e){
		  // en cas d'erreur :
		   echo " Erreur ! ".$e->getMessage();
		   echo " Les datas : " ;
		  print_r($datas);
		}
	}
	// On peut alors passer à la question suivante, si le QCM n'est pas terminé.
	if ($_SESSION['q'] < $_SESSION['nb_q'] - 1)
	{
		$_SESSION['q'] ++;
		// On envoie la nouvelle question.
		$qxml = $fichier_xml->question[$_SESSION['q']];
		$qxml->explic = multi_lignes((string)$qxml->explic);
		foreach ($qxml->reponses->rep as $rep) unset($rep['bonne']); // L'utilisateur ne doit pas pouvoir connître la bonne réponse.
		header("Content-Type: text/xml");
		echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n".XMLpropre($qxml->asXML());
	}
	else
	{
		// Le QCM est terminé, il faut envoyer les résultats.
		//$_SESSION['nb_rep']=$i;
		$_SESSION['test'] = $bonnes_reponses;//conduit sur le fichier test.php pour connaître les bonnes réponses.
		$_SESSION['fini'] = 1;
		header("Content-Type: text/xml");
		echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n".'<bonnesreponses>'.$bonnes_reponses.'</bonnesreponses>';		
		$_SESSION['nb_q']=$i;			
	}
}
else
{
	// Le QCM est fini, on affiche le corrigé. Le numéro de la question à afficher est envoyé dans la variable $_POST['q'].
	// La numérotation commence à 1 pour le client, et à 0 côté serveur.
	$q = 0;
	if (isset($_POST['q'])) $q = (int)$_POST['q'] - 1;
	if (!isset($fichier_xml->question[$q])) exit(0); // Erreur : la question n'existe pas.
	$qxml = $fichier_xml->question[$q];
	$qxml->explic = multi_lignes((string)$qxml->explic);
	$i = 0;
	foreach ($qxml->reponses->rep as $rep)
	{
		if ((int)$rep['bonne'] == 1) $rep->addAttribute('coul', 'vert');
		elseif ($_SESSION['rep'][$q] == $i) $rep->addAttribute('coul', 'rouge');
		else $rep->addAttribute('coul', 'blanc');
		unset($rep['bonne']);
		$i ++;
	}
	header("Content-Type: text/xml");
	echo '<?xml version="1.0" encoding="UTF-8" ?>'."\n".XMLpropre($qxml->asXML());
}
?>

Mais le problème du bouton n'est pas résolu pour autant.
De ce fait je ne me suis pas encore occupé du message Warning qui vient après celui concernent la table dont les champs n'étaient pas tous remplis.

Voici en image la structure de la table reponses:

Comment active ton le débug de l' ajax...(xhr)?
Merci.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
4 mai 2019 à 16:27
Une nouvelle apparait dans l'ajax sur le fichier php

Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '; rep_bon, nbr_questions, password, titre, date_reponse, point_total, titre_id) ' at line 1 Les datas : Array ( [:inscription_id] => 28 [:qcm] => 1556622773 [:pseudos] => xx [:repond] => 0 [:nb_q] => 1 [:titre] => QCM N°32 [:date] => 10 [:points] => 0 [:titreid] => 32 ) Warning: Cannot modify header information - headers already sent by (output started at /customers/6/0/9/jeuxechecs.fr/httpd.www/jeu_printemps/ph_qcm/voir_ajax.php:81) in /customers/6/0/9/jeuxechecs.fr/httpd.www/jeu_printemps/ph_qcm/voir_ajax.php on line 103 0


Pour voir le débug des requêtes ajax, soit tu utilises chrome et dans ce cas tu peux installer le plugin ajax debug
https://chrome.google.com/webstore/detail/ajax-debugger/lgfefckpdealogpcfjdhinecfbcgedam?hl=fr

soit tu utilises firefox et dans les "filtres" de la console tu dois avoir le xhr d'activé
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
4 mai 2019 à 17:36
J'avais fait une erreur de syntaxe par l'oubli de la ligne 11 du fichier voir_ajax.php ci dessous.
J'ai du ensuite en toute logique créer la ligne 3 pour simuler un mot de passe.
(au passage, il doit y avoir surement une autre façon de procéder que la mienne pour cette question de champs de table non remplis qui pourtant fonctionnaient avant?.Sans doute plus conforme.Non?)
	//préparation de la requête et des variables
			$nomm="xx";//Valeur au hasard pour remplir tous les chmaps de la table
			$pass="motdepasse";
			$datereponse= 10;//Valeur au hasard pour remplir tous les chmaps de la table
				$sql = "INSERT INTO reponses(inscription_id, dossier, nom; rep_bon, nbr_questions, password, titre, date_reponse, point_total, titre_id) VALUES (:inscription_id, :qcm, :pseudos, :repond, :nb_q, :pas, :titre, :date, :points, :titreid)";
				$datas = array (':inscription_id'=>$_SESSION['id_inscription'],
								':qcm'=>$_SESSION['qcm'],
								':pseudos'=>$nomm,
								':repond'=>$_SESSION['rep_bon'],
								':nb_q'=>$_SESSION['nb_q'],
								':pas'=>$pass,
								':titre'=>$_SESSION['titre'],
								':date'=>$datereponse,
								':points'=>$points,
								':titreid'=>$_SESSION['id']);
			}					

Ensuite j'ai appliqué l' activation du débug de l'ajax...(xhr) et mis en oeuvre celui ci avec le résultat présenté en image ci dessous!

Cependant ce n'est pas du tout ce à quoi je pouvais m'attendre puisqu'il s'agit là de l'application des cookies.
Il y a donc quelque chose qui m' échappe pour obtenir les même informations que toi de toute évidence.
Qu'ais je manqué ou mal fait ???
Peux tu m'indiquer si la table réponse est en concordance avec les exigence du serveur désormais au regard de tes informations de débuguage de l'ajax?
Merci d'avance.
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
4 mai 2019 à 17:59
Il faut cliquer sur l'onglet "REPONSE" dans ce qui s'affiche à l'écran.
Là tu devrais tomber sur

Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '; rep_bon, nbr_questions, password, titre, date_reponse, point_total, titre_id) ' at line 1 Les datas : Array ( [:inscription_id] => 32 [:qcm] => 1556622773 [:pseudos] => xx [:repond] => 0 [:nb_q] => 1 [:pas] => motdepasse [:titre] => QCM N°32 [:date] => 10 [:points] => 0 [:titreid] => 32 )


Tu verras que tu as une erreur dans ta requête
r, nom; rep_bo

Tu as mis un point-virgule au lieu d'une virgule.


NB: Pour ton souci de valeur par défaut... c'est au niveau de la structure de ta table qu'il faut le gérer....... pas dans le code php !
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
4 mai 2019 à 18:19
Merci pour avoir trouvé mon erreur de syntaxe.

Concernant la console avec le débuguage de l' ajax, je te présente ci dessous l'image de ma console sous Firefox pour te montrer que je n'ai pas d' onglet "REPONSE" disponible.

Y aurait il une manipulation à effectuer pour obtenir cet onglet "REPONSE"?

Pour mon souci de valeur par défaut qui se présente désormais sur le serveur, peux tu m'indiquer à quel endroit sur ce site devrais je ouvrir un sujet sur les configurations de tables pour résoudre ce problème?
Merci.
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
4 mai 2019 à 18:53
Ca y est.
J'ai trouvé pour la console avec le débuguage de l'ajax.
C'est chez moi comme ci dessous:

Il n'en reste pas moins que ce fichu bouton ne veut toujours pas fonctionner.
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
4 mai 2019 à 19:14
On peut observer quelque chose d'intéressant désormais.
Voici:
Erreur ! SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect
Je ne voudrai pas crier victoire trop vite.Mais je pense que la solution est là désormais.
Quelle valeur devrais inscrire sur cette ligne du fichier voir_ajax.php
$datereponse= 10;//Valeur au hasard pour remplir tous les chmaps de la table

pour supprimer cette erreur et certainement résoudre le problème de ce sujet?
En attendant bien sûr l'ouverture d'un autre sujet consacrer aux bases de données et plus particulièrement aux tables qui me permettra de ne plus créer des lignes comme celles ci qui n' ont pas lieu d'exister normalement:
$nomm="xx";//Valeur au hasard pour remplir tous les chmaps de la table
$pass="motdepasse";
$datereponse= 10;//Valeur au hasard pour remplir tous les chmaps de la table

Ainsi que celle ci:
$sql = "INSERT INTO reponses(inscription_id, dossier, nom, rep_bon, nbr_questions, password, titre, date_reponse, point_total, titre_id) VALUES (:inscription_id, :qcm, :pseudos, :repond, :nb_q, :pas, :titre, :date, :points, :titreid)";

Et tout le reste qui deviendra comme avant ma modification d'aujourd'hui.
Merci de bien vouloir continuer avec moi jusqu' à la résolution du problème.
On avance ensemble.
0
Max747 Messages postés 258 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 11 janvier 2024
5 mai 2019 à 09:48
Ca y est le bouton "Valider" fonctionne de nouveau.
Le dysfonctionnement provenait du fichier voir_ajax.php au niveau de ces lignes de codes:
//préparation de la requête et des variables
			$nomm="xx";//Valeur au hasard pour remplir tous les champs de la table
			$pass="motdepasse";//Valeur au hasard pour remplir tous les champs de la table
			$tz = new DateTimeZone('Europe/Paris');
            $ajd = new DateTime('', $tz); // $adj est la date actuelle.
            $datereponse= $ajd->format('Y-m-d H:i:s'); // $datereponse est la date actuelle au format Y-m-d H:i:s
				$sql = "INSERT INTO reponses(inscription_id, dossier, nom, rep_bon, nbr_questions, password, titre, date_reponse, point_total, titre_id) VALUES (:inscription_id, :qcm, :pseudos, :repond, :nb_q, :pas, :titre, :date, :points, :titreid)";
				$datas = array (':inscription_id'=>$_SESSION['id_inscription'],
								':qcm'=>$_SESSION['qcm'],
								':pseudos'=>$nomm,
								':repond'=>$_SESSION['rep_bon'],
								':nb_q'=>$_SESSION['nb_q'],
								':pas'=>$pass,
								':titre'=>$_SESSION['titre'],
								':date'=>$datereponse,
								':points'=>$points,
								':titreid'=>$_SESSION['id']);
			}					

En suivant mon cheminement dans cette recherche avec l'aide absolument primordiale pour ne pas dire indispensable de Jordane, vous comprendrez comme on peut gagner du temps en sachant utiliser la console web sous Javascript.
Bien sûr ce code n'est pas parfait à cause des lignes 2 à 6 incluses qui ne devraient pas être utilisées pour remplir tous les champs de la table reponses qui le seront ensuite lors d'une mise à jour de celle ci.
Mais pressé par le temps, je pare au plus pressé. Et en même temps je suis rassuré sur la pérennité de mon jeu des questions.
Néanmoins, par soucis de réaliser des codes conformes (avec les connaissances dont je dispose), je demanderai à Jordane de bien vouloir m'indiquer à quel endroit sur ce site il est préférable de traiter des questions liées sur les bases de données et plus particulièrement sur les tables à configurer si possible.
Ainsi que si il connait une documentation (de préférence en français) ou un livre expliquant tout ce qui est envisageable de chercher avec la console web en matière de Javascript.
Et de bien vouloir me l'indiquer si il le souhaite.
Enfin, je le remercie une nouvelle fois pour avoir su débusquer mes erreurs de syntaxe et de m'avoir orienté avec l'utilisation de la console web sous Javascript.
En un mot de m'avoir aidé.
Merci.
0