Problème AJAX-PHP correction de bug [Fermé]

Signaler
Messages postés
6
Date d'inscription
jeudi 11 juin 2015
Statut
Membre
Dernière intervention
25 juin 2015
-
Messages postés
1428
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
24 janvier 2019
-
Bonjour,
je viens de récupérer un logiciel dont je dois régler les problèmes :
le programme -> enregistrer des clients à des événements (sur un formulaire)
l'utilisateur peu être recherché dans la BD grâce a son numéro de tel.
le problème : je ne c'est pas comment récupérer les valeurs de mon fichiers reservationSPe j'usqu'à mon fichier reservation
exemple ma variable : nbA;
je vien de récupérer le programme ; d'autre personne avait travailler avant moi dessus , je n'est pue faire que peu de chose

de l'aide serais pas de refus

reservation.php

</script>
	<?php
		//PERMET DE NE PAS GARDER LES INFORMATIONS DANS LE CAS OU TOUT S'EST BIEN PASSE
		$memNom = "";
		$memPrenom = "";
		$memTel ="";
		$memMail = "";
		$memNb ="";
        $memVille = "";
		$verif='`^0[1-9][0-9]{8}$`';
		if(!empty($_POST['Enregistrer'])){
		    extract($_POST);
		    $valid = true;
		    if(empty($nom)){
                $valid = false;
			?>
				<script type='text/javascript'>alert("Veuillez saisir un nom");</script>
			<?php
		    }
		    if(empty($prenom)){
			$valid = false;
			?>
				<script type='text/javascript'>alert("Veuillez saisir un prénom");</script>
			<?php
		    }
            if(strval($ville) == 'Veuillez sélectionner une ville') {
			$valid = false;
			?>
				<script type='text/javascript'>alert("Veuillez selectionner une commune");</script>
			<?php
		    }
		    if(empty($nbD)){
			$valid = false;
			?>
				<script type='text/javascript'>alert("Veuillez saisir un nombre de participant");</script>
			<?php
		    }
		    if(empty($tel)){
			
			$valid = false;
			?>
				<script type='text/javascript'>alert("Veuillez saisir un numéro de téléphone");</script>
			<?php
	
		    }
			// Permet la verification du numero de telephone 
		    else
		    {
		    	if(preg_match($verif,$tel) === false || $tel == "0123456789")
		    	{
	            $valid = false;
				?>
					<script type='text/javascript'>alert("Veuillez saisir un numéro de téléphone valide");</script>
				<?php
				}
		    }
		    if(empty($mail))
		    {
				$mail = "NULL";		
		    }
		    if(empty($listeAttente))
		    {
				$listeAttente = "NULL";
		    }	
		    if($valid){
				if(!empty($copier)){
					$_SESSION['nomReservation'] = $nom;
					$_SESSION['prenomReservation'] = $prenom;
					$_SESSION['mailReservation'] = $mail;
					$_SESSION['telReservation'] = $tel;
					$_SESSION['villeReservation'] = $ville;
				}
				else{
					unset($_SESSION['nomReservation']);
					unset($_SESSION['prenomReservation']);
					unset($_SESSION['mailReservation']);
					unset($_SESSION['telReservation']);
					unset($_SESSION['villeReservation']);
				}
			
				include('../connexion/connect.php');
				//La ville est numerique dans le cas ou l'utilisateur n'a pas utilisé de suggestion
				if(!is_numeric($ville)){
					$reqGetNum = "select idV from ville where libelleV = '$ville'";
					$resultGetNum = $pdo->query($reqGetNum) or die(mysql_error());
					if($ligneGetNum = $resultGetNum->fetch(PDO::FETCH_OBJ)){                        
						$ville = $ligneGetNum->idV;
					}
				}
				//associe le tableau date et celui du nombre
				$tab = array_combine($_POST['idD'], $_POST['nbD']);

				$ok = false;
				$bool = false;

				//parcourt le tableau de date et nombre
				foreach($tab as $idD =>$nbD)
				{
					$ok = false;
					$bool = false;

                    $verif = "SELECT *
                        FROM reservation_client
                        where numeroTelC = '".$tel."' 
                        AND numDate = '".$idD."' 
                        AND listeAttente ='NULL'";
                    $nbverif = $pdo->query($verif) or die ("$verif Erreur lors de l'envoi de la requête");
                    $nombreVerif2 = $nbverif->fetch();
					$nombreVerif = $nombreVerif2['nbParticipantC'];

                    $listeAttenteON = "SELECT COUNT(*) 
                        FROM reservation_client
                        where listeAttente != 'NULL' 
                        AND numDate = '".$idD."'";   
                    $verifList = $pdo->query($listeAttenteON) or die ("$listeAttenteON Erreur lors de l'envoi de la requête");
                    $listeVerif = $verifList->fetch();

					$nbTotalP = "SELECT nombrePlaceAssisD 
						FROM date_evenement
						where idD = '".$idD."'";
					$nbPlacesE = $pdo->query($nbTotalP) or die ("$nbTotalP Erreur lors de l'envoi de la requête");
					$nbPlacesE = $nbPlacesE->fetch();

					$nbTotalR = "SELECT SUM(nbParticipantC) 
						from reservation_client
						where numDate = '".$idD."'";
					$nbPlacesR = $pdo->query($nbTotalR) or die ("$nbTotalR Erreur lors de l'envoi de la requête");
					$nbPlacesR = $nbPlacesR->fetch();
					
                    $nbTotal = $nbPlacesE['nombrePlaceAssisD'] - $nbPlacesR[0];

                    $verifLst = "SELECT nbParticipantC 
                        FROM reservation_client
                        where numeroTelC = '".$tel."' 
                        AND numDate = '".$idD."' 
                        AND listeAttente !='NULL'";
                    $nbverifA = $pdo->query($verifLst) or die ("$verifLst Erreur lors de l'envoi de la requête");

                    if($nbD > $nbTotal + 5)
                    {
                        if ($nbD > $nbTotal)
                        {
							$valid = false;
                        	?>
                            	<script type='text/javascript'>alert("Le nombre de participant saisi est superieur aux places disponibles, veuillez cocher la case liste d'attente");</script>
                        	<?php
						}
						$valid = false;
						?>
							<script type='text/javascript'>alert("Le quota a été atteint, veuillez cocher la case liste d'attente");</script>
						<?php	
                   	}
                    if($valid==true)
                    {
						$yN = isset($_POST['sms']) ? "O" : "N";
						
						if($listeVerif[0] == 0 && $nbD != "" && $nbD !="0")
						{
							$ok = true;
                            //enregistre les donnees 
                            $envoie = "INSERT INTO reservation_client (`idC` ,`nomC` ,`prenomC` ,`nbParticipantC` ,`numVille` ,`mailC` ,`numeroTelC` ,`numUtilisateur` ,`numDate`,`listeAttente`, `date_creation`, `sms`)
                            VALUES (NULL , '".addslashes($nom)."','".addslashes($prenom)."', ".$nbD.", ".$ville.", '".$mail."', '".$tel."', ".$_SESSION['id'].", ".$idD.", 'NULL', NOW(), '".$yN."')";
							$pdo->query($envoie) or die ("$envoie Erreur lors de l'envoi de la requête");
							?>
							<script type='text/javascript'>alert("enregistrement");</script>
							<?php
                        }
                        //&& isset($listeVerif) -> dans la
                        elseif($nombreVerif == 0 && $nombreVerif2['nbParticipantC'] == 0 && $nbD != "" && $nbD !="0") 
                        {
                        	$ok = true;
                        	$bool = true;
                            //enregistre les donnees sur liste d'attente
                            $envoie = "INSERT INTO reservation_client (`idC` ,`nomC` ,`prenomC` ,`nbParticipantC` ,`numVille` ,`mailC` ,`numeroTelC` ,`numUtilisateur` ,`numDate`,`listeAttente`, `date_creation`, `sms`)
                            VALUES (NULL , '".addslashes($nom)."','".addslashes($prenom)."', ".$nbA.", ".$ville.", '".$mail."', '".$tel."', ".$_SESSION['id'].", ".$idD.", 'on', NOW(), '".$yN."')";
							$pdo->query($envoie) or die ("$envoie Erreur lors de l'envoi de la requête");
							?>
							<script type='text/javascript'>alert("enregistrement sur liste d'attente");</script>
							<?php
                        }
                        elseif ($nbverifA > "0" && $nombreVerif2['nbParticipantC'] == 0 && !isset($listeVerif) && $nbD != "" && $nbD != "0")
                        {
                        	$ok = true;
                        	$bool = true;
                            //enregistre les donnees sur liste d'attente si présence d'une liste d'attente
                            $envoie = "INSERT INTO reservation_client (`idC` ,`nomC` ,`prenomC` ,`nbParticipantC` ,`numVille` ,`mailC` ,`numeroTelC` ,`numUtilisateur` ,`numDate`,`listeAttente`, `date_creation`, `sms`)
							VALUES (NULL , '".addslashes($nom)."', '".addslashes($prenom)."', ".$nbD.", ".$ville.", '".$mail."', '".$tel."', ".$_SESSION['id'].", ".$idD.",'on', NOW(), '".$yN."')";
							$pdo->query($envoie) or die ("$envoie Erreur lors de l'envoi de la requête");
							?>
							<script type='text/javascript'>alert("enregistrement sur liste d'attente si elle existe");</script>
							<?php
                        }
                        // ?
                        if($nbD != $nombreVerif2['nbParticipantC'] && $nbD != "" && $nbD !="0")
                        {
                        	$ok = true;
                            //modifie le nombre de reservation du client 
                            $updateReq = "update reservation_client set nbParticipantC = '".$nbD."', sms = '".$yN."' where numDate = '".$idD."' and numeroTelC = '".$tel."' and listeAttente = 'NULL'";
							$pdo->query($updateReq) or die ("$updateReq Erreur lors de l'envoi de la requête");
							?>
							<script type='text/javascript'>alert("modifie enregistrement");</script>
							<?php
                        }
                        elseif ($nbD != "" && $nbD !="0" && isset($listeVerif))
                        {
                        	$ok = true;
                            //mofifie le nombre sur liste d'attente de reservation du client 
                            $updateReq = "update reservation_client set nbParticipantC = '".$nbD."', sms = '".$yN."' where numDate = '".$idD."' and numeroTelC = '".$tel."' and listeAttente = 'on'";
							$pdo->query($updateReq) or die ("$updateReq Erreur lors de l'envoi de la requête");
							?>
							<script type='text/javascript'>alert("modifie enregistrement sur liste d'attente");</script>
							<?php
                        }
                        if($nbD == "" || $nbD =="0" && $ok == false)
                        {
                            //supprime les enregistrement dont le nombre est 0 ou ""
                            $deleteReq = "Delete from reservation_client where numeroTelC = '".$tel."' and numDate = '".$idD."' and listeAttente = 'NULL'";
							$pdo->query($deleteReq) or die ("$deleteReq Erreur lors de l'envoi de la requête");
							?>
							<script type='text/javascript'>alert("supprime enregistrement");</script>
							<?php
                        }    
                    }
				}
				if ($ok == true && $bool == true)
				{
					?>
					<script type='text/javascript'>alert("Il y a des personnes dans la liste d'attente, la personne enregistrée a été placée dans celle-ci");</script>
					<?php
				}
				elseif($ok==true)
				{
				?>
					<script type='text/javascript'>alert("Votre enregistrement a bien été pris en compte");</script>
				<?php
				}
			}
			// PERMET DE STOCKER LES INFORMATIONS EN CAS D'ERREUR
			if($valid == false)
			{
				$memNom = $_POST['nom'];
				$memPrenom = $_POST['prenom'];
				$memTel = $_POST['tel'];
				$memMail = $_POST['mail'];
				$memNb = (isset($_POST['nb'])) ? $_POST['nb'] : null;
				if(is_numeric($ville))
				{
					$reqNomVille ="select libelleV from ville WHERE idV = $ville";
					$resultNomVille = $pdo->query($reqNomVille) or die(mysql_error());
					$ligneNomVille = $resultNomVille->fetch();
					$memVille = $ligneNomVille['libelleV'];
				}
				else
				{
					$memVille = $ville;
				}
			}
		}


reservation.js

function getXMLHttpRequest() {
	var xhr = null;
	if (window.XMLHttpRequest || window.ActiveXObject) 
	{
		if (window.ActiveXObject)
		{
			try 
			{
                // Création de l'objet ActiveXObjet
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch(e) 
			{
				xhr = new ActiveXObject("Microsoft.XMLHTTP");
			}
		} 
		else 
		{
			//L'objet httpRequest permet l'envoi de la requête au serveur sans avoir
			//besoin de recharger la page web.
			//L'objet n'est pas le même suivant le navigateur utilisé
			xhr = new XMLHttpRequest(); 
		}
	} 
	else 
	{
		alert("Votre navigateur ne supporte pas l'objet XMLHTTPRequest...");
		return null;
	}	
	return xhr;
}

function submit()
{
var xhr = getXMLHttpRequest();
var evenement = document.getElementById('evenement').value;

xhr.onreadystatechange = function() 
{
    //statut de l'objet && code numérique de réponse du serveur HTTP
        if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) 
        {
            //responsetext = Réponse sous forme de chaîne de caractères.
                document.getElementById('afficher').innerHTML = xhr.responseText; // Données textuelles récupérées
        }
};
// on appelle une page php grâce à la méthode open() de l'objet xhr
xhr.open("POST", "reservationSpe.php", true);
//Assigne une valeur à un champ d'entête HTTP qui sera envoyé lors de la requête.
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//Effectue la requête, éventuellement en envoyant les données.
xhr.send("evenement="+evenement);

}
function submitTo()
{
	var xhr = getXMLHttpRequest();
	var evenementTo = document.getElementById('evenementTo').value;

	xhr.onreadystatechange = function() {
	    //statut de l'objet && code numérique de réponse du serveur HTTP
	        if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
	            //responsetext = Réponse sous forme de chaîne de caractères.
	                document.getElementById('afficher').innerHTML = xhr.responseText; // Données textuelles récupérées
	        }
	};
	// on appelle une page php grâce à la méthode open() de l'objet xhr
	xhr.open("POST", "reservationSpe.php", true);
	//Assigne une valeur à un champ d'entête HTTP qui sera envoyé lors de la requête.
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	//Effectue la requête, éventuellement en envoyant les données.
	xhr.send("evenementTo="+evenementTo);
}


if($_POST['evenement']!='-1')
        {
        	$evenement = $_POST['evenement'];
            $s = "select* 
                from evenement, date_evenement, salle, ville 
                where date_evenement.numEvenement = evenement.idE
                and salle.numVille = ville.idV
                and date_evenement.numSalle = salle.idS
                and numEvenement = ".$evenement."
                and dateD>now()
                and ecole is null
                order by dateD ASC";
            $_SESSION['evenement']=$evenement;
            $reponse = $pdo->query($s) or die ("Erreur de l'envoi de la requête");
            $e = 0;
            $l = 0;
            while($val = $reponse->fetch(PDO::FETCH_OBJ))
            {
                $decoupeHeureDate = explode(" ",$val->dateD);
                $heure = $decoupeHeureDate[1];
                $decoupeHeure = explode(":",$heure);
                $heure = $decoupeHeure[0].":".$decoupeHeure[1];
                $val->dateD = $decoupeHeureDate[0];
                $rest = substr($val->dateD, 0, 4);
                $rest1 = substr($val->dateD, 5, 2);
                $rest2 = substr($val->dateD, 8, 2);
                $resultDate = $rest2."-".$rest1."-".$rest;
                $jour = date('D', strtotime($val->dateD));
                $restJour = substr($jour,0,3);
                if($restJour == "Mon"){
                    $restJour = "Lundi";
                }
                if($restJour == "Tue"){
                    $restJour = "Mardi";
                }
                if($restJour == "Wed"){
                    $restJour = "Mercredi";
                }
                if($restJour == "Thu"){
                    $restJour = "Jeudi";
                }
                if($restJour == "Fri"){
                    $restJour = "Vendredi";
                }
                if($restJour == "Sat"){
                    $restJour = "Samedi";
                }
                if($restJour == "Sun"){
                    $restJour = "Dimanche";
                }
                // Afficher le nombre de place restant
                $calcul = 'select sum(nbParticipantC) as "rest" from reservation_client where numDate = "'.$val->idD.'" and listeAttente = "NULL"';
                $resultcalcul = $pdo->query($calcul) or die ("$calcul Erreur lors de l'envoi de la requête");
                // calcul de nombre de place restant
                $li = $resultcalcul->fetch(PDO::FETCH_OBJ);
                if (isset($_SESSION['tel']))
                {
                    $telephone = $_SESSION['tel'];
                }
                else
                {
                    $telephone = null;
                }
                $nbReq = 'SELECT nbParticipantC 
                    FROM reservation_client
                    JOIN ville ON reservation_client.numVille = ville.idV
                    where numeroTelC = "'.$telephone.'" 
                    AND numDate = "'.$val->idD.'" 
                    and listeAttente = "NULL"';
                $resultNb = $pdo->query($nbReq) or die ("$nbReq Erreur lors de l'envoi de la requête");
                $nbC = $resultNb->fetch(PDO::FETCH_OBJ);

                $nbReqA = 'SELECT nbParticipantC 
                    FROM reservation_client
                    JOIN ville ON reservation_client.numVille = ville.idV
                    where numeroTelC ="'.$telephone.'" 
                    AND numDate = "'.$val->idD.'" 
                    and listeAttente = "on"';
                $resultNbA = $pdo->query($nbReqA) or die ("$nbReqA Erreur lors de l'envoi de la requête");
                $nbAtt = $resultNbA->fetch(PDO::FETCH_OBJ);

                // nombre total de place possible à réserver - le nombre de place déjà réservé !
                $total = $val->nombrePlaceAssisD - $li->rest;
                echo '<input type="hidden" name="total['.$e.']" id="total['.$e.']" value="'.$total.'" />';
                echo '<input type="hidden" name="idD['.$l.']" id="idD['.$l.']" value="'.$val->idD.'" />';
                // si le résultat du nb de place possible - le nb de place réservé est égal à 0 et bien il n'y a plus de place disponible. 
                if($total <= 0)
                {
                    $place = '<b>Plus de place disponible !</b>';
                }
                else
                {
                    $place = '<b>Il reste '.$total.' places !</b>';
                }
                $attente = 'select sum(nbParticipantC) as "rest2" from reservation_client where numDate = '.$val->idD.' and listeAttente = "on"';
                $resultAttente = $pdo->query($attente) or die ("Erreur lors de l'envoi de la requête");
                $a = $resultAttente->fetch(PDO::FETCH_OBJ);
                if($a->rest2==0)
                {
                    $lstAttente = "Il n'y a aucune réservation en attente <br />";
                }
                else
                {
                    $lstAttente = "Il y à ".$a->rest2." personnes sur la liste d'attente <br />";
                }

                if($resultNbA->fetchColumn() == 0 )
                {

                    $affLstAttente ='<br /><label>Sur la liste d\'attente : </label>
                    <input type="checkbox" name="lstA['.$e.']" id="lstA['.$e.']" /> 
                    <input type="text" name="nbA['.$e.']" id="nbA['.$e.']" class ="attente" value="'.$nbAtt['nbParticipantC'].'" size="5" maxlength="5" placeholder="Ex : 5"/><br/>';
                }
                else
                {
                    $affLstAttente ='<br /><label>Sur la liste d\'attente : </label>
                    <input type="checkbox" checked="checked" name="lstA['.$e.']" id="lstA['.$e.']" />
                    <input type="text" name="nbA['.$e.']" id="nbA['.$e.']" class ="attente" value="'.$nbAtt['nbParticipantC'].'" size="5" maxlength="5" placeholder="Ex : 5" /><br />';
                }
                //affiche les information de la date ainsi que le champ pour saisir le nombres de participant
                echo'<br/><label>'.$restJour." ".$resultDate." à ".$heure.'<br /> '.$val->nomS.' '.$val->libelleV.' : <br/>'.$lstAttente.'<br/> </label>
                <input type="text" name="nbD['.$e.']" id="nbD['.$e.']" value="'.$nbC['nbParticipantC'].'" size="5" maxlength="5" placeholder="Ex : 5" onKeyup = "dispo(this,this.value,'.$total.')" || onBlur = "dispo(this,this.value,'.$total.')"/>
                '.$place.'<br /><br /><br />'.$affLstAttente.'<br />';
                $e++;
                $l++;
            }
	    }

1 réponse

Messages postés
1428
Date d'inscription
mercredi 29 juillet 2009
Statut
Contributeur
Dernière intervention
24 janvier 2019
89
Hello,

là déjà, il faudrait isoler la vue, le modèle et le controlleur, histoire d'y voir plus clair, c'est illisible.