2014-07-03 4 views
0

Dans ma base de données, j'ai obtenu des enregistrements individuels qui sont affichés par son propre ID. Dans l'URL est comme ceci: site.com/index.php?id=1. Mais si j'écris l'adresse avec un ID qui n'existe pas (comme site.com/index.php?id=3553255) il m'envoie à la page que j'utilise comme "modèle", mais sans données (une page vide).PHP & MySQL enregistrements vides

Comment envoyer un état d'en-tête 404, si l'enregistrement est vide ou n'existe pas?

Ceci est mon code:

<?php 

if(isset($_GET['id'])) { 

$id = mysql_escape_string($_GET['d']); 

include 'mysql_conexion.php'; 

$sql=" SELECT * FROM portfolio WHERE id='$id'"; 
$data=mysql_query($sql,$conexion); 

while ($row=mysql_fetch_array($data)) { 
     $id=$row['id']; 
     $heading=$row['heading']; 
} 

echo "<div><h1>$heading</h1></div>"; 

} 

mysql_free_result($data); 
mysql_close($conexion); 

?> 

Note: J'ai essayé avec fonction d'autre et en-tête « else {header ('HTTP/1.0 404 Not Found', true, 404);} sortie " et en-tête: emplacement, mais n'a pas fonctionné.

Merci de votre attention.

+0

Vous devriez imprimer quelque chose avant l'appel à 'header()', c'est pourquoi cela ne fonctionne pas. – arielnmz

Répondre

0

Essayez de saisir d'une simple instruction if qui ressemble fondamentalement quelque chose comme ceci:

$numberofRows = count($cars); 

if ($numberofRows == 0){ 

echo '<meta http-equiv="refresh" content="0; url=http://example.com/" />'; 

} 

else{ 
while ($row=mysql_fetch_array($data)) { 
     $id=$row['id']; 
     $heading=$row['heading']; 
} 

echo "<div><h1>$heading</h1></div>"; 

} 

mysql_free_result($data); 
mysql_close($conexion); 
} 
?> 

Cela utilisera votre requête pour voir combien de lignes correspondent à lui. Si le nombre est 0, il redirigera l'utilisateur vers l'URL de votre page 404.

Espérons que cela aide.

+0

Misread utiliser le même code fourni juste faire cette procédure avant votre html

. A l'intérieur du si vous faites écho au titre que vous souhaitez. – OfficialDtech