Page 1 sur 1

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

Posté : 22 janv. 2007, 01:49
par zaknaou
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

Posté : 22 janv. 2007, 02:26
par Ultim4T0m
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.

Posté : 22 janv. 2007, 02:30
par Ajoloca
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.

Posté : 22 janv. 2007, 02:42
par Ajoloca
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>

Posté : 22 janv. 2007, 10:57
par Ryle
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 :)

Posté : 22 janv. 2007, 15:20
par Zaknaou.
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...

Posté : 22 janv. 2007, 16:07
par Ryle
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... ;)