# Prüfen ob Eintrag noch in Datenbank vorhanden



## Tomas1967 (20. Dezember 2006)

Hallo, 

ich habe ein Problem. Wenn ich auf meiner Seite beispielsweise Einträge lösche, dann lässt sich die Seite/URL noch aufrufen.

Ist es irgendwie möglich zu prüfen, ob ein Eintrag/ID noch in der Dateinbank vorhanden ist? 

Wenn nicht mehr vorhanden irgendwas sinnvolles machen. Wenn noch vorhanden nichts tun.

Hoffentlich versteht mich auch wer *gg*


----------



## Dr Dau (20. Dezember 2006)

Hallo!


Tomas1967 hat gesagt.:


> Hoffentlich versteht mich auch wer *gg*


Könnte sein.....

Wenn Du Dein Query ausführst, wird im Erfolgsfall TRUE zurück gegeben..... andernfalls FALSE.

```
$query = mysql_query("DELETE FROM............ ");
if($query) {
    echo "Eintrag wurde gelöscht";
} else {
    echo "Eintrag konnt nicht gelöscht werden!";
}
```
Gruss Dr Dau


----------



## Tomas1967 (20. Dezember 2006)

Neee, ich möchte ja nichts löschen.

Beispiel - ich habe einen Eintrag mit folgender Url - http://www.meineDomain.de/eintrag-12.html

In der Datenbank steht dieser mit - ID, Cid, Titel, Beschreibung u.s.w

Wenn ich diesen Eintrag jetzt aus der Datenbank löschen, dann lässt sich die URL - http://www.meineDomain.de/eintrag-12.html aber noch aufrufen. 

Und genau das möchte ich unterbinden. Nur weiß ich nicht wie *heul* 

Ich benötige eine Abprüfung, ob ein Eintrag noch in der Datenbank vorhanden ist. 

Eintrag nicht vorhanden = mach was
Eintrag vorhanden    = alles okay


----------



## campari (20. Dezember 2006)

Prüf über die SuperGlobale GET , ob der Wert einen Abgleich in der Datenbank hat


```
$get = htmlentities($_GET['get']);
if ((!empty($get)) && (is_numeric($get))) {
$sql = mysql_query("SELECT ID FROM $tabelle WHERE ID = '".mysql_real_escape_string($get)."'");
if (mysql_num_rows($sql) == 1) {
echo " alles okay";
} else {
echo "mach was";
}
}
```


----------



## Dr Dau (20. Dezember 2006)

Die HTML Datei ist also auf dem Webspace weiterhin vorhanden?

Hmm, keine Ahnung ob sich da irgendwas mit mod_rewrite machen lässt.
Wenn nicht, dann würde ich in jede Seite eine Datenbankabfrage einbauen (oder einbinden).

```
<?php
$domain = "http://www.meineDomain.de";
mysql_connect("localhost", "user", "pass") or die(mysql_error());
mysql_select_db("Datenbank") or die(mysql_error());
$check = mysql_query("SELECT * FROM `Tabelle` WEHRE `URL` = '".mysql_real_escape_string($domain.$_SERVER['PHP_SELF'])."'");
if($check == false) {
    header("Location: ".$domain); /* Auf die Startseite umleiten, da die Seite nicht in der Datenbank steht */
} else {
?>
<html>
<!-- HTML-Code ausgeben -->
....
....
....
....
</html>
<?php
}
?>
```
Dann noch Apache mittels .htaccess beibringen Dateien mit der Endung .html durch den PHP Parser zu jagen:

```
AddType aplication/x-httpd-php .html
```
Die Geschichte ist aber entsprechen serverlastig..... da bei jeder Seite die aufgerufen wird, eine Datenbankabfrage stattfindet.


----------



## Tomas1967 (20. Dezember 2006)

@campari

Das geht nicht. Alles was kommt sind Fehlermeldungen.


----------



## Julian Maicher (20. Dezember 2006)

Was kommen denn für Fehlermeldungen?


----------



## Tomas1967 (20. Dezember 2006)

Ups, falsch eingefügt. Fehlermeldungen kommen nicht aber es wird auch nichts ausgegeben.


----------



## Tomas1967 (20. Dezember 2006)

```
$id = htmlentities($_GET['id']); 
if ((!empty($id)) && (is_numeric($id))) { 

$sql = mysql_query("SELECT id FROM $tabelle WHERE id = '".mysql_real_escape_string($id)."'"); 
if (mysql_num_rows($sql) == 1) { 
$content.= "<meta name=\"robots\" content=\"index,follow\" />\n";
} else { 
$content.= "<meta name=\"robots\" content=\"NOINDEX, NOFOLLOW\" />\n";
} 
}
```
Nun wird mir diese Zeile aber in den Kategorien nicht mehr angezeigt.

$content.= "<meta name=\"robots\" content=\"index,follow\" />\n";

Gibt es da nicht eine Lösung, die nur was macht wenn id nicht vorhanden und sonst alles so belässt?


----------



## Julian Maicher (20. Dezember 2006)

```
$id = htmlentities($_GET['id']); 
if ((!empty($id)) && (is_numeric($id))) { 

   $sql = mysql_query("SELECT id FROM $tabelle WHERE id = '".mysql_real_escape_string($id)."'"); 
   if (mysql_num_rows($sql) == 0) { 
       # ID nicht vorhanden ...
   }
}
```


----------



## Tomas1967 (20. Dezember 2006)

Hmmmm, so meinte ich das nicht. Das ist echt schwer zu beschreiben. Sorry! 

Ich habe eine PHP-Datei in der sich alle Meta-Angaben befinden.

Nun möchte ich die Zeile  - 

$content.= "<meta name=\"robots\" content=\"index,follow\" />\n"; 

nur auf -

$content.= "<meta name=\"robots\" content=\"NOINDEX, NOFOLLOW\" />\n"; 



ändern, wenn die ID in der Datenbank nicht mehr vorhanden ist. Es gibt Seiten mit den Einträgen die laufen über $id und Kategorien die laufen über $cid.

Der Code funktioniert ja schon, nur wenn ich eine Kategorie öffne, dann wird keine der beiden Zeilen mehr angezeigt. 

Ist das überhaupt machbar? Nicht das ich euch Löcher in den Bauch frage *gg*


----------



## Dr Dau (20. Dezember 2006)

<meta>-Tags werden nie angezeigt..... ausser man lässt sich den Quelltext anzeigen. 

Ausserdem erwartest Du dass der Variablenname "id" an die URL angehängt wird:

```
http://www.meineDomain.de/eintrag-12.html?id
```
Wenn dieser Variablenname fehlt, funktioniert Dein Script eh nicht.


----------



## Tomas1967 (20. Dezember 2006)

Der Code funktioniert ja schon.


```
$id = htmlentities($_GET['id']);  
if ((!empty($id)) && (is_numeric($id))) {  

$sql = mysql_query("SELECT id FROM $tabelle WHERE id = '".mysql_real_escape_string($id)."'");  
if (mysql_num_rows($sql) == 1) {  
$content.= "<meta name=\"robots\" content=\"index,follow\" />\n"; 
} else {  
$content.= "<meta name=\"robots\" content=\"NOINDEX, NOFOLLOW\" />\n"; 
}  
}
```


Aber nur auf den Seiten mit einer ID. Wenn ich auf einer Seite mit cid im Link wechsel, dann wird mir die Zeile (keine von beiden) in den Meta-Angaben nicht mehr angezeigt. Meine Idee war eigentlich ein NOINDEX, NOFOLLOW, wenn der Eintrag nicht mehr vorhanden ist, so dass die Sumas diese Seite wieder aus dem Index löschen.

Irgendwie muss das doch funktionieren *heul* Noch jemand eine Idee?


----------

