[MySQL] Es werden alle Daten aus der Datenbank aufgelistet ohne Sucheingabe.

nitro

Grünschnabel
Hallo, ich tüfftel schon seit tagen umher
Mein problem ist dass wenn ich die Seite aufrufe spuckt mir die datenbank alles aus ohne das ich eine suche gestartet habe und das möchte ich ja nicht sondern die abfrage sollen ja erst bei der sucheanfrage erfolgen. hier mal der code

PHP:
// Startet den Timer
$timer = startTime();

// Die aktuell angeforderte Seite
$seiteAktuell = $_GET['site'] + 0;

// Falls noch keine Seitenzahl übergeben wurde, den Wert auf die erste Seite setzen
if(empty($seiteAktuell))
	$seiteAktuell = 1;
	
// Berechnet die nächsten Eintraege aus MAX_EINTRAEGE
$start = $seiteAktuell * $maxEintraege - $maxEintraege; 

// Holt die aktuellen Datensätze aus - define("MAX_EINTRAEGE",10)
//$result = @mysql_query("SELECT * FROM suchmaschine LIMIT $start, ".$maxEintraege);
$searchSecure = @mysql_real_escape_string(stripslashes($_GET['search']));
$result = @mysql_query("SELECT * FROM suchmaschine WHERE words LIKE('%".$searchSecure."%') LIMIT $start, ".$maxEintraege) or die(mysql_error());

// Ermittelt die Gesamtzahl der Datensätze
//$resultGesamt = @mysql_query("SELECT COUNT(*) AS menge FROM suchmaschine"); 
$resultGesamt = @mysql_query("SELECT COUNT(*) AS menge FROM suchmaschine WHERE words LIKE('%".$searchSecure."%')");
$Eintraege = @mysql_result($resultGesamt,0,"menge");

// Errechnet die kompletten Seiten
$SitesComplete = ceil($Eintraege / $maxEintraege);

// Navigation mit in Ausgabe einfügen
$ausgabe = navigationsLeiste($SitesComplete,$seiteAktuell,$navLeiste); 

$ausgabeText = makeText($ausgabe,$seiteAktuell,$href);

$ausgabeGraph = makeGraph($ausgabe,$seiteAktuell,$link,$grafik);

// Ausgabe der Seite
if(@mysql_num_rows($result)){
while($row = @mysql_fetch_array($result)){
       $sout.='<table style="background-color:#FFFFCC; font-weight:normal; width:100%; cellspacing:0; cellpadding:0; border:0;">';  
 	$sout.='<a href="'.$row[4].'">'.$row[3]. '</a> ' . '<a href="#" id="'.$row[5].'">' . '<img src="infos.png" width="18" height="18"></img></a>' . '</a><br />';
  	$sout.='<font color="#B8B8B8">'.$row[4].'</font>' . '<br />';
 	$sout.=$row[2];
       $sout.='</table><br />';
}
        }else{
                $soute.='Ihre Suche ergab 0 Treffer<br />';
        }
// Beendet den Timer
$endTime = endTime($timer);

$infoText = makeInfo($endTime,$seiteAktuell,$maxEintraege,$Eintraege,$infoText);
$leisteBottom = preg_replace("/{TABLENAVI}/", $ausgabeGraph . $ausgabeText, $tableNavi);
mysql_close();
?>

Hier die suchanfrage in meiner search.php
HTML:
<form id='q' name='q' method='get' action='<?php echo $_SERVER['SCRIPT_SITE']; $href[1]; ?>'>
<input id='search' type='text' name='search' value='<?php if (isset($_REQUEST['search'])) { $name = $_REQUEST['search']; echo htmlspecialchars($_REQUEST['search']); } ?>'><input class='searchbutton' type='submit' value='' />
</form>

ergebnisausgabe
PHP:
<?PHP echo  $sout; ?>

Ungefähr 124 Ergebnisse (0.000 Sekunden)
und ich hatte noch nicht einmal was eingegeben.

habe schon versucht mit:
PHP:
$searchSecure = @mysql_real_escape_string(stripslashes($_GET['search']));
$result = @mysql_query("SELECT * FROM suchmaschine WHERE words LIKE('%".$searchSecure."%') LIMIT $start, ".$maxEintraege) or die(mysql_error());
zu spielen aber klappt nicht wie es sein soll.

wenn ich auf suche klicke kommt die suche ja auch wie sie soll und der findet auch wie er es soll aber wenn ich die suchseite aufrufe kommt immer wieder dass gleiche das der alles zeigt ohne sucheingabe.

hoffe konnte genug hinweise geben und ihr mir helfen.
danke in vorraus. :)
 
Gebe dem Submit-Button einen Namen und prüfe beim Aufruf der Seite ob dieser angeklickt wurde.

PHP:
if (isset($_GET['dein_name']) && isset($_GET['search']) {
    // hier den Code um die Abfrage auszuführen und das Ergebnis anzuzeigen
}
 
Hier mal ein einfaches Beispiel zu DB-Ausgaben verbunden mit einem Filter-Formular
PHP:
<!-- Formular -->
<form action="?" method="post">
    Text 1:<input type="text" name="text1" /><br />
    Text 2:<input type="text" name="text2" /><br />
    Zahl 3:<input type="text" name="zahl3" /><br />
    <input type="submit" name="submit" />
</form>
<hr />

<?php
// Prüfen ob das Formular gesendet wurde
if(isset($_POST['submit'])){
    // Array initializieren. Falls kein argument angegeben wurde,
    // dann ist die Argumentliste ein leeres Array
    $wheres = array();
    //Jedes Feld prüfen und ggf in den Where-Array einfügen
    if($_POST['text1']) $wheres[] = "text1='{$_POST['text1']}'";
    if($_POST['text2']) $wheres[] = "text2='{$_POST['text2']}'";
    if($_POST['zahl3']) $wheres[] = "zahl3={$_POST['zahl3']}";

    // WHERE-Tel des SQL-String zusammenstellen
    if(count($wheres)>0) $wherestring = "WHERE ".implode(' AND ', $wheres);
    //SQL-String zusammensetzen
    $sql = "SELECT * FROM mytable {$wherestring}";

    //--------------------- TODO -----------------------
    //TODO: Sql an die DB absetzen, Resultat auswerten und als Tabelle ausgeben
    echo $sql;
}
?>
 
Hallo tombe,

Danke für die schnelle Antwort.

ich habe so:
PHP:
if (isset($_GET['s']) && isset($_GET['search']) { 
    // hier den Code um die Abfrage auszuführen und das Ergebnis anzuzeigen 
<form id='q' name='q' method='get' action='<?php echo $_SERVER['SCRIPT_SITE']; $href[1]; ?>'>
<input id='search' type='text' name='search' value='<?php if (isset($_REQUEST['search'])) { $search = $_REQUEST['search']; echo htmlspecialchars($_REQUEST['search']); } ?>'><input name='s' class='searchbutton' type='submit' value='' />
</form>
}

leider gibt es da ein fehler
Parse error: syntax error, unexpected '{'
 
Sorry da fehlt eine runde klammer am Ende:

PHP:
if (isset($_GET['s']) && isset($_GET['search'])) {

Wobei du ja jetzt die Form ausblendest so bald die Seite per Klick auf den Suchen Button zusammen mit Suchbegriff aufgerufen wurde.

Du musst aber den Teil in den IF-Block packen wo die SQL-Anweisung ausgeführt und das Ergebnis angezeigt wird.

Siehe auch das Beispiel von Yaslaw!
 
Sorry da fehlt eine runde klammer am Ende:

PHP:
if (isset($_GET['s']) && isset($_GET['search'])) {

Wobei du ja jetzt die Form ausblendest so bald die Seite per Klick auf den Suchen Button zusammen mit Suchbegriff aufgerufen wurde.

Du musst aber den Teil in den IF-Block packen wo die SQL-Anweisung ausgeführt und das Ergebnis angezeigt wird.

Siehe auch das Beispiel von Yaslaw!


Genau das wars Danke tombe,
nun ist es aber so wenn das feld -> input leer ist und enter drücke das der dann wieder alles aufgelistet.

@Yaslaw du liegst mit dem code schon richtig aber ich brauche nur 1 suchfeld und ausgaben sind 10 pro seite.. wenn ich als suche help eingebe kommt die ausgabe auch richtig aber wie gesagt drückt man enter ohne wort dann spuckt der die ganzen einträge aus.

ach tombe jetzt wo ich es gerade sehe
wenn man auf search.php kommt wo man ja die suche startet ist zwar nix mehr zu sehen aber er zeigt komischer weise noch
Ungefähr 124 Ergebnisse (0.000 Sekunden)
und die dazu gelisteten seiten anzahl
1 2 3 4 5 6 7 Vorwärts
aber sonst liegen wa schon mal richtig
aber ich denke mal das liegt eher an was anderes, fleicht müsste man doch wie Yaslaw meint mit ein array arbeiten.
 
Ok, dann erweitern wir den IF-Block noch ein bisschen.

PHP:
if (isset($_GET['s']) && isset($_GET['search']) && trim($_GET['search']) != "") {
    // und hier wieder dein Code
}

Du musst dir einfach mal deinen eigenen Code anschauen und dir dann überlegen was davon beim "normalen" Aufrufen der Seite und was nur beim "Suchen" ausgeführt werden darf.

- Wenn die Seite normal aufgerufen wird, darf nur die Suchmaske angezeigt werden.

- Wenn die Seite mit Suchbegriff aufgerufen wird, nur dann dürfen die SQL-Anweisungen usw. durchgeführt werden.
 
Zurück