Requête SELECT: résultats tronqués... [Résolu]

Signaler
Messages postés
8
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
7 juin 2006
-
Messages postés
8
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
7 juin 2006
-
Bonjour,

J'ai un soucis d'affiche avec des formulaires html/php.
Mais je pense que le problème provient de la requete SQL.
Je m'explique :

Via un formulaire et une requete INSERT INTO, j'insère dans une base de données SQL Server des informations provenant d'un <textarea>.
Ces informations sont longues ( plusieurs milliers de caractères ).
Si je vérifie via Enterprise Manager, les informations sont complètes dans la base de données.
MAIS lorsque je récupère ces informations pour les afficher soit directement, soit comme valeur par défaut dans un <textarea>, elles sont tronquées vers le 260ème caractère.

Est-ce normal? Et surtout, comment faire en sorte que tout soit affiché?

Je pense que le problème provient de la requête car la troncature s'effectue à ce moment. Voici le code php contenant la requête et l'affichage:
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

$id_resultat = mssql_query("SELECT * FROM Stage WHERE sta.Num_Sta=".$_GET['id'], $id_connexion);
$stag = mssql_fetch_array($id_resultat);
echo 'Resume français : '.$stag["ResumeFr_Sta"].'';

Merci!
<!-- END TEMPLATE: bbcode_code -->

<!-- / message -->

7 réponses

Messages postés
8
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
7 juin 2006

Ca y est!!!! Ne cherchez plus!!! (je pense pas que quelqu'un ici se soit autant angoissé que moi là dessus mais bon...)

En fait, c'éatit tout con, j'ai changé le type de donné varchar par text et maintenant ca passe.

Pu**in depuis hier 8h que je me tue là dessus!!!

Et c'est 45 min avant de rendre le projet au boss que je trouve la soluce

Et merci Christian de ton aide!
Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
7
Il y a un paramètre que le fournisseur d'accès SQL change en général, je ne sais pas si c'est le cas en PHP, c'est SET TEXTSIZE.

C'est le nombre maximal de caractère renvoyé pour un champ texte :

http://msdn2.microsoft.com/fr-fr/library/ms371737.aspx

Mais, il y peut être une explication PHP de la choses.

-----------------
Christian Robert
Winwise
Messages postés
114
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
17 octobre 2006

crilun

regarde aussi pour tes ' ca peut venir de la aussi si tu en as dans ton champ texte,

 au moment de l'insertion dans SQL Server il faut les doubler ''

au moment de la recuperation pour mettre dans une zone de texte tu
remplace ' par /' ca lui specifira que c'est pas le meme ' qu'il peut
rencontrer dans la partie mise en forme.
Messages postés
8
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
7 juin 2006

Bonjour et merci de vos réponses.

skweeky, je soupconne en effet une mauvaise configuration du serveur... mais comme je n'y ai pas accès, je travaille sur une bdd à distance, il est difficile pour moi de vérifier ces paramètres. j'ai contacté l'admin, j'attends sa réponse...

crilun, j'ai aussi pensé à ca mais non, les caractères spéciaux passent bien. la coupure se fait en plein milieu d'un mot (attention => attent).

de plus, j'ai testé pour différents textes et ca coupe toujours au 256ème (?) caractère.
Messages postés
259
Date d'inscription
mercredi 3 mai 2006
Statut
Modérateur
Dernière intervention
11 janvier 2010
7
Ajoute le SET TEXTSIZE à ta requête alors, tu peux modifier ce paramètre seul.
Par exemple :

SET TEXTSIZE 5000
GO

SELECT ...

On peut passer plusieurs clauses dans la chaine de requête sans pb.

-----------------
Christian Robert
Winwise
Messages postés
8
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
7 juin 2006

J'ai ajouter SET TEXTSIZE devant ma requête (avec le GO, ca donnait un message d'erreur).
Mais le problème persiste.


Je me demande si le problème ne viendrait pas d'ailleur:


soit le renvoie des données par SQL Server (mais le SET TEXTSIZE ne change rien...)
soit une des fonctions phph (mssql_query ou mssql_fetch_array)
???
Messages postés
8
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
7 juin 2006

J'ai bien rajouté SET TEXTSIZE 5000 et non juste SET TEXTSIZE.
Mon message était ambigü...