tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
417
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    nitro nitro ist offline Grünschnabel
    Registriert seit
    Aug 2011
    Beiträge
    3
    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-Code:
    // 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-Code:
    <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-Code:
    <?PHP echo  $sout?>
    Ungefähr 124 Ergebnisse (0.000 Sekunden)
    und ich hatte noch nicht einmal was eingegeben.

    habe schon versucht mit:
    PHP-Code:
    $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. :)
     

  2. #2
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Gebe dem Submit-Button einen Namen und prüfe beim Aufruf der Seite ob dieser angeklickt wurde.

    PHP-Code:
    if (isset($_GET['dein_name']) && isset($_GET['search']) {
        
    // hier den Code um die Abfrage auszuführen und das Ergebnis anzuzeigen

     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  3. #3
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Hier mal ein einfaches Beispiel zu DB-Ausgaben verbunden mit einem Filter-Formular
    PHP-Code:
    <!-- 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;
    }
    ?>
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  4. #4
    nitro nitro ist offline Grünschnabel
    Registriert seit
    Aug 2011
    Beiträge
    3
    Hallo tombe,

    Danke für die schnelle Antwort.

    ich habe so:
    PHP-Code:
    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 '{'
     

  5. #5
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Sorry da fehlt eine runde klammer am Ende:

    PHP-Code:
    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!
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  6. #6
    nitro nitro ist offline Grünschnabel
    Registriert seit
    Aug 2011
    Beiträge
    3
    Zitat Zitat von tombe Beitrag anzeigen
    Sorry da fehlt eine runde klammer am Ende:

    PHP-Code:
    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.
     

  7. #7
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Ok, dann erweitern wir den IF-Block noch ein bisschen.

    PHP-Code:
    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.
     
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 07.07.10, 13:00
  2. Antworten: 6
    Letzter Beitrag: 09.10.07, 20:42
  3. Schriftarten werden nicht aufgelistet
    Von ezias im Forum Office-Anwendungen
    Antworten: 2
    Letzter Beitrag: 06.11.05, 16:42
  4. Es werden nicht alle Daten aus DB ausgelesen
    Von newwarrior im Forum PHP
    Antworten: 4
    Letzter Beitrag: 11.07.05, 18:24
  5. Tubes werden nicht aufgelistet
    Von Titania im Forum Sonstige Grafik-Programme
    Antworten: 0
    Letzter Beitrag: 28.05.04, 17:28

Stichworte