Andreas Korthaus: temporäre Tabellen

Beitrag lesen

Hallo!

Danke für die Erklärungen zu Transaktionen, ich wußte das nur so halb.

Doch, ich kenn jemand der am Stidieren ist, und es sehr interresant findet.

Kommt auch drauf an wo und was genau man studiert, hioer in Aachen, TH, soll das mit mathe sehr extrem sein. An der FH dagegen schon ganz anders, erheblich praxisnäher.

Noch eine Frage: Ich bin ebenfalls gerade am Schreiben einer Suchmaschiene für eine Internetseite und wollte daher fragen, ob du den Teil deines Skriptes in dem User-Eingaben in SQL geparst wird sehen, da ich mir da noch nicht so sicher bin, wie ich das machen soll.

Obwohl ich den Satz jetzt nicht wirklich verstehe, hier mal mein PARSE-Teil, aber ich warne, das ist noch eine "Großbaustelle", ich ändere noch immer viel zu viel, als das es ein vernünftiger Code wäre

function query($sql){
 global $link;
 $result = mysql_query($sql,$link)
  or die ("Folgende SQL-Abfrage ist gescheitert: ".$sql." <br>\n MySQL-Fehlermeldung: ".mysql_error()." (".mysql_errno().")");
 return $result;
}

if ($_GET['submit']=="Suche starten"){

$limit = 1000;

$such_array = explode (" ",$_GET['suchausdruck']);
foreach ($such_array as $teilstring) {
    if(substr($teilstring,0,1)=="+") {
        $and_array[] = substr($teilstring,1);
    }
   else if(substr($teilstring,0,1)=="-") {
        $not_array[] = substr($teilstring,1);
    }
    else {
        $rest_array[] = $teilstring;
    }
}

if($and_array){
    foreach($and_array as $teilstring) {
        if ($bedingung_vorhanden == 1) {
            $query_where_bedingung .= " AND";
        }
        $query_where_bedingung .= "
MATCH (topic,title,name,body) AGAINST ('".mysql_escape_string($teilstring)."')";
        $bedingung_vorhanden = 1;
    }
}

if($not_array){
    foreach($not_array as $teilstring) {
        if ($bedingung_vorhanden == 1) {
            $query_where_bedingung .= " AND";
        }
        $query_where_bedingung .= "
!MATCH (topic,title,name,body) AGAINST ('".mysql_escape_string($teilstring)."')";
        $bedingung_vorhanden = 1;
    }
}
if($rest_array){

if($not_array || $and_array || $_GET['and'] != 1){
        if ($bedingung_vorhanden == 1) {
            $query_where_bedingung .= " AND";
        }
        $query_where_bedingung .= "
MATCH (topic,title,name,body) AGAINST ('".mysql_escape_string(implode(" ",$rest_array))."')";
    }
    else{
        foreach($rest_array as $teilstring) {
            if ($bedingung_vorhanden == 1) {
                $query_where_bedingung .= " AND";
            }
         $query_where_bedingung .= "
MATCH (topic,title,name,body) AGAINST ('".mysql_escape_string($teilstring)."')";
         $bedingung_vorhanden = 1;
        }
    }
}

$query_string = "SELECT id,topic,title,name,time
FROM selfarchiv
WHERE";
$query_string .= $query_where_bedingung;

if($_GET['Verfasser']) {
    $query_string .= "
AND INSTR(name,'".mysql_escape_string($_GET['Verfasser'])."')>0";
}
if($_GET['Kategorie']) {
    $query_string .= "
AND topic = '".mysql_escape_string($_GET['Kategorie'])."'";
}
$query_string .= "
LIMIT 0, $limit";

$full_query = "CREATE TEMPORARY TABLE temp_tabelle TYPE=HEAP
".$query_string;

$filter_query = "SELECT * FROM temp_tabelle ORDER BY time DESC LIMIT 0, 100";

$temp_result = query($full_query);
$result = query($filter_query);
}

Wie gesagt, keine Gewähr, ich habe das ganze Konzept zum testen mehrmals grundlegend umgestellt, und noch nicht alles angepasst...

Ist übrigens PHP.

Grüße
Andreas