PHP leere Werte in Datenbank nicht speichern

das:

PHP:
<?
function referer2keyword($default=null, $referer = null)
{
        if (is_null($referer))
                $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
 
        // Dies sind die am häufigsten verwendeten Variablen von Suchmaschinen
        $array = array('q','query','search','p');
        $count = count($array);
 
        for($i=0; $i<$count; $i++) {
                $var = parse_url($referer);
                parse_str($var['query'], $output);
                if($output[$array[$i]] != null)
                        return $output[$array[$i]];
        }
 
        return $default; //Optionale Ausgabe eines Standard-Keywords
}
 
//normaler Einsatz
echo referer2keyword();
 
?>

<?
$str = referer2keyword();
$suchstr = strtolower("");
$str = str_replace("  ", " ", $str);
$str = str_replace("  ", " ", $str);
$str = str_replace(" ", "-", $str);

echo trim(preg_replace("/[-]{2,}/","-",preg_replace("/($suchstr|\.)/","",str_replace(" ","-",strtolower($str)))), "-"); 

?>

<?php


if (!empty(referer2keyword()) && !empty(trim(preg_replace("/[-]{2,}/","-",preg_replace("/($suchstr|.)/","",str_replace(" ","-",strtolower($str)))), "-"))) { 
 
$eintrag = "INSERT INTO tabelle
(name, slug)


VALUES
('".referer2keyword()."', '".trim(preg_replace("/[-]{2,}/","-",preg_replace("/($suchstr|\.)/","",str_replace(" ","-",strtolower($str)))), "-")."')";

$eintragen = mysql_query($eintrag);

} else {
   // Ausgabe leerer String 
}


?>
 
Vesuche es mal so..

PHP:
function referer2keyword(){
// code
}
 
 
$deinstring = referer2keyword();
 
if(empty($deinstring) && $deinstring!=="0") {
 
//Hier Code was gemacht werden soll wenn $deinstring leer ist.
 
}else{
 
//Hier Code der in die DB schreibt. Also erst deine ganzen Filter usw. und
//dann schreiben.
 
}

Geht natürlich auch anders, du kannst referer2keyword() sofort bzw. direkt prüfen. Dann einfach das mapping weg lassen und if anpassen. Der einzige Unterschied ist, du musst nicht für die weitere Bearbeitung ständig referer2keyword() schreiben sondern die kurze $var bzw. $deinstring.
 
Zuletzt bearbeitet:
Belee schrieb:
Vesuche es mal so..

PHP:
if(empty($deinstring) && $deinstring!=="0") {
 
//Hier Code was gemacht werden soll wenn $deinstring leer ist.
 
}else{
 

}


Wenn $deinstring leer ist, dann soll in DB nichts geschrieben werden.

Was denkst du, was soll nach }else{ am besten stehen?
 
PHP:
$deinstring = referer2keyword();
 
if(empty($deinstring) && $deinstring!=="0") {
 
// Hier ist $deinstring leer! du kannst jetzt z.B. einfach die Hauptseite laden.
//die(); bedeutet dass das Script genau hier endet, es wird nicht mehr
//fortgesetzt, es wird gekillt also wird auch nirgendwo etwas geschrieben.
die(header("location: http://www.deine_domain.de"));
 
//Wenn es eine Fehlermeldung von wegen, header kann nicht gesendet werden gibt,
//nimm das. 
 
die ("<meta http-equiv=\"refresh\" content=\"0; URL=http://www.deine_domain.de\">");
 
}else{
 
//Hier kommt dann halt der Code der in die DB schreibt, wenn $deinstring nicht
//leer ist, exakt hier wird gesprungen wenn er Inhalt hat.
 
//was hier am besten stehen soll kann ich dir nicht sagen, das musst du
//ja selbst wissen.
//Du musst erst zur DB verbinden, und dann halt alles weitere, ich weiß halt nicht was
//bzw. wie die Ausgabe jetzt abgelegt werden soll bzw. was du da überhaupt vor hast.
//Der Code nach der Funktion ist sage ich jetzt mal, Unsinn hoch drei x 6 ;)
 
}

Am besten erzählst du uns mal ganz genau was du da vorhast, also was gemacht werden soll und wie, und was genau das Problem ist. Denn wenn ich mir den Code nach der Funktion anschaue, sehe ich dass den nicht die Person geschrieben hat die auch die Funktion geschrieben hat.
 
Ich habe über Weiterleitung nichts gesagt. Ich wollte nur, dass falls das leer ist, dann nichts in DB schreiben.

Jetzt jedes Mal wenn ich meine Seite aufrufe, wird sie auf diese Seite weitergeleitet: _http://de.de/sonstiges


Ich habe das natürlich aus der Code rausgenomen:

PHP:
die(header("location: http://www.deine_domain.de"));
 
die ("<meta http-equiv=\"refresh\" content=\"0; URL=http://www.deine_domain.de\">");

und das eingefügt:

PHP:
if(empty($deinstring) && $deinstring!=="0") {
 
die ("kein-wert");
 
}else{
 
}

Wie kriege ich jetzt die Weiterleitung weg?
 
Na dann mache auch nix..dann brauchst du das else eigentlich auch garnicht...

PHP:
if(!empty($deinstring) or $deinstring == "0") {
 
//in die db schreiben
}

Dazwischen packst du den Code rein damit in die DB geschrieben wird. Ist $deinstring aber leer passiert nix, der Block wird nicht ausgeführt und somit auch nicht in die DB geschrieben.
 
Zuletzt bearbeitet:
Gemacht.
Aber die Weiterleitung ist immer noch aktiv. Warum wird meine Seite immer auf eine externe Seite weitergeleitet?
 
Keine Ahnung, wenn du die Weiterleitung von mir rausgenommen hast dann ist die auch weg. Poste mal den Link damit man sich das live anschauen kann.
 
Na viel ist da nicht zu sehen :)
Ist das jetzt deine Seite oder wird zu dieser umgeleitet? ich kann dir leider nicht sagen warum weshalb. Was hast du sonst noch alles am Code geändert?
 
Es wird zu einer fremder Seite umgeleitet.

Ich wollte das Mal testet:

die(header("location: http://www.deine_domain.de"));

die ("<meta http-equiv=\"refresh\" content=\"0; URL=http://www.deine_domain.de\">");

Danach habe ich das komplett gelöscht. Ja sogar ganze Unterseite wo der Code drin war vom Server gelöscht. Auch header seite gelöscht. Beim Hoster im AdminPanel habe da keine Weiterleitung gefunden.

Ich verstehe überhaupt nicht, wo ist dieser Weiteileitung Code gespeichert wurde. Warum ist sie aktiv?
 
Check mal die Datenbank bzw. alle Datensätze bzw. gibst du irgendwo im Code was aus der DB aus? check das mal, ansonsten weiß ich nicht was das sein könnte.
 
Ich habe in der DB keine URLs gefunden. Ich habe sogar komlet ganze Webseite aus dem Server gelöscht. Es muss keiner Verbindung zur DB bstehen.

Das ist schon richtig interessant.
 
hast du eine htaccess im root? schaue dir den inhalt an, ansonsten..keine Ahnung..sorry.
 
ich habe auch htaccess gelöcht. Ich denke ich muss meinen Provider kontaktieren. Danke dir, du hast mir viel geholfen.
 
Zurück
Oben