2009-07-21 6 views
0

J'ai une base de données qui est liée à un serveur d'images. Dans le cas où une photo n'est pas téléchargée, je veux placer une photo "indisponible" à sa place. Chaque image est dans l'ordre numérique basé sur la clé primaire de la base de données $row['Item_ID']. Mon script ci-dessous recherche le fichier mais ne trouve pas de photos, donc il utilise le "indisponible" pour tout. Je ne suis pas sûr si je peux utiliser des guillemets doubles sur la première ligne quand j'écris '$row["Item_ID"]'.fichier de recherche de problème w/php

$img_var = '$row["Item_ID"]'; 
$item_img = '/item_images/$img_var.jpg';   
if (!file_exists($item_img))   
{ $row['Item_ID'] = 'unavailable'; }  
else { $row['Item_ID'] = $row['Item_ID']; } 

Répondre

2

Les guillemets simples ne sont pas interpolés.

2

Ce

$img_var = '$row["Item_ID"]'; 
$item_img = '/item_images/$img_var.jpg'; 

doit lire

$img_var = $row["Item_ID"]; 
$item_img = "/item_images/$img_var.jpg"; 

ou même

$item_img = "/item_images/{$row["Item_ID"]}.jpg"; 

Quand il est à l'intérieur les guillemets simples, PHP ne résout pas $ img_var à sa valeur , il utilise simplement la chaîne "$ img_var".

5

Vos deux premières lignes effectuent (ou tentent) d'effectuer un remplacement de chaîne sans nécessité.

Les chaînes délimitées par des guillemets simples ne sont pas interpolées pour les variables ou les séquences d'échappement. Mais en réalité, vous êtes en train de créer ce complexe trop complexe - il suffit de concaténer le chemin de fichier sur une seule ligne et de basculer vers votre image indisponible quand vous en avez besoin.

$item_img = '/item_images/' . $row["Item_ID"] . '.jpg'; 
if (!file_exists($item_img)) 
{ 
    $item_img = '/item_images/unavailable.jpg'; 
} 
0
$item_img = '/item_images/'.$row['Item_ID'].'.jpg'; 
if(!file_exists($path_to_root.$item_img)) { 
    $item_img = '/item_images/unavailable.jpg'; 
} 

Notez le $path_to_root. Votre racine HTML n'est pas la même que votre racine PHP (à moins que votre serveur ne soit spécifiquement configuré de cette façon ... la mienne ne l'est pas), vous devez donc vous assurer que les chemins sont corrects. Je tiens à placer un fichier PHP assis à la base de mon site avec define('ROOT', dirname(__FILE__)); et vous pouvez simplement faire ROOT.'/path/to/whatever.jpg'.

Questions connexes