[php] variable contenant un espace

variable contenant un espace [php] - PHP - Programmation

Marsh Posté le 14-12-2007 à 10:29:13    

Bonjour, je butte sur une betise certainement pour les pro du php.
 
je bidouille un site local qui reference tout les fichiers partagés dans mon reseau local.
 
cependant tout les repertoires et fichiers contenant un espace me pose probleme.
 
               exemple je veut linker un fichier d'une machine distante :
ex
\\192.168.0.5\partage\musique\ABBA - Dancing Queen.mp3
 
-en laissant l'espace dans la base de donnée le liens est tronqué (il s'arrete dés le premier espace)
ex:
file://192.168.0.5/partage/International/Abba
 
-en ramplacant les " " par '%20" le lien est  trés modifié
exp :  
file://192.168.0.5/partage/musique/ABBA%2520-%2520Dancing%2520Queen.mp3
 
voici le morceau de code en question:
$lien=$emplacement.$nom1; (je recompose l'url )
  echo "<tr><td><center>$nom1</center></td>
          <td><center><a href=file://$lien>telecharger </a></center></td>
        <td><center>$type</center></td>
 
Merci de votre aide, ne portez pas non plus d'importance à mes gouts musicaux  :lol:  
       

Reply

Marsh Posté le 14-12-2007 à 10:29:13   

Reply

Marsh Posté le 14-12-2007 à 10:41:19    

Il faut remplacer les espace par un %20, c'est la règle.... Ca ne fonctionne pas ?

Reply

Marsh Posté le 14-12-2007 à 10:45:37    

non lorsque je remplace les " " par des "%20" (sur le fichier csv depuis le notepad)  
le lien ressemple à
 
file://192.168.0.5/partage/musique/ABBA%2520-%2520Dancing%2520Queen.mp3  
 
au lieu de
file://192.168.0.5/partage/musique/ABBA%20-%20Dancing%20Queen.mp3

Reply

Marsh Posté le 14-12-2007 à 10:47:01    

Y'a un double-encodage là. Les %20 transformés en %2520 [:pingouino]
 
Montre-nous un peu plus de code là

Reply

Marsh Posté le 14-12-2007 à 11:06:22    

en gardant le meme exemple : |fichier|emplacement|taille|type|date de creation|date de modif|attribut|
si mon csv est :  
 
ABBA - Dancing Queen.mp3;//192.168.0.5/partage/musique/;3696849;Winamp media file;05/08/2007 07:14;05/08/2007 07:11;A  
          dans ma base de donnée cela donne cela
ABBA - Dancing Queen.mp3|//192.168.0.5/partage/musique/|3696849|Winamp media file|05/08/2007 07:14|05/08/2007 07:11|A|
                              le lien (ie)sur le site sera  
file://windows-88cd5da/partage/musique/ABBA
 
si je remplace les " " par des "%20"
si mon csv est :
ABBA%20-%20Dancing%20Queen.mp3;//192.168.0.5/partage/musique/;3696849;Winamp%20media%20file;05/08/2007%2007:14;05/08/2007%2007:11;A
            dans ma base de donnée cela donne cela
ABBA%20-%20Dancing%20Queen.mp3|//192.168.0.5/partage/musique/|3696849|Winamp%20media%20file|05/08/2007%2007:14|05/08/2007%2007:11|A|
 
le lien (ie)sur le site sera  
file://192.168.0.5/partage/musique/ABBA%2520-%2520Dancing%2520Queen.mp3
 
 
je n'explique pas l'apparition de ces 25
file://192.168.0.5/partage/musique/ABBA%2520-%2520Dancing%2520Queen.mp3
 
 
quelle parti du code avez vous besoin ? tout ?

Reply

Marsh Posté le 14-12-2007 à 11:07:13    

L'affichage des liens serait un bon départ

Reply

Marsh Posté le 14-12-2007 à 11:08:08    

<HTML>
<head>  
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252" />
</head>
<body>  
 
<?php          
 
include('config.inc.php');  
$j=0;        
$fin = 10;        
$menu = "";    
$moins = "";
$plus = "";
if(isset($_GET['page'])) {
$page=htmlentities($_GET['page']);
}
else {
$page=1;
}
$chaine = str_replace(" ","_",$chaine);  
if(isset($_GET['num'])) {
$num=htmlentities($_GET['num']);    
$fin2 = $fin + $num;
}
else {
$num=0;
}
 
$debut=($page*$fin)-$fin;
echo "<Table>
      <tr><td>Recherche:</td>
   <form action=\"dico2.php\" method=\"get\">";
   if(isset($_GET['search'])) {
   $value = htmlentities($_GET['search']);
   echo "<td><input type=\"text\" name=\"search\" value=\"$value\" size=\"20\" maxlength=\"255\"><td>";
   }
   else {  
   echo "<td><input type=\"text\" name=\"search\" size=\"20\" maxlength=\"255\"><td>";  
   }
   echo "<td><input type=\"submit\" value=\"Rechercher\"></td>  
   <td>(ex: souvenir)</td>  
   <input type=\"hidden\" name=\"num\" value=\"0\">  
   <input type=\"hidden\" name=\"page\" value=\"1\">
   </form>
   </tr></table>";
   
echo "<center>
      <Table border=\"2\" width=\"95%\">
      <tr><td>nom du fichier</td>
   <td>repertoire</td>
   <td>taille</td>
   <td>type</td>
   <td> <a href=file://192.168.0.4\partage\A%20GRAVER\Carol\MVI_7829.AVI target=_blank >Lien</a> Lien</td>
   </tr>";
 
if(isset($_GET['search'])) {    
      $search_env = $_GET['search'];
   $search_env1 = $_GET['search'];
 
 
   if(is_numeric($search_env)) {  
              $req_nb_all = mysql_query("SELECT nom,emplacement,taille,type,creer from brute where nom='$search_env'" ) or die ("erreur sql ".mysql_error());  
     $rows_req = mysql_num_rows($req_nb_all);  
     
      }
   else {    
           if(substr($search_env, -1, 1) == '"' And substr($search_env, 0, 1) == '"') {
             $search_env = str_replace('"', "", $search_env);            
             $req_search_all[0] = mysql_query("SELECT id,langage,type,example,link  FROM `brute` WHERE `langage` LIKE '%$search_env%' OR `type` LIKE '$search_env'  OR `example` LIKE  '%$search_env%'" ) or die ("erreur sql ".mysql_error());
       if(isset($rows_req)) {
          $rows_req = mysql_num_rows($req_search_all[0]) + $rows_req;  
          }
          else {
          $rows_req = mysql_num_rows($req_search_all[0]);
          }  
       $nb=1;
       $valide = 1;  
     }
     else {  
                   $search_env = explode(' ' , $search_env);  
             $nb = count($search_env);    
       $valide = 0;
       for($i = 0; $i < $nb; $i++) {  
             $req_search_all[$i] = mysql_query("SELECT nom,emplacement,taille,type,creer  FROM `brute` WHERE `nom` LIKE '%$search_env[$i]%' OR `type` LIKE '$search_env[$i]'  OR `emplacement` LIKE  '%$search_env[$i]%'" ) or die ("erreur sql ".mysql_error());  
       if(isset($rows_req)) {
          $rows_req = mysql_num_rows($req_search_all[$i]) + $rows_req;  
          }
          else {
          $rows_req = mysql_num_rows($req_search_all[$i]);
          }
       }  
     }  
       
     }
 $nombre_total_de_resultat = $rows_req;    
    $nombre_de_page=ceil($nombre_total_de_resultat/$fin);                              
 
}  
else {    
      $req_all = mysql_query("SELECT nom,emplacement,taille,type,creer from brute" ) or die ("erreur sql ".mysql_error());
}    
 
if(isset($search_env) And is_numeric($search_env)) {  
     while (list ($nom, $emplacement, $type, $example, $link) = mysql_fetch_row ($req_nb_all)) {
  $j++;  
     echo "<tr><td><center>$nom</center></td>
           <td><center>$emplacement</center></td>
        <td><center>$type</center></td>
        <td>$example</td>
        <td>$link</td>
        </tr>";
    }
  echo "il y $j resultat";
}  
 
elseif(isset($_GET['search']) And is_numeric($search_env) == 0) {
    for($h = 0; $h < $nb; $h++) {  
    while (list ($nom1, $emplacement, $type, $example, $link) = mysql_fetch_row ($req_search_all[$h])) {  
  if ($valide == 0) {  
  for($i = 0; $i < $nb; $i++) {    
  $example = str_replace("$search_env[$i]","<span class=\"srch$i\">$search_env[$i]</span>","$example" );
 $example = str_replace(strtolower($search_env[$i]),"<span class=\"srch$i\">".strtolower($search_env[$i])."</span>","$example" );
  $example = str_replace(strtoupper($search_env[$i]),"<span class=\"srch$i\">".strtoupper($search_env[$i])."</span>","$example" );  
  $example = str_replace(ucfirst($search_env[$i]),"<span class=\"srch$i\">".ucfirst($search_env[$i])."</span>","$example" );        
  }
  }
  elseif ($valide == 1) {    
  $example = str_replace("$search_env","<span class=\"srch0\">$search_env</span>","$example" );
  $example = str_replace(strtolower($search_env),"<span class=\"srch0\">".strtolower($search_env)."</span>","$example" );
  $example = str_replace(strtoupper($search_env),"<span class=\"srch0\">".strtoupper($search_env)."</span>","$example" );  
  $example = str_replace(ucfirst($search_env),"<span class=\"srch0\">".ucfirst($search_env)."</span>","$example" );    
 }
 $lien=$emplacement.$nom1;
  $j++;  
  if($h >= $num and $num < $fin2) {  
  $num++;
  echo "<tr><td><center>$nom1</center></td>
          <td><center><a href=file://$lien>telecharger </a></center></td>
        <td><center>$type</center></td>
        <td>$example</td>  
        <td><link>$link</td>
     
        </tr>";
 }      
 }  
 
}
echo "il y $j resultat";
}
 
else {
   if(isset($req_all)) {
    while (list ($nom, $langage, $type, $example, $link) = mysql_fetch_row ($req_all)) {    
    echo "<tr><td><center>$nom</center></td>
         <td><center>$lien</center></td>
      <td><center>$type</center></td>
      <td>$example</td>
      <td>$link</td>
     </tr>";
  }
   }
}
 
if(isset($_GET['page']) And $_GET['page']>5 && $_GET['page']<=($nombre_de_page-4)) {$decale=$_GET['page']-5;}
elseif(isset($_GET['page']) And $_GET['page']<5) {$decale=0;}
elseif(isset($_GET['page']) And $_GET['page']>($nombre_de_page-5)) {$decale=$nombre_de_page-9;}
 
if(isset($nombre_de_page) And isset($decale)) {  
$num_moin = $num-($fin+1);
$plus=($page==$nombre_de_page) ? "" : "<a href='dico2.php?search=$search_env1&num=$num&page=".($page+1)."'> suivant </a>";
$moins=($page==1) ? "" : "<a href='dico2.php?search=$search_env1&num=$num_moin&page=".($page-1)."'> précedent </a>";
 
$fin_de_boucle=($nombre_de_page<10) ? "$nombre_de_page" : "".(9+$decale)."";
 
for($i=-+$decale;$i<=$fin_de_boucle;$i++){  
 
if($i > 1) {
$num_n = $num_n + $fin;
}
else {
$num_n = 0;
}
$menu.=($i==$page) ? " $i " : " <a href='dico2.php?search=$search_env1&num=$num_n&page=$i'>$i</a> ";
     
 
}
}      
if(isset($moins) Or isset($menu) Or isset($plus)) {
echo "<table width='85%' border='0' align=\"center\" cellpadding='0' cellspacing='0'>
<tr>
    <td align=\"center\">$moins $menu $plus</td>
     </tr>
</table>";
}
 
echo "</table></center>";
 
?>
</body>
 
      </html>

Reply

Marsh Posté le 14-12-2007 à 11:10:37    

Tiens ouais chelou, vu que c'est qu'un echo...

Reply

Marsh Posté le 14-12-2007 à 17:31:46    

je viens de tester avec les _ mais la encore rien ne se passe

Reply

Marsh Posté le 14-12-2007 à 18:41:43    

bonsoir
et ton champs dans ta base est de quel type?
ça viens peut etre de la?

Reply

Marsh Posté le 14-12-2007 à 18:41:43   

Reply

Marsh Posté le 14-12-2007 à 19:16:52    

Bonsoir
c'est de type varchar j'ai aussi essayé de la passer en text (c'est dire a quel point je suis perdu)  

Reply

Sujets relatifs:

Leave a Replay

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