La base de donnée accepte les [] ? Ou faut-il remplacer <

Eléphant du PHP | 88 Messages

22 janv. 2007, 01:49

Bonjour, je vais être très simple sur ce coup-là :
J'ai une page de BBCODE qui transmet par une variable la valeur du textarea à une seconde page qui elle enregistre dans la base de donnée...
Jusque-là c'est simple...
Mais les codes généré par le BBCODE sont constitué de [] ce que la base de donnée n'accepte pas sauf si le champ longtext est configurer ce que je ne sais pas faire...
Ou je peux aussi traduire la valeur de la variable, genre :
- Remplacer dans la valeur de la variable tout les [] par <>
- Ajouter à la base de donnée
- Extraire
- Remplacer dans la valeur de la variable tout les <> par []
Mais ça aussi je ne sais pas le faire
1) Soit j'utilise une bonne configuration
2) Soit je fait la traduction

Merci
Cordialement zaknaou

Eléphant du PHP | 445 Messages

22 janv. 2007, 02:26

Bonsoir,

Pour modifier le type de ton champ, utilises PhpMyAdmin (si tu ne sais pas encore t'en servir, ça devient vraiment grave ^^).

Bien sûr, si tu tentes d'enregistrer tes données dans un INT, ça ne risque pas de fonctionner.
LLDC
Ulti

ViPHP
ViPHP | 1961 Messages

22 janv. 2007, 02:30

Bonsoir,

Je ne comprends pas ton souci, si je fais ça

Code : Tout sélectionner

mysql> CREATE TABLE ess ( champ text ); Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO ess VALUES ('[php]ici mon code[/php]'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM ess; +-------------------------+ | champ | +-------------------------+ | [php]ici mon code[/php] | +-------------------------+ 1 row in set (0.00 sec) mysql>
Je ne trouve aucun PB, ou alors je n'ai pas compris ta question.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

ViPHP
ViPHP | 1961 Messages

22 janv. 2007, 02:42

Re,

Après avoir lu le post de Ultim4T0m je comprends mieux ton souci.

Si comme moi tu n'aimes pas phpMyAdmin et que tu préfères la ligne de commande (client MySQL)

Tu dois utiliser la commande ALTER TABLE avec l'option MODIFY
Un exemple.
Pour transformer 'champ' de l'exemple précédent qui était en TEXT en LONGTEXT

Code : Tout sélectionner

mysql> ALTER TABLE ess MODIFY champ LONGTEXT; Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 janv. 2007, 10:57

A mon avis le problème vient d'ailleurs... (- musique d'xfiles -)
Mais les codes généré par le BBCODE sont constitué de [] ce que la base de donnée n'accepte pas sauf si le champ longtext est configurer
Les crochets sont des caractères comme les autres et peuvent être enregistrés sans problème que le champ soit de type char, varchar, text, mediumtext, etc.
Je pense donc que le problème vient du type de champ (qui n'est peut être pas un champ texte), de la taille des données que tu veux insérer (le champ est peut être trop petit) ou du contenu de celles-ci (un autre champ qui pose problème, une apostrophe non protégée), plutôt que d'un soucis de crochets :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Zaknaou.
Invité n'ayant pas de compte PHPfrance

22 janv. 2007, 15:20

Non, non et non ce n'est pas un INT, ni transfomer text en logtext mais Ryle à tout àfait compris mon probléme !!

Ha ! non l'erreur est corrigé...
Je vient de mettre not null à la place de null
C'est bon merci...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

22 janv. 2007, 16:07

Modération :
zaknaou, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.



Bon ceci dit, je comprend pas très bien comment le fait de rendre obligatoire un champ en base a pu résoudre le problème :-k
Je persiste donc à croire qu'il y avait autre chose.. tant pis, on va ranger ça au 3ème sous sol du penthagone, entre la porte des étoiles et l'adn d'elvis... ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...