Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/06/2007, 11h35   #1
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 72
Points : 35
Points : 35
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
Sakalam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 14h01   #2
Membre actif
 
Avatar de bigltnt
 
Inscription : mars 2007
Messages : 221
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 221
Points : 155
Points : 155
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 !
bigltnt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 15h23   #3
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
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 :
<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)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 16h43   #4
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 72
Points : 35
Points : 35
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 :
<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.
Sakalam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2007, 17h12   #5
Membre actif
 
Avatar de bigltnt
 
Inscription : mars 2007
Messages : 221
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2007
Messages : 221
Points : 155
Points : 155
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 :
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 :
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 ....

++
bigltnt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2007, 15h13   #6
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 72
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 72
Points : 35
Points : 35
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 :
1
2
3
4
5
6
<?php 
session_start();
?>
<html>
<head>
etc.
Sakalam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h04.


 
 
 
 
Partenaires

Hébergement Web