Problème AJAX-PHP correction de bug

Fermé
biscrak Messages postés 6 Date d'inscription jeudi 11 juin 2015 Statut Membre Dernière intervention 25 juin 2015 - 11 juin 2015 à 20:13
miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 - 26 juin 2015 à 22:55
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++;
            }
	    }
A voir également:

1 réponse

miramaze Messages postés 1429 Date d'inscription mercredi 29 juillet 2009 Statut Contributeur Dernière intervention 1 mai 2022 92
26 juin 2015 à 22:55
Hello,

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