Collecte d'info depuis un champ avec un Espace ?? - PHP - Programmation
Marsh Posté le 09-12-2008 à 17:45:18
euh.
Je ne comprends rien du tout à la question.
C'est quoi $donnees? ça vient d'où? Quelle est l'erreur rencontrée? Qu'est-ce qui te force à utiliser une clé de tableau avec un espace? Et depuis quand ça pose problème en php?
Marsh Posté le 09-12-2008 à 17:49:52
$donnees est la variable de recuperation depuis un fetch_array
L'erreur rencontré est que tout simplement ce que contient la table refuse de s'afficher quand le nom de champ contient un espace (Ici "Code Modele", alors qu'avec les autres champs ne contenant pas d'espace tout fonctionne.
Ce qui me force a utilisé un champ avec un espace, ce sont ceux qui otn créé le progiciel qui gere la table sous access, et donc impossible a modifier sinon le progiciel ne fonctionne plus :s
D'où ma question, comment on fait pour faire comme s'il n'y avait pas d'espace ?
Marsh Posté le 09-12-2008 à 17:51:41
c'est pas la requête qui est mauvaise, tout simplement? Montre-la!
Marsh Posté le 09-12-2008 à 17:54:47
Voila le code "complet" :
$c = odbc_connect($dsn, $user, $pass) or die("Impossible de se connecter au serveur ODBC ! " );
$query = "SELECT 'Code Modele', Kilometrage, Puissance, 'Place Assise', 'Annee Modele', 'Prix Vente TTC', Carburant, CheminPhoto, PoidsTC FROM vn" or die ("Probleme d'acces a la table !" );
$reponse = odbc_exec($c, $query);
$id_connect = mysql_connect("localhost","root","" ) or die(mysql_error());
$db = mysql_select_db("apimeca" );
$sql = mysql_query("TRUNCATE TABLE neuf" ); //On vide la table d'abord
while ($donnees = odbc_fetch_array($reponse))
{
$modele = $donnees['Code Modele'];
echo "Modele : ";
echo $modele;
$Km = $donnees['Kilometrage'];
$Puiss = $donnees['Puissance'];
$Places = $donnees['Place Assise'];
$Annee = $donnees['Annee Modele'];
$PVTTC = $donnees['Prix Vente TTC'];
$Carburant = $donnees['Carburant'];
$photo = $donnees['CheminPhoto'];
$poids = $donnees['PoidsTC'];
$rep = mysql_query("INSERT INTO neuf VALUES('$modele', '$Km', '$Puiss', '$Places', '$Annee', '$PVTTC', '$Carburant', '$Photo', '$Poids')", $id_connect) or die(mysql_error()); //On réécrit les valeurs
}
En gros le Kilometrage, etc... s'affiche correctement, il y a juste "Code Modele", "Place Assise", "Annee Modele", etc... qui n'affiche rien (alors que la table contient qque chose.
Marsh Posté le 09-12-2008 à 18:19:25
print_r($donnees) donne quoi?
Aliaser ces champs dans la requête ça résoud pas le problème?
Marsh Posté le 10-12-2008 à 12:13:17
Aliaser ? tu veut dire remplacer par
$modele = $donnees['Code_Modele'];
??
Mais je cherchai un moyen genre concatenation ou n'importe pour qu'il prenne l'ensemble du mot si vous voyez ce que je veut dire.
Marsh Posté le 10-12-2008 à 12:14:25
SELECT 'Code Modele' as code_modele ...
puis $donnees['code_modele'].
Marsh Posté le 10-12-2008 à 14:58:36
Quand tu fais SELECT 'truc' en SQL il te sélectionne la chaîne truc, normalement. Il faut utiliser un backtick (`) dans ton cas.
Marsh Posté le 10-12-2008 à 15:00:44
sielfried a écrit : Quand tu fais SELECT 'truc' en SQL il te sélectionne la chaîne truc, normalement. Il faut utiliser un backtick (`) dans ton cas. |
ah parce-que access ça marche comme les vrais sgbd?
Marsh Posté le 10-12-2008 à 15:07:28
skeye a écrit : |
J'voulais dire MySQL en fait, j'ai été trompé par les mysql_ dans son code.
En Access c'est pas SELECT [champ avec espaces] ou un truc dans le genre ?
Marsh Posté le 10-12-2008 à 15:10:08
sielfried a écrit : |
si, il me semble aussi, mais bon j'avais supposé qu'il avait testé la requete, au moins...
Marsh Posté le 30-04-2018 à 11:47:32
Bref il n'y a pas de solution ?
j'ai ce souci avec une base récupérée en MySql !
mais bon, depuis 2008 il y a peut-être quelque chose de nouveau sous le soleil des tropiques, non ?
merci de me le dire ;-)
Marsh Posté le 30-04-2018 à 11:55:04
sielfried a écrit : Quand tu fais SELECT 'truc' en SQL il te sélectionne la chaîne truc, normalement. Il faut utiliser un backtick (`) dans ton cas. |
N'est-ce point la réponse? Il faut utiliser le ` et non le single quote '.
Marsh Posté le 30-04-2018 à 17:09:25
ma question est sans doute un peu différente alors !
c'est au moment de l'affichage du "title" que ça ne='affiche que le premier mot de la chaine ( ça s'arrête à l'espace)
Code :
|
et ensuite l'affichage du echo' <a href .... donne ceci http://harmonieuniverselle.bzh/litho/liste2.php
en passant sur " jaspe brun" " jaspe léopard " "jaspe rouge" l'affichage n'est que "JASPE"
C'est dommâââage !
merci d'une indication de possible correctif
Marsh Posté le 30-04-2018 à 18:38:32
Lu,
c'est normal, faute de délimiter la valeur de l'attribut title avec des quotes, il [le navigateur] va s'arrêter au premier espace. Par exemple pour title=foo bar, c'est interprété comme title="foo" bar, bar étant un autre attribut.
La bonne démarche :
Code :
|
Et on utilise htmlspecialchars pour que les double quotes que pourraient contenir tes données ne produisent pas le même effet (troncage similaire, étant substituées par l'entité HTML correspondante) plus urlencode pour ce qui finit dans l'URL.
Et changer :
Code :
|
En :
Code :
|
Non seulement ça t'évite ces "sales" utf8_encode mais si les données étaient initialement encodées en UTF-8, tu perds tout caractère non latin, ce qui, au final, rend l'usage d'Unicode/UTF-8 complètement inutile.
Marsh Posté le 02-05-2018 à 12:05:40
Merci beaucoup !
Je suis à me recycler en JAVA.
Mais je pense que je vais aussi me recycler en PHP-HTML-CSS-MySql
ça bouge beaucoup aussi.
De mieux en mieux c'est sûr mais il faut sans arrêt essayer de suivre les évolutions.
Le malheur c'est qu'il faudrait refaire tout dans chaque site tous les ans presque !
Comme ce n'est pas possible : donc j'adapte au fur et à mesure.
Merci donc de ces informations que je vais dès à présent intégrer au mieux dans les relations MySql-PHP-et affichages HTML !
bien cordialement
Marsh Posté le 09-12-2008 à 17:23:01
Bonsoir,
Voila j'ai un petit souci !!!
En fait je voudrai recuperez de ma table des infos, seulement mon champ contient un espace !!! (Oooohh pas bien ! le pourri ! ) mais ! Impossible de la modifier (on peut mais plus rien ne fonctionne apres ! :\ )
Voici le code :
Voila, comment passez au dela de l'espace ??
Car les infos, où le champ ne contient pas d'espace sont collectés sans probleme, par contre c'est une autre histoire pour ceux avec "espace"...
Quelqu'un aurait-il une solution ??
Merci !