Bonjour,
Je re-modifie une n-ième fois le post car je viens de comprendre ce qui n'allait pas. J'essais d'envoyer le contenu d'un textarea à php en utilisant javascript mais il ne prend pas en compte les retours à la ligne..
Comment faire?
Version imprimable
Bonjour,
Je re-modifie une n-ième fois le post car je viens de comprendre ce qui n'allait pas. J'essais d'envoyer le contenu d'un textarea à php en utilisant javascript mais il ne prend pas en compte les retours à la ligne..
Comment faire?
Si il le prend
mais sans code ....
Bonjour,
- nl2br() ?
Mais bon... Sans code... :aie:
Bonjour,
je vous remercie à la base j'avais posté tout mon code mais bon finalement ca m'a semblé inutile
en fait j'ai finalement réussi mais j'ai perdu les sources, dès que je les retrouve je poste le code qui ne fonctionnait pas et celui qui fonctionne pour essayer de comprendre la différence.
En vous remerciant.
Voici les sources promises :
avec le fichier ajax.php ca ne fonctionne pas, quand javascript envois la variable à php il n'y a pas de retour à la ligne,
mais avec var.php les retours à la ligne sont bien sauvegardés... Comment cela se fait-il?
Pièce jointe 219081
Pièce jointe 219080
PS: ne faites pas attention à inner.HTML c'est juste pour du testing
Merci de copier-coller les codes dans le contenu du message.
+ utiliser les balises [ CODE ] (icone "#" du menu)
code non fonctionnel
Code fonctionnel :Code:
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 <!DOCTYPE html/> <html> <head> <title>Editeur de texte en ligne</title> <script> function writeToDB(champ, str) { var champ; var str; var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = function() { if (xhttp.readyState == 4 && xhttp.status == 200) { //document.getElementById("demo").innerHTML = xhttp.responseText; } }; if(champ == 'titre'){ xhttp.open("GET", "test.php?titre=" + str, true); xhttp.send(); }else { xhttp.open("GET", "test.php?corps=" + str, true); xhttp.send(); } } </script> </head> <body> <input type="text" onkeyup="writeToDB('titre', this.value)" id="titre"> </input> </br> <textarea onkeyup="writeToDB('corps', this.value)" id="corps" style="width: 100%; height: 900px;"> </textarea> <script> // Fonctions de rafraichissement de la page function get_title(){ setInterval( function(){ var yhttp = new XMLHttpRequest(); yhttp.onreadystatechange = function() { if (yhttp.readyState == 4 && yhttp.status == 200) { document.getElementById("titre").value = yhttp.responseText; } }; yhttp.open("GET", "testlecture.php", true); yhttp.send(); }, 3000); } //////////////////////////////////////////////////// function get_corps(){ setInterval( function(){ var zhttp = new XMLHttpRequest(); zhttp.onreadystatechange = function() { if (zhttp.readyState == 4 && zhttp.status == 200) { document.getElementById("corps").value = zhttp.responseText; } }; zhttp.open("GET", "testcorps.php", true); zhttp.send(); }, 3000); }////////////////////////////////////////////////////////////// get_title(); get_corps(); </script> </body> </html>
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <!DOCTYPE html/> <html> <head> <title>test</title> <script>var test = "a bientot" function envoi(){ var str = document.getElementById("monchamp").value; var xhttp = new XMLHttpRequest(); xhttp.open("POST", "vartraitement.php", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("text="+str); } </script> </head> <body> <form action="vartraitement.php" method="GET"> <textarea id="monchamp" name="text"></textarea> <input type="button" onclick="envoi()"></input> </form> </body> </html>
1/ C'est ce que j'avais suggéré : nl2br().
soit tu ne lis pas les réponses, sois tu ne suis pas les liens qu'on te donne...
2/ il faut encoder les URL :
Code:xhttp.open("GET", "testget.php?corps=" + encodeURI(str), true);
Code:
1
2 <?php echo ( (isset($_GET['titre'] )) ? urldecode($_GET['titre']) : urldecode(nl2br($_GET['corps'])) );
je te remercie mais je ne l'ai justement pas utilisé, ce qui est d'autant plus étrange, je vais ressortir les sources complète et les poster dès que je peux..
Donc voilà la méthode 1 dont je me plain :
la page html avec le code AJAX
La page php qui va insérer les donnéesCode:
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 <!DOCTYPE html/> <html> <head> <title>Editeur de texte en ligne</title> <script> function writeToDB(champ, str) { var xhttp = new XMLHttpRequest(); if(champ == 'titre'){ xhttp.open("GET", "test.php?titre=" + str, true); xhttp.send(); }else { xhttp.open("GET", "test.php?corps=" + str, true); xhttp.send(); } } </script> </head> <body> <form action="javascript:void(0);" method="get"> <input type="text" onkeyup="writeToDB('titre', this.value)" id="titre" /></br> <textarea onkeyup="writeToDB('corps', this.value)" id="corps" style="width: 100%; height: 400px;"></textarea> </form> <script> function get_title(){ setInterval( function(){ var yhttp = new XMLHttpRequest(); yhttp.onreadystatechange = function() { if (yhttp.readyState == 4 && yhttp.status == 200) { document.getElementById("titre").value = yhttp.responseText; } }; yhttp.open("GET", "requesttitle.php", true); yhttp.send(); }, 3000); } function get_corps(){ setInterval( function(){ var zhttp = new XMLHttpRequest(); zhttp.onreadystatechange = function() { if (zhttp.readyState == 4 && zhttp.status == 200) { document.getElementById("corps").value = zhttp.responseText; } }; zhttp.open("GET", "requestarticle.php", true); zhttp.send(); }, 3000); } get_title(); get_corps(); </script> </body> </html>
Code:
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 <?php if(isset($_GET['titre'])){ $titre = $_GET['titre']; $basededonnee = 'beta'; $host = '127.0.0.1'; $user = '***'; $password = '***'; try { $conn = new PDO("mysql:host=$host;dbname=$basededonnee", $user, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "UPDATE text SET titre=:nvtitre WHERE id=1"; // Prepare statement $stmt = $conn->prepare($sql); // execute the query $stmt->execute(array( 'nvtitre' => $titre ) ); // echo a message to say the UPDATE succeeded echo $stmt->rowCount() . " records UPDATED successfully"; } catch(PDOException $e){ echo $sql . "<br>" . $e->getMessage(); } $conn = null; } if(isset($_GET['corps'])){ $corps= $_GET['corps']; $basededonnee = 'beta'; $host = '127.0.0.1'; $user = '***'; $password = '***'; try { $conn = new PDO("mysql:host=$host;dbname=$basededonnee", $user, $password); // set the PDO error mode to exception $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql = "UPDATE text SET corps=:nvcorps WHERE id=1"; // Prepare statement $stmt = $conn->prepare($sql); // execute the query $stmt->execute(array( 'nvcorps' => $corps ) ); // echo a message to say the UPDATE succeeded echo $stmt->rowCount() . " records UPDATED successfully"; } catch(PDOException $e){ echo $sql . "<br>" . $e->getMessage(); } $conn = null; }
Et la méthode 2 qui ne devrait normalement pas fonctionner mais qui fonctionne.
La page qui envois les données au php
la page php qui est appellée appelle une bibliothèque de fonctionsCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <!DOCTYPE html/> <html> <head> <title>test</title> <script> function envoi(){ var str = document.getElementById("monchamp").value; var xhttp = new XMLHttpRequest(); xhttp.open("POST", "vartraitement.php", true); xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhttp.send("text="+str); } </script> </head> <body> <form action="vartraitement.php" method="GET"> <textarea id="monchamp" name="text"></textarea> <input type="button" onclick="envoi()"></input> </form> </body> </html>
et voici la bibliothèque (librairie chez les franglish) appelléeCode:
1
2
3
4 <?php require'bibli.php'; $text = $_POST['text']; set_text('titre', $text);
Code:
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 <?php function connect($reqsql, $nv_titre, $nv_text){ $basededonnee = 'beta'; //NOM DE LA BASE, (GARDER LES "") $host = '127.0.0.1'; //LOCALHOST OU IP DU SERVEUR DE BDD $user = '***'; // UTILISATEUR SQL $password = '***'; // MOT DE PASSE ET PUIS C'EST TOUT $dsn = 'mysql:dbname='.$basededonnee.';host='.$host.''; try { $requete = new PDO($dsn, $user, $password); $requete->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo 'Connexion échouée : ' . $e->getMessage(); } if($reqsql == 'SELECT * FROM text WHERE id=1'){ $reponse = $requete->query($reqsql); return $reponse; $reponse->closeCursor(); } elseif($reqsql == 'UPDATE text SET titre = :nvtitre, corps = :nvtext WHERE id = 1'){ $reqpreparee = $requete->prepare($reqsql); $reqpreparee->execute(array( 'nvtitre' => $nv_titre, 'nvtext' => $nv_text )); $reqpreparee->closeCursor(); } } function get_text(){ $sql= 'SELECT * FROM text WHERE id=1'; $result = connect($sql,NULL, NULL); $var_transition = $result->fetch(); //$titre = $var_transition['titre']; //$text = $var_transition['text']; return $var_transition; $result->closeCursor(); } function set_text($titre, $text){ $sql= 'UPDATE text SET titre = :nvtitre, corps = :nvtext WHERE id = 1'; connect($sql, $titre, $text); }
cette ligne je l'ai copié collée j'avais pas fait attention que j'encodais l'url:
par contre je ne décode l'URL nul part en php... c'est normal que ca ne me pose pas de problème?Code:xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
php le fait pour toi
tu récupère les données dans _POST ou _GET