Page 1 sur 1

problème d'affichage des espaces et '.....

Posté : 07 juin 2005, 12:32
par renatane
bonjour,

Dans ma table, j'ai un champs varchar.

Quand j'enregistre un enregistrement, quand dans ce champ j'entre par exemple "la vie", et bien a l'affichage, je n'ai rien. Par contre quand je rente "la_vie", là ca va.

Donc j'ai changer le type de mon champs et je l'ai passé en text. Mais j'ai toujours le même problème.

qqun a une solution?

aussi, quand dans un champs text j'entre un truc du genre "l'affaire" (avec une apostrophe) , et bien, ca senregistre bien dans la base, quend je l'afiche, y'a pas de problème, mais quand je transmet cette valeur a uen variable et que j'affiche cette variable, ben tout ce qui se trouve aprés l'apostrophe en question n'est pas dans la variable.
transmition:
$var2 = $a_result["titre"];
cete variable contient "l'affaire" (normalement)
affichage:
l
comment faire pour y remedier?

Posté : 07 juin 2005, 12:46
par sadeq
Ce n'est pas un problème de base de données ni de type varchar ou texte
car la seule différence entre texte et varchar est que ce dernier n'accueille que du texte alphanumérique <=255 caractères alots que texte est prévu pour un contenu binaire "illimité" que soit du texte étendu ou une image vetorielle par exemple.

Le fait que ton texte "la vie" ne s'affiche pas est du alors à HTML et surement à une clause VALUE dont la valeurs n'est pas encapsulé entre des guillemets ou des quotes.

si c'est bien ça, la correction est :
<? $texte ="la vie";
echo "<input type=text name=zone value='$texte'>";
?>
Concernat le texte contenant des guillemets ou des quotes il faut utiliser la fonction addslashes pour les neutraliser
exemple :
$texte = addslashes ("c'est la vie");

Posté : 07 juin 2005, 12:58
par renatane
pour le texte contenant des '
Ben en fait, ma "value " est entre ' ':
<INPUT type=text name='titre' SIZE='60' MAXLENGTH='200' value='<?= $var2 ?>'>
j'ai mis des " " et là ca marche nikel!
Merci.


Pour les espaces:
voici comment je récupère les valuer de la base et je les utilise:
$req_brouillon=mysql_query("select * from phpgw_workf_versions ORDER BY id_note, id_version");
while ($a_result = mysql_fetch_array($req_brouillon, MYSQL_ASSOC))
{/* là je fait mes bricoles*/}
//puis là je met ma variable dans un tableau
echo "<td><a href='rediger.php?id=".$a_result['id_note']."&ide=".$a_result['id_version']."'>".$a_result['titre']."</a></td>";
Mais dans on tableau, y'a rien. ptt y'a des " "!
Je comprend pas

Posté : 07 juin 2005, 13:08
par sadeq
il n'ya pas d'erreur dans ton lien hyertexte, en principe si titre contient quelque chose elle doit s'afficher.
A mon avis il faut revoir tes données dans la table phpgw_workf_versions directement sur l'adminstrateur de MYSQL et Exécute aussi SQL directement pour s'assurer que les données retournées sont valides.
ça peut être un jeu d'essai erroné à cause des exécutions erronées passées.

Posté : 07 juin 2005, 14:52
par renatane
alors,

j'ai regardé et j'ai fait des essay, mais ca marche toujours pas.
Où j'en suis:

JE rentre des données dans une table phpgw_workf_services.
Ces données je les affiche dans un select d'un formulaire.
Ce fomulaire est enregistré dans une table phpgw_workf_versions.
la table version est affichée dans un tableau en liens.
Quand je clique sur un lien du tableau, le formulaire s'affiche remplis avec les champs du tableau.

là, quand je rentre le nom du service, dans la table phpgw_workf_services, je peux mettre des epaces.
dans le select de mon formulaire, ces noms avec espaces s'affichent.
Mais dans la base de donnée, quand j'enregistre mon formulaire, je n'ai rien dans ce champ.

En fait, dans le formulaire, je choisit le service (nom_service de la table phpgw_workf_services)
puis pour enregistrer mon form dans ma table phpgw_workf_versions, j'effectue une reuquete
$s = "SELECT DISTINCT  id_service FROM phpgw_workf_services WHERE nom_service = '".$service."'";
// Envoi de la requête à MySQL
$results = mysql_query($s);
$ser=mysql_fetch_array($results, MYSQL_ASSOC);
$idservice=$ser['id_service'];
et c'est cet id_service que j'enregistre dans phpgw_workf_versions.
Et dans ma table phpgw_workf_versions, les id_service dont les noms ont des espaces ne sont pas rentrés.

c'est pour ca que je ne peu pas les réaffichés.

Mais je ne sais pas comment résoudre mon problème

Posté : 07 juin 2005, 15:01
par sadeq
moi non plus, va falloir balancer tout ton code php/html incriminé et la structure de ta table.

Posté : 07 juin 2005, 15:12
par renatane
j'ai editer sans avoir vu que tu avait repondu, dsl.

Posté : 07 juin 2005, 15:23
par renatane
Je crois que c bon,
"<option value='" .$nom_service."' ".$selected.">".$nom_service."</option>\n";
ca, c'est les otpions de mon select sur mon formulaire.
Je viens d'y ajouter 2 ' avant et aprés $nom_service, et y'a l'air que ca foncitonne.

Une bonne prise de tete pour 2 ', tu aavit bien raison dés le départ, mais j'ai pas chercher sur le bon fichier.
Merci bcp pour ton aide.

Posté : 09 juin 2005, 12:10
par renatane
J'ai encore un problème avec les ' '

les textes avec des ' ne s'affichent pas du tout.

Dans mon formulaire, ils s'affichent correctement :
<select name='nom_service'><br>
//j'affiche tous les services enregistrés dans mon select.
$rq = "SELECT DISTINCT nom_service FROM phpgw_workf_services ORDER BY nom_service";
echo "<option value='".$nom_service."' ".$selected.">".$nom_service."</option>\n";
aprés enregistrement, il n'y a rien dans la table a ce champ là.
voici le code:
//je récupère la valeur du champ select
$service = $_POST['nom_service'];
//requete pour récupéré l'id correspondant
$s = "SELECT DISTINCT  id_service FROM phpgw_workf_services WHERE nom_service = '".addslashes($service)."'";
$results = mysql_query($s);
$ser=mysql_fetch_array($results, MYSQL_ASSOC);
$idservice=$ser['id_service'];
//j'enregistre l'id_service correspondant au nom_service selectionné
$sql = "INSERT INTO phpgw_workf_versions (id_version,id_note, id_instance, id_service, titre, article, etat, destinataire, auteur) VALUES ('$id_version','$id_note','$idinstance','$idservice','$titre','$article','', '$destinataire', '')";
Comment et où dois-je utiliser addslashes?

Posté : 09 juin 2005, 13:31
par sadeq
J'ai des remarques :
<select name='nom_service'><br>
//j'affiche tous les services enregistrés dans mon select.
$rq = "SELECT DISTINCT nom_service FROM phpgw_workf_services ORDER BY nom_service";
echo "<option value='".$nom_service."' ".$selected.">".$nom_service."</option>\n";
Pourquoi tu bases les valeurs des options de ton select sur le nom_service alors que tu peux les baser sur l'id_service et ainsi économiser le trafic d'info et se passer de la requête :
$s = "SELECT DISTINCT id_service FROM phpgw_workf_services WHERE nom_service = '".addslashes($service)."'";
dans le code qui fait l'insertion des versions.

A ta place, j'écrirai ça :
<select name='id_service'><br> 
//j'affiche tous les services enregistrés dans mon select. 
$rq = "SELECT DISTINCT id_service, nom_service FROM phpgw_workf_services ORDER BY nom_service"; 
....
echo "<option value='".$id_service."' ".$selected.">".$nom_service."</option>\n";  
En suite :
$id_service = $_POST['id_service']; 

//j'enregistre l'id_service correspondant au nom_service selectionné 
$sql = "INSERT INTO phpgw_workf_versions (id_version,id_note, id_instance, id_service, titre, article, etat, destinataire, auteur) VALUES ('$id_version','$id_note','$idinstance','$id_service','$titre','$article','', '$destinataire', '')";  
Ceci dit, il faut débogger en affichant la source HTML du SELECT et en faisant un echo des requêtes pour revoir leurs syntaxes et éventuellement les tester directement sous MYSQL.