[RESOLU] Textarea:dernier saut de ligne et bdd mysql

Avatar du membre
Eléphant du PHP | 148 Messages

23 août 2019, 04:02

Couiiiin :D

Ca bosse un peu en été chez le canard, mais là il cale (encore) sur un point :(

Désolé pour la longueur, j'essaye de détailler au mieux le fonctionnement afin d'apporter le max de précisions :)

Voilà, en gros, j'ai fias une page pour mémoriser des commentaires sur des musiques ayant un problème audio, dans la partie admin du site de la radio, et ce , afin que les musiques puissent être plus tard , supprimées du logiciel de programmation musicale.

Lorsque je clique sur une musique, un popup (affichage d'une div) affiche un mini formulaire avec l'artiste et le titre (ca c'est juste textuel), un champ Textarea pour mettre son commentaire, et un bouton pour valider.
J’ai choisi un textarea car je veux pouvoir mettre des sauts de lignes dans le message.
Le bouton de validation n’est pas un submit d'un forum mais ca lance une fonction qui va récupérer la valeur du textarea et via ajax, l'envoyer en POST vers un fichier php qui va exécuter la requête de manière transparente.
Le commentaire est enregistré dans la colonne "comment" de la table dédiée à cette fonction, puis le popup disparaît.

Si on clique à nouveau sur la musique défectueuse, le pop réapparaît, en affichant toujours l'artiste et le titre, mais le(s) commentaire(s) déjà enregistré(s), là aussi de manière textuelle, puis le textarea pour saisir le nouveau commentaire.

A la validation, la page php récupère le contenu de la colonne "comment" (ci-dessous $prevcomment) de la table, puis ajoute celui du textarea ($message).

Code : Tout sélectionner

if ( $prevcomment != '' ) { $message = $prevcomment . "<br>" . $login2 . " : " . $message; } else { $message = $login2 . " : " . $message; } $message = mysqli_escape_string($dbwrite, $message);
$login2 est le nom de celui qui poste (on est 2).
La suite, le script fait un UPDATE du champs "comment" de la bdd en mettant ce nouveau message.
Tout marche bien, mais je cale sur un point esthétique :

Si on met un saut de ligne à la fin du commentaire (par mauvaise habitude de valider quelque chose par la touche Entrée), le commentaire qui sera posté à la suite, sera espacé d'une ligne vide, par exemple, Couin a fait Entrée avant de valider :
Couin : Voici le premier commentaire

Toto : Et moi je réponds


Alors que je voudrais qu'il n'y ait pas la ligne vide entre le message de Couin et celui de Toto :
Couin : Voici le premier commentaire
Toto : Et moi je réponds


Je souhaiterais faire un truc du genre :

Code : Tout sélectionner

if ( $prevcomment != '' ) { $message = $prevcomment . "<br>" . $login2 . " : " . $message; } else { $message = $login2 . " : " . $message; } if ( substr($message, -2) == '\n' ) { $message = substr($message, 0, -2); } //Supprimer dernier saut de ligne si il y en a un $message = mysqli_escape_string($dbwrite, $message);
Bien évidement, ça ne marche pas car les sauts de ligne ne sont pas des \n (d’ailleurs, pas de \n dans la bdd, mais bien des sauts de ligne.
Je ne sais donc pas sous quel formes ils sont représentés. J'ai tenté de faire un alert(message.value) pour voir si ça afficherait le code du retour à la ligne, mais non plus, ça fait un retour à la ligne dans la fenêtre d'alerte du navigateur.

Je ne sais pas où chercher du coup :(

Si quelqu'un à une idée, je suis preneur :)

Merci de m'avoir lu ;)

Couin
Un Couin vaut mieux que Deux tu couineras :D

Mammouth du PHP | 1168 Messages

23 août 2019, 14:12


Avatar du membre
Eléphant du PHP | 148 Messages

24 août 2019, 06:15

lol Comment se faire coucher en 1 ligne :P

Merci Or 1 , ca marche impec .

Voici la partie modifiée suite à ta préco :

Code : Tout sélectionner

if ( $prevcomment != '' ) { $message = $prevcomment . "<br>" . $login2 . " : " . $message; } else { $message = $login2 . " : " . $message; } $message = trim($message, "\n"); $message = mysqli_escape_string($dbwrite, $message);
Bon OuiK ! :)
Un Couin vaut mieux que Deux tu couineras :D