IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[SQL] Chaine tronquée


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut [SQL] Chaine tronquée
    Bonjour à tous,

    J'ai une variable chaine de caractère dans une fenêtre mère qui contient une valeur adéquate (récupérée par une balise INPUT text) mais lorsque j'appelle une fenêtre fille par POST, cette variable est tronquée, à savoir que je ne récupère que les 85 premiers caractères, et non pas toute la chaine, ce qui me vexe profondément comme vous imaginez.

    Je pose cette question ici car la chaine en question est une requête SQL et peut-être que certains d'entre vous ont connu ce pb.

    Merci de vos lumières

    Sakalam

  2. #2
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Hum ... faudrais préciser c'est pas très clair.

    En gros t'as un script où tu récupères le resultat d'une requete et tu la places dans l'attribut "value" d'un "<input type="text">.

    Quand tu envois le formulaire par POST, tu récupères moins de caractères que tu en as fournis dans le champs évalue" c'est ca ?

    Si c'est pas ca donne des détails et des bouts de codes c'est mieux !

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par bigltnt
    En gros t'as un script où tu récupères le resultat d'une requete et tu la places dans l'attribut "value" d'un "<input type="text">.

    Quand tu envois le formulaire par POST, tu récupères moins de caractères que tu en as fournis dans le champs évalue" c'est ca ?
    Si c'est bien le problème, tu peux peut-être utiliser l'attribut maxlength de l'input text.
    En supposant que le champ que tu récupères un varchar de mettons 200, essaye
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" maxlength="200" value=...>
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Merci de vos réponses.
    En fait, j'ai avancé dans ma difficulté. Voilà le vrai problème (en espérant que je serai clair) :

    -j'ai bien une balise de texte qui me permet de saisir une requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <TEXTAREA  name="requete" rows="3" cols="100">Votre requete</TEXTAREA>
    -cette requete est transformée selon certains détails annexes. La vraie requête se retrouve dans une variable $req

    -c'est la valeur de $req que j'essaie de transmettre à une autre page php fille, et comme je ne sais pas le faire (est-il possible de transmettre entre pages des données autres que celles des formulaires?), je passais par un autre formulaire

    -comme la requête contenait des guillemets, elle se coupait dans le second formulaire et se transmettait tronquée dans la page fille

    Ouf !
    Enfin, pour résumer je suis dans la m***e, aidez-moi, je crise et pourtant je suis gentil.


    S.

  5. #5
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    OK.

    Et bien en fait, il y a pour moi 3 manières de transmettre ta requête:
    - Le formulaire, ou l'utilisation de $_POST, mais ca t'obliges à cliquer sur un bouton et a refaire un formulaire
    - Le passage par l'URL, ou la méthode $_GET. Mais cette derniere pour ton cas, je ne la trouve pas très propre ...
    - Tu peux aussi faire le passage par sessions, ou $_SESSION. Mais le navigateur doit accepter les cookie (y'a d'autres moyens que les cookies avec $_SESSION mais moi je connais pas trop).

    Pour ton cas, le mieux serait si tu peux te permettre de cliquer sur un bouton, c'est de faire ca dans ta fenêtre fille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     //Script principal
    <?php
    	$requete = $_POST['requete'];
     
    	//ici tu fais tes fameuses transformations pour avoir $req
    	//Et tu places le code suivant là ou tu veux ton bouton
    	echo '<form action="pagefille" method="post">
    			<input type="hidden" name="req" value="'.$req.'"/>
    			<input type="submit">
    		</form>';
    ?>
    Ensuite, dans ton script "pagefille", il faut que tu protèges ta requête: moi personnellement je fais comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Script "fille"
    <?php
    	if(!empty($_POST))
    	{
    		$sql = $_POST['req'];
    		mysql_query(mysql_real_escape_string($req)) OR die("Erreur");
    	}
    ?>
    Voila j'espère que ce que je te dis est correct. J'ai pas dit que c'était la bonne solution mais c'est comme ca que je fais personnellement (meme si je ne transmet jamais rien d'autre que des id et autres champs et construit ma requete juste avant de l'envoyer. TOn cas est un peu différent).

    Si qqun peut confirmer ce que j'ai mis ....

    ++

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Salut et merci pour tes suggestions, BigInt, ca m'a permis de clarifier la chose.

    L'idée du formulaire caché était bonne mais je retombais sur des pbs de chaines de caractères mal transmises (j'ai des chaines contenant des guillemets, genre galère). Du coup, j'ai potassé les variables de session, c'est très simple et ça marche, même avec mes chaînes toutes tordues.

    Conclusion, allez-y, les variables de sessions c'est fastoche et ça peut aider.

    Sakalam


    Ps
    Ne pas oublier que l'ouverture de session doit apparaître avant tout caractère transmis au navigateur, même le plus petit espace !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php 
    session_start();
    ?>
    <html>
    <head>
    etc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL SERVER 2K5] Chaine tronquée
    Par tazamorte dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 20/08/2009, 15h47
  2. [SQL SERVER 2005] Problème de chaine tronquée
    Par meda dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 06/05/2007, 14h55
  3. [C#] Listview item avec chaine tronquée
    Par heavydrinker dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/10/2006, 15h46
  4. [PL/SQL] Chaine de caractères avec une quote
    Par Titouf dans le forum Oracle
    Réponses: 2
    Dernier message: 15/05/2006, 14h36
  5. [MySQL] Chaine tronquée apres htmlentities.
    Par castaka dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/05/2005, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo