IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Valider formulaire sans charger la page et en tapant entrée


Sujet :

JavaScript

  1. #21
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    en sachant aussi que l'id de la popup est aussi l'id du destinataire que je dois donc ensuit envoyer vers php

  2. #22
    Membre régulier
    Homme Profil pro
    developpeur web et android
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : developpeur web et android
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 104
    Points
    104
    Par défaut
    C'est bon voici ce que je te propose pour le moment. crée 4 fichier : style.css , graphique.html , script.js et serveur.php. Tu mets ces fichiers dans un même dossier.

    - Pour graphique.html voici mon petit code : remplace /CHEMIN JQUERY CHEZ TOI/ par le vrai chemin du jquery chez toi

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <!DOCTYPE html>
    <html>
    <head>
    	<title>Messagerie</title>
    	<script type="text/javascript" src="/CHEMIN JQUERY CHEZ TOI/"></script>
    	<script type="text/javascript" src="box.js"></script>
    	<link rel="stylesheet" type="text/css" href="box.css">
    </head>
    <body>
    	<div id="conteneur_list_member">
    		<div style="display: block;padding: 10px 0px;background: #636769; color : #fff;text-align: center;">Liste des membres</div>
    		<div id="all_member">
    			<a href="" for="20" class="member">Philippe</a>
    			<a href="" for="2" class="member">Claude</a>
    			<a href="" for="17" class="member">Jean</a>
    		</div>
    	</div>
    	<div id="conteneur_pop"></div>
    </body>
    </html>
    L'id de chaque membre est stocké dans l'attribut for de la balise a

    - Pour style.css voici :

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    form{
    	width: 100%;
    	height: 100%;
    	border: 1px solid rgb(100,100,100);
    	overflow: hidden;
    	position: relative;
    	padding: 0px;
    }
    form div:nth-child(1){
    	display: block;
    	padding: 10px 0px;
    	color : #fff;
    	background: #1d2a41;
    	text-align: center;
    	font-size: 16px;
    	font-weight: 600;
    	position: absolute;
    	top : 0px;
    	left: 0px;
    	width: 100%;
    }
    .displayer_all_sms{
    	position: absolute;
    	top : 38px;
    	left: 0px;
    	right: -10px;
    	bottom: 70px;
    	background: #f3f3f3;
    	width: 103%;
    	overflow-x: hidden;
    	overflow-y: auto;
    }
    form textarea{
    	position: absolute;
    	bottom: 0px;
    	left : 0px;
    	width: 100%;
    	height: 40px;
    	padding: 5px;
    	border : none;
    	border-top: 1px solid rgb(100,100,100);
    }
    label{
    	display: block;
    }
    .every_box{
    	display: inline-block;
    	padding: 10px;
    	margin: 5px;
    	margin-left: 5%;
    	background: #1e7293;
    	color: #fff;
    }
    #conteneur_list_member{
    	display: block;
    	width: 20%;
    	position: fixed;
    	top : 0px;
    	bottom: 0px;
    	left :0px;
    	background: #e6e6e6;
    }
    #all_member{
    	position: absolute;
    	top : 40px;
    	left : 0px;
    	bottom: 0px;
    	right: 0px;
    	overflow-y: auto;
    	overflow-x: hidden;
    }
    .member{
    	display: block;
    	width: 90%;
    	padding: 10px 0px;
    	border-bottom : 1px solid #b4bbbf;
    	margin: 3px auto;
    	text-decoration: none;
    	color : #787575;
    	text-align: center;
    	font-weight: 600;
    }
    #conteneur_pop{
    	display: block;position: fixed;
    	bottom: 5px;right: 0px;
    	width: 75%;
    	height: 40px;
    }
    .pop_bloc{
    	display: block;
    	height: 300px;
    	width: 250px;
    	position: absolute;
    	bottom: 0px;
    	right : 10px;
    }

    - Pour script.js

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    $(function(){
    	var member = $(".member"),popDisplay = {},position = 0;
    	member.on("click",function(e){
    		if (!e.preventDefault()) {
    			e.target;
    		}
    		var id_user = $(this).attr("for"),user_name = $(this).text();
    		if (typeof popDisplay[""+id_user] == "undefined") {
    			popDisplay[""+id_user] = position;
    			position++;
    			add_new_pop(user_name);
    		}
    	})	
    })
    function add_new_pop(title_){
    	var div = $("<div>"),receptor_pop_element = div.clone().attr("class","pop_bloc"),rightPop,all_pop_display = $("#conteneur_pop .pop_bloc").length;
    	rightPop = (250+20)*all_pop_display;
     
    	var formBalise,title_pop,displayer_pop_box,zone_text;
    	formBalise = $("<form>");
     
    	title_pop = div.clone().text(title_);
    	displayer_pop_box = div.clone().attr("class","displayer_all_sms");
    	zone_text = $("<textarea>").attr("placeholder","Votre message");
     
    	formBalise.append(title_pop).append(displayer_pop_box).append(zone_text);
     
    	if (rightPop == 0) {rightPop = 10;}
    	receptor_pop_element.css({right : rightPop+"px"}).append(formBalise);
     
    	$("#conteneur_pop").append(receptor_pop_element);
    	send_box(zone_text,displayer_pop_box);
    }
    function send_box(zone_sms,displayer){
    	zone_sms.on("keydown",function(e){
    		if (e.keyCode == 13) {
    			if (!e.preventDefault()) {
    				e.target;
    			}
    			// tu mets ton code a executé a l'appui de l'ENTRER ici. pour moi j'envoi le message
     
    			// en premier lieu je recupère dans une variable text_sms le contenu de mon textarea et je vérifie si c'est vide ou pas
     
    			var text_sms = $(this).val(),all_key = text_sms.split(" "),isEmpty = true;
    			$(this).val("");
    			for (var i = all_key.length - 1; i >= 0; i--) {
    				if (all_key[i] != "") {
    					isEmpty = false;
    				}
    			}
     
    			if (!isEmpty) {
    				/* 
    					- si ce n'est pas vide on continue
    					- on envoi le texte a un notre fichier php pour etre sauvegarder dans une data base
    				*/
    				$.ajax({
    					url : "serveur.php",
    					type: "POST",
    					data: {text_box : text_sms},
    					dataType: "JSON",
    					success: function(resultat){
    						if (resultat.end) {
    							// si le message est envoi au fichier php on ajoute le texte a notre displayer_all_box pour l'afficher a l'écran
    							displayer.append("<label><span class='every_box'>"+text_sms+"</span></label>");
    						}
    						else{
    							alert("message non envoyé");
    						}
    					} 
    				});
    			}
    			else{
    				alert("Zone Vide");
    			}
    		}
    	})
    }

    - Enfin serveur.php :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    	header('Content-Type: application/json');
    	$end = false;
     
    	if (isset($_POST["text_box"])) {
    		$text_du_message = htmlspecialchars($_POST["text_box"]);
     
    		// Tu traite le message et tu sauvegarde dans une base de donnée si tu en as besoin.
    		$end = true;
    	}
    	echo json_encode(array("end" => $end));
     
    ?>


    Si c'est bon je passe a comment verifier et afficher les nouveaux messages pour chaque pop.

    FIN EXECUTE VOIR

    L'ordinateur ne fait pas ce qu'on veut qu'il fasse mais il fait ce qu'on lui demande de faire .

  3. #23
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    tous est bon

  4. #24
    Membre régulier
    Homme Profil pro
    developpeur web et android
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : developpeur web et android
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 104
    Points
    104
    Par défaut
    ok c'est quoi tes column de ta data base??
    L'ordinateur ne fait pas ce qu'on veut qu'il fasse mais il fait ce qu'on lui demande de faire .

  5. #25
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    table chats

    id en auto increment
    user_id qui est id de l'expediteur
    user_to qui est l'id du destinaire
    message donc la liste des messages
    sent_to qui est la date d'envoi du message en timestamps

  6. #26
    Membre régulier
    Homme Profil pro
    developpeur web et android
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : developpeur web et android
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 104
    Points
    104
    Par défaut
    Salut excuise moi pour ce silence mais mon écran avait un problème je viens de reparer. On continue notre programme. Voici les changements :
    - Pas de changement pour le ficher graphique.html. Mais tu charge la liste des utilisateurs dans la zone liste des membres sous cette forme <a href="" for="id_member">Pseudo</a>. J'ai pas faire le chargement des membres chez moi. donc complet. tu remplace /CHEMIN DE JQUERY CHEZ TOI/ par le vrai chemin de jQuery chez toi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <!DOCTYPE html>
    <html>
    <head>
    	<title>Messagerie</title>
    	<script type="text/javascript" src="/CHEMIN DE JQUERY CHEZ TOI/"></script>
    	<script type="text/javascript" src="box.js"></script>
    	<link rel="stylesheet" type="text/css" href="box.css">
    </head>
    <body>
    	<div id="conteneur_list_member">
    		<div style="display: block;padding: 10px 0px;background: #636769; color : #fff;text-align: center;">Liste des membres</div>
    		<div id="all_member">
    			<a href="" for="20" class="member">Philippe</a>
    			<a href="" for="2" class="member">Claude</a>
    			<a href="" for="17" class="member">Jean</a>
    		</div>
    	</div>
    	<div id="conteneur_pop"></div>
    </body>
    </html>

    -script.js : beaucoup de changement voici le script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
    $(function(){
    	var member = $(".member"),popDisplay = {},position = 0;
    	member.on("click",function(e){
    		if (!e.preventDefault()) {
    			e.target;
    		}
    		var id_user = $(this).attr("for"),user_name = $(this).text();
    		if (typeof popDisplay[""+id_user] == "undefined") {
    			popDisplay[""+id_user] = position;
    			position++;
    			add_new_pop(user_name,id_user);
    		}
    	})	
    })
    function add_new_pop(title_,id_user_rece){
    	var div = $("<div>"),receptor_pop_element = div.clone().attr("class","pop_bloc"),rightPop,all_pop_display = $("#conteneur_pop .pop_bloc").length;
    	rightPop = (250+20)*all_pop_display;
     
    	var formBalise,title_pop,displayer_pop_box,zone_text;
    	formBalise = $("<form>");
     
    	title_pop = div.clone().text(title_);
    	displayer_pop_box = div.clone().attr("class","displayer_all_sms");
    	zone_text = $("<textarea>").attr("placeholder","Votre message");
     
    	formBalise.append(title_pop).append(displayer_pop_box).append(zone_text);
     
    	if (rightPop == 0) {rightPop = 10;}
    	receptor_pop_element.css({right : rightPop+"px",background : "#fff"}).append(formBalise);
     
    	$("#conteneur_pop").append(receptor_pop_element);
    	send_box(zone_text,displayer_pop_box,id_user_rece);
    	load_box(id_user_rece,displayer_pop_box);
    }
    function send_box(zone_sms,displayer,id){
    	zone_sms.on("keydown",function(e){
    		if (e.keyCode == 13) {
    			if (!e.preventDefault()) {
    				e.target;
    			}
    			// tu mets ton code a executé a l'appui de l'ENTRER ici. pour moi j'envoi le message
     
    			// en premier lieu je recupère dans une variable text_sms le contenu de mon textarea et je vérifie si c'est vide ou pas
     
    			var text_sms = $(this).val(),all_key = text_sms.split(" "),isEmpty = true;
    			$(this).val("");
    			for (var i = all_key.length - 1; i >= 0; i--) {
    				if (all_key[i] != "") {
    					isEmpty = false;
    				}
    			}
     
    			if (!isEmpty) {
    				/* 
    					- si ce n'est pas vide on continue
    					- on envoi le texte a un notre fichier php pour etre sauvegarder dans une data base
    				*/
    				$.ajax({
    					url : "serveur.php",
    					type: "POST",
    					data: {text_box : text_sms,user_recev : id},
    					dataType: "JSON",
    					success: function(resultat){
    						if (resultat.end) {
    							// si le message est envoi au fichier php on ajoute le texte a notre displayer_all_box pour l'afficher a l'écran
    							displayer.append("<label for='"+resultat.box_send_id+"'><span class='every_box connect_user'>"+text_sms+"</span><span class='stop block'></span></label>");
    							displayer.scrollTop(displayer.height());
    							if (displayer.find("label").length == 1 ) {
    								setInterval(function(){
    									auto_control_box(id,displayer);	
    								},5000);
    							}
    						}
    						else{
    							alert("message non envoyé");
    						}
    					} 
    				});
    			}
    		}
    	})
    }
    function auto_control_box(id,currentPopDisplay){
    	var all_label = currentPopDisplay.find("label"),t = all_label.length,last_box_of_this_popDisplay = 0;
    	if (t != 0) {
    		t--;
    		last_box_of_this_popDisplay = all_label.eq(t).attr("for");
    	}
    	$.ajax({
    		url : "serveur.php",
    		type: "POST",
    		data: {get_all_box : id,last_box_display : last_box_of_this_popDisplay},
    		dataType: "JSON",
    		success: function(resultat){
    			if (resultat.end) {
    				if (resultat.new_box_number != 0) {
    					for (var i = resultat["dataBox"].length - 1; i >= 0; i--) {
    						var current = resultat["dataBox"][i];
    						currentPopDisplay.append("<label for='"+current.box_id+"'><span class='every_box no_connect'>"+current.box+"</span><span class='stop block'></span></label>");
    					}
    					currentPopDisplay.scrollTop(currentPopDisplay.height());	
    				}
    			}
    		} 
    	});
    }
    function load_box(id,currentPopDisplay){
    	$.ajax({
    		url : "serveur.php",
    		type: "POST",
    		data: {load_box : id},
    		dataType: "JSON",
    		success: function(resultat){
    			if (resultat.end) {
    				for (var i = resultat["dataBox"].length - 1; i >= 0; i--) {
    					var current = resultat["dataBox"][i];
    					var dispo = "connect_user";
    					if (current.type == 2) {dispo  = "no_connect";}
    					currentPopDisplay.append("<label for='"+current.box_id+"'><span class='every_box "+dispo+"'>"+current.box+"</span><span class='stop block'></span></label>");
    				}
    				currentPopDisplay.scrollTop(currentPopDisplay.height());
    				setInterval(function(){
    					auto_control_box(id,currentPopDisplay);	
    				},5000);
    			}
    		} 
    	});
    }
    - server.php beaucoup de changement. pour les request mysql j'ai utiliser PDO parce sur mon poste j'utilise PHP7 donc les requests mysql_**** ne marche pas. Avant que tu ne commence par l'utilisé le programme crée une partie de connexion (genre tu fais un petit formulaire demandant un pseudo a utilisateur maintenant une fois le pseudo envoyé tu enrégistre dans une table user et tu stock son id dans une session $_SESSION["user"]). Après, tu change la valeur de de la variable ($user_connect = 10) => ($user_connect = $_SESSION["user"]). Enfin crée une table tchat_live avec les columns (id[int], id_sender[int], id_recev[int], body_box[text], dure[int], temps[varchar], etat_box[varchar]); et tu change les données de la connexion a la base de données ($db = new PDO("mysql:host=localhost;dbname=tchat","root","root")).
    Pour ce code ("mysql:host=localhost;dbname=tchat","root","root") => ( mysql_connect("localhost","root","root"); mysql_select_db("tchat") Mais si tu remplace la première par la deuxième dans le code suivant ça ne va pas fonctionner directement. Donc change juste ce que je t'ai demandé et tout ira bien. Voici le code :

    - serveur.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    <?php
            header('Content-Type: application/json');
            session_start();
     
            try {
                    $db = new PDO("mysql:host=localhost;dbname=tchat","root","root");
            } catch (Exception $e) {
                    $db = false;
            }
     
     
            $end = false; $answers = array(); $user_connect = 10;
            
            $add_box =$db->prepare("INSERT INTO tchat_live(id_sender,id_recev,body_box,dure,temps,etat_box) VALUES(?,?,?,?,?,?)");
     
            $get_box_id = $db->prepare("SELECT * FROM tchat_live WHERE id_sender=? AND id_recev=?  ORDER BY id DESC");
     
            if (isset($_POST["text_box"]) && isset($_POST["user_recev"])) {
                    $text_du_message = htmlspecialchars($_POST["text_box"]);
                    $user_recev = htmlspecialchars($_POST["user_recev"]);
     
                    if (preg_match("#^[0-9]+$#", $user_recev) && $user_recev > 0 && $db) {
                            
                            $add_box -> execute(array(
                                            $user_connect,
                                            $user_recev,
                                            $text_du_message,
                                            @time(),
                                            @date("d-M-Y"),
                                            '0'
                                    ));
     
                            $get_box_id -> execute(array($user_connect,$user_recev));
                            $get_box_id -> setFetchMode(PDO::FETCH_ASSOC);
                            $box_id = $get_box_id -> fetch();
     
                            $answers["box_send_id"] = $box_id["id"];
                            $end = true;
                    }
            }
            if (isset($_POST["get_all_box"]) && isset($_POST["last_box_display"])) {
                    
                    $id_user_box_verif = htmlspecialchars($_POST["get_all_box"]);
                    $id_last_box_display = htmlspecialchars($_POST["last_box_display"]);
     
                    $new = 0;
                    if (preg_match("#^[0-9]+$#", $id_user_box_verif)) {
                            
                            if ($id_user_box_verif != 0) {
                                    $get_all = $db->prepare("SELECT * FROM tchat_live WHERE id_sender=? and id_recev=?  ORDER BY id DESC");
                                    $get_all -> execute(array($id_user_box_verif,$user_connect));   
                            }
                            else{
                                    $get_all = $db->prepare("SELECT * FROM tchat_live WHERE id_recev=?  ORDER BY id DESC");
                                    $get_all -> execute(array($user_connect));
                            }
                            $get_all -> setFetchMode(PDO::FETCH_ASSOC);
     
                            while($ans = $get_all -> fetch()) {
                                    if ($ans["id"] != null) {
                                            $v = false;
                                            if (($id_last_box_display != 0 && $id_last_box_display < $ans["id"]) || $id_last_box_display == 0) {
                                                    $v = true;
                                            }
                                            if ($v) {
                                                    if (!isset($answers["new_box_user"])) {
                                                            $answers["new_box_user"] = array();
                                                    }
                                                    $t = 1;
                                                    $new_box_user = array(
                                                                    "id_sender" => $id_user_box_verif,
                                                                    "box" => $ans["body_box"],
                                                                    "box_id" => $ans["id"],
                                                            );
     
                                                    array_push($answers["new_box_user"], $new_box_user);
                                                    $new++;
                                            }
                                    }
                            }
                            $end = true;
                    }
                    $answers["new_box_number"] = $new;
            }
            if (isset($_POST["load_box"])) {
                    $us = htmlspecialchars($_POST["load_box"]);
                    if (preg_match("#^[0-9]+$#", $us) && $us > 0) {
                            $get_all = $db->prepare("SELECT * FROM tchat_live WHERE (id_sender=? and id_recev=?) OR (id_sender=? and id_recev=?)  ORDER BY id DESC");
                            $get_all -> execute(array($us,$user_connect,$user_connect,$us));
                            $get_all -> setFetchMode(PDO::FETCH_ASSOC);
     
                            while($ans = $get_all -> fetch()) {
                                    if ($ans["id"] != null) {
                                            if (!isset($answers["dataBox"])) {
                                                    $answers["dataBox"] = array();
                                            }
                                            $t = 1;
                                            if ($ans["id_sender"] != $user_connect) {
                                                    $t = 2;
                                            }
                                            $new_box_user = array(
                                                            "id_sender" => $us,
                                                            "box" => $ans["body_box"],
                                                            "box_id" => $ans["id"],
                                                            "type" => $t,
                                                    );
     
                                            array_push($answers["dataBox"], $new_box_user);
                                    }
                            }
                            $end = true;
                    }               
            }
            $answers["end"] = $end;
            echo json_encode($answers);
    ?>

    - Pour fini style.css :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    form{
    	width: 100%;
    	height: 100%;
    	border: 1px solid rgb(100,100,100);
    	overflow: hidden;
    	position: relative;
    	padding: 0px;
    }
    form div:nth-child(1){
    	display: block;
    	padding: 10px 0px;
    	color : #fff;
    	background: #1d2a41;
    	text-align: center;
    	font-size: 16px;
    	font-weight: 600;
    	position: absolute;
    	top : 0px;
    	left: 0px;
    	width: 100%;
    }
    .displayer_all_sms{
    	position: absolute;
    	top : 38px;
    	left: 0px;
    	right: -10px;
    	bottom: 70px;
    	background: #f3f3f3;
    	width: 103%;
    	overflow-x: hidden;
    	overflow-y: auto;
    }
    form textarea{
    	position: absolute;
    	bottom: 0px;
    	left : 0px;
    	width: 100%;
    	height: 40px;
    	padding: 5px;
    	border : none;
    	border-top: 1px solid rgb(100,100,100);
    }
    label{
    	display: block;
    }
    .every_box{
    	display: inline-block;
    	padding: 10px;
    	margin: 5px;
    	max-width: 60%;
    }
    #conteneur_list_member{
    	display: block;
    	width: 20%;
    	position: fixed;
    	top : 0px;
    	bottom: 0px;
    	left :0px;
    	background: #e6e6e6;
    }
    #all_member{
    	position: absolute;
    	top : 40px;
    	left : 0px;
    	bottom: 0px;
    	right: 0px;
    	overflow-y: auto;
    	overflow-x: hidden;
    }
    .member{
    	display: block;
    	width: 90%;
    	padding: 10px 0px;
    	border-bottom : 1px solid #b4bbbf;
    	margin: 3px auto;
    	text-decoration: none;
    	color : #787575;
    	text-align: center;
    	font-weight: 600;
    }
    #conteneur_pop{
    	display: block;position: fixed;
    	bottom: 5px;right: 0px;
    	width: 75%;
    	height: 40px;
    }
    .pop_bloc{
    	display: block;
    	height: 300px;
    	width: 250px;
    	position: absolute;
    	bottom: 0px;
    	right : 10px;
    }
    .connect_user{
    	float: right;
    	margin-right: 5%;
    	background: #7cbfda;
    	color: #000;
    }
    .no_connect{
    	float: left;
    	margin-left: 5%;
    	background: #1e7293;
    	color: #fff;
    }
    .block{
    	display: block;
    }
     
    .stop{
    	clear: both;
    }

    FIN EXECUTE VOIR
    L'ordinateur ne fait pas ce qu'on veut qu'il fasse mais il fait ce qu'on lui demande de faire .

  7. #27
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    merci beaucoup je vais tester ça

  8. #28
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    c'est super ça fonctionne aprés il y a juste un petit truc aprés je pense que c'est plutot en js si un membre a par exemple 10 contacts et il parle aux 10 les popups s'affiche en dehors de la fenetre, j'ai des fonctions mais je vois pas comment les adaptés pour calculé le nombre de popups ouvert, et a partir d'un certain chiffre, que d'autre s'ouvre pas si tu vois ce que je veux dire,

    et aussi fermer ou reduire les popups

  9. #29
    Membre régulier
    Homme Profil pro
    developpeur web et android
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : developpeur web et android
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 104
    Points
    104
    Par défaut
    Demain je te corrige tout ça. gestion du nombre de pop afficher, reduire et fermer. Après ça il n'y a plus rien??

    FIN EXECUTE VOIR
    L'ordinateur ne fait pas ce qu'on veut qu'il fasse mais il fait ce qu'on lui demande de faire .

  10. #30
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    probleme du reload la console me dit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: resultat.dataBox is undefined[En savoir plus]  box.js:97:15

    voila le js donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
     $(function(){
    	var member = $(".member"),popDisplay = {},position = 0;
    	member.on("click",function(e){
    		if (!e.preventDefault()) {
    			e.target;
    		}
    		var id_user = $(this).attr("for"),user_name = $(this).text();
    		if (typeof popDisplay[""+id_user] == "undefined") {
    			popDisplay[""+id_user] = position;
    			position++;
    			add_new_pop(user_name,id_user);
    		}
    	})	
    })
    function add_new_pop(title_,id_user_rece){
    	var div = $("<div>"),receptor_pop_element = div.clone().attr("class","pop_bloc"),rightPop,all_pop_display = $("#conteneur_pop .pop_bloc").length;
    	rightPop = (250+20)*all_pop_display;
     
    	var formBalise,title_pop,displayer_pop_box,zone_text;
    	formBalise = $("<form>");
     
    	title_pop = div.clone().text(title_);
    	displayer_pop_box = div.clone().attr("class","displayer_all_sms");
    	zone_text = $("<textarea>").attr("placeholder","Votre message");
     
    	formBalise.append(title_pop).append(displayer_pop_box).append(zone_text);
     
    	if (rightPop == 0) {rightPop = 10;}
    	receptor_pop_element.css({right : rightPop+"px",background : "#fff"}).append(formBalise);
     
    	$("#conteneur_pop").append(receptor_pop_element);
    	send_box(zone_text,displayer_pop_box,id_user_rece);
    	load_box(id_user_rece,displayer_pop_box);
    }
    function send_box(zone_sms,displayer,id){
    	zone_sms.on("keydown",function(e){
    		if (e.keyCode == 13) {
    			if (!e.preventDefault()) {
    				e.target;
    			}
    			// tu mets ton code a executé a l'appui de l'ENTRER ici. pour moi j'envoi le message
     
    			// en premier lieu je recupère dans une variable text_sms le contenu de mon textarea et je vérifie si c'est vide ou pas
     
    			var text_sms = $(this).val(),all_key = text_sms.split(" "),isEmpty = true;
    			$(this).val("");
    			for (var i = all_key.length - 1; i >= 0; i--) {
    				if (all_key[i] != "") {
    					isEmpty = false;
    				}
    			}
     
    			if (!isEmpty) {
    				/* 
    					- si ce n'est pas vide on continue
    					- on envoi le texte a un notre fichier php pour etre sauvegarder dans une data base
    				*/
    				$.ajax({
    					url : "serveur.php",
    					type: "POST",
    					data: {text_box : text_sms,user_recev : id},
    					dataType: "JSON",
    					success: function(resultat){
    						if (resultat.end) {
    							// si le message est envoi au fichier php on ajoute le texte a notre displayer_all_box pour l'afficher a l'écran
    							displayer.append("<label for='"+resultat.box_send_id+"'><span class='every_box connect_user'>"+text_sms+"</span><span class='stop block'></span></label>");
    							displayer.scrollTop(displayer.height());
    							if (displayer.find("label").length == 1 ) {
    								setInterval(function(){
    									auto_control_box(id,displayer);	
    								},1000);
    							}
    						}
    						else{
    							alert("message non envoyé");
    						}
    					} 
    				});
    			}
    		}
    	})
    }
    function auto_control_box(id,currentPopDisplay){
    	var all_label = currentPopDisplay.find("label"),t = all_label.length,last_box_of_this_popDisplay = 0;
    	if (t != 0) {
    		t--;
    		last_box_of_this_popDisplay = all_label.eq(t).attr("for");
    	}
    	$.ajax({
    		url : "serveur.php",
    		type: "POST",
    		data: {get_all_box : id,last_box_display : last_box_of_this_popDisplay},
    		dataType: "JSON",
    		success: function(resultat){
    			if (resultat.end) {
    				if (resultat.new_box_number != 0) {
    					for (var i = resultat["dataBox"].length - 1; i >= 0; i--) {
    						var current = resultat["dataBox"][i];
    						currentPopDisplay.append("<label for='"+current.box_id+"'><span class='every_box no_connect'>"+current.box+"</span><span class='stop block'></span></label>");
    					}
    					currentPopDisplay.scrollTop(currentPopDisplay.height());	
    				}
    			}
    		} 
    	});
    }
    function load_box(id,currentPopDisplay){
    	$.ajax({
    		url : "serveur.php",
    		type: "POST",
    		data: {load_box : id},
    		dataType: "JSON",
    		success: function(resultat){
    			if (resultat.end) {
    				for (var i = resultat["dataBox"].length - 1; i >= 0; i--) {
    					var current = resultat["dataBox"][i];
    					var dispo = "connect_user";
    					if (current.type == 2) {dispo  = "no_connect";}
    					currentPopDisplay.append("<label for='"+current.box_id+"'><span class='every_box "+dispo+"'>"+current.box+"</span><span class='stop block'></span></label>");
    				}
    				currentPopDisplay.scrollTop(currentPopDisplay.height());
    				setInterval(function(){
    					auto_control_box(id,currentPopDisplay);	
    				},1000);
    			}
    		} 
    	});
    }

    ça correspond a ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (var i = resultat["dataBox"].length - 1; i >= 0; i--) {

  11. #31
    Membre régulier
    Homme Profil pro
    developpeur web et android
    Inscrit en
    Octobre 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : developpeur web et android
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2014
    Messages : 64
    Points : 104
    Points
    104
    Par défaut
    ce problème n'est pas du côte javascript mais du php. là où j'ai utilisé ( $answers["dataBox"]) dans serveur.php tu as changer??


    FIN EXECUTE VOIR
    L'ordinateur ne fait pas ce qu'on veut qu'il fasse mais il fait ce qu'on lui demande de faire .

  12. #32
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    j'ai fait tous ce que tu m'as dis sauf qu'a $user_connect j'ai mis $_SESSION["id_user"] au lieu de $_SESSION["user"]
    ça une importante ? aprés j'ai tous modifier ce que tu m'as dis

  13. #33
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    437
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 437
    Points : 184
    Points
    184
    Par défaut
    Merci a paoli pour son aide, le sujet est résolu

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Validation formulaire sans rechargement de la page
    Par ParisElliot dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/03/2017, 17h43
  2. Valider un formulaire sans afficher la page action
    Par mmvik dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/09/2015, 08h34
  3. Valider formulaire sans recharger la page
    Par Timoune007 dans le forum AJAX
    Réponses: 0
    Dernier message: 14/07/2015, 02h12
  4. Valider un formulaire sans recharger la page
    Par .Spirit dans le forum jQuery
    Réponses: 17
    Dernier message: 21/11/2010, 02h56
  5. envoyer un formulaire sans charger toute la page
    Par kiranis dans le forum Langage
    Réponses: 1
    Dernier message: 10/06/2008, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo