Collecte d'info depuis un champ avec un Espace ??

Collecte d'info depuis un champ avec un Espace ?? - PHP - Programmation

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 !  :kaola:  :kaola:  ) mais ! Impossible de la modifier (on peut mais plus rien ne fonctionne apres ! :\ )
 
Voici le code :  
 

Code :
  1. $modele = $donnees['Code Modele'];


 
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 !

Reply

Marsh Posté le 09-12-2008 à 17:23:01   

Reply

Marsh Posté le 09-12-2008 à 17:45:18    

euh.[:pingouino]
Je ne comprends rien du tout à la question.[:dawak]
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?


---------------
Can't buy what I want because it's free -
Reply

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 ?
 
:)

Reply

Marsh Posté le 09-12-2008 à 17:51:41    

c'est pas la requête qui est mauvaise, tout simplement? Montre-la!


---------------
Can't buy what I want because it's free -
Reply

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.


Message édité par Nunu68 le 09-12-2008 à 17:55:21
Reply

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?


---------------
Can't buy what I want because it's free -
Reply

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.
 

Reply

Marsh Posté le 10-12-2008 à 12:14:25    

SELECT 'Code Modele' as code_modele ...
 
puis $donnees['code_modele'].


---------------
Can't buy what I want because it's free -
Reply

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.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

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?[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2008 à 15:00:44   

Reply

Marsh Posté le 10-12-2008 à 15:07:28    

skeye a écrit :


ah parce-que access ça marche comme les vrais sgbd?[:joce]


 
J'voulais dire MySQL en fait, j'ai été trompé par les mysql_ dans son code. :o
 
En Access c'est pas SELECT [champ avec espaces] ou un truc dans le genre ? [:autobot]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 10-12-2008 à 15:10:08    

sielfried a écrit :


 
J'voulais dire MySQL en fait, j'ai été trompé par les mysql_ dans son code. :o
 
En Access c'est pas SELECT [champ avec espaces] ou un truc dans le genre ? [:autobot]


si, il me semble aussi, mais bon j'avais supposé qu'il avait testé la requete, au moins...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 30-04-2018 à 11:47:32    

:hello:  :hello:  :hello:  :hello:  
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  :pt1cable:   il y a peut-être quelque chose de nouveau sous le soleil des tropiques, non ?  :lol:  
 
merci  :jap:  de me le dire   :D ;-)


---------------
Prenez bien soin de vous !
Reply

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 '.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
Reply

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 :
  1. try {
  2.   $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  3.   // set the PDO error mode to exception
  4.   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  5.   $sql = "SELECT * FROM litho_donnees ORDER BY photo_litho ASC";
  6.   foreach ($conn->query($sql)as$col)
  7.    {
  8.    $c++;
  9.    $glo='<img src=../litho/imageslit/cristaux/'.utf8_encode($col[1]).' alt='.utf8_encode($col[2]).' title='.utf8_encode($col[2]).' width="90px" height="90px" />';
  10.    echo '<a href="prepavoir.php?cristal='.utf8_encode($col[2]).'">"'.$glo.'</a>';
  11.    }
  12.   }
  13.  catch(PDOException $e) {echo "Error: " . $e->getMessage(); }
  14.  $conn = null;


 
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  :)  
 
 :hello:  

Reply

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 :
  1. echo '<a href="prepavoir.php?cristal='. htmlspecialchars($col[2]) . '"><img src="../litho/imageslit/cristaux/' . urlencode($col[1]) . '" alt="' . htmlspecialchars($col[2]) . '" title="' . htmlspecialchars($col[2]) . '" width="90px" height="90px" /></a>';


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 :
  1. $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);


En :

Code :
  1. $conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password);


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.


Message édité par pluj le 30-04-2018 à 18:46:03
Reply

Marsh Posté le 02-05-2018 à 12:05:40    

:jap:  :jap:  :jap:  
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. :pt1cable:  
Le malheur c'est qu'il faudrait refaire tout dans chaque site tous les ans presque !  :pt1cable:  
Comme ce n'est pas possible  :ange:  : 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  :hello:  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed