Ankündigung

Einklappen
Keine Ankündigung bisher.

Meine kleine Suchmaschine (PHP,mySQL)

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Meine kleine Suchmaschine (PHP,mySQL)

    Hallo allerseits,

    habe mich vor einigen Augenblicken registiert und braucht ein wenig hilfe. Ich baue gerade meine eigene kleine Suchmaschine (PHP,mySQL), die Webseiten durch Keywords sucht.

    Hat soweit gut funktioniert, aber wenn man die Seite neu läd, werden sofort alle Datensätze, die ich in der Datenbank stehen habe unter dem Suchfeld angezeigt. Wie kann ich das verhindern?

    Und wie kann ich einstellen, dass z.B nur 10 Suchergebnisse pro Seite angezeigt werden und wie kann ich die Elemente, die ich in PHP geschrieben habe mit CSS anpassen?

    Würde ich über ein wenig hilfe sehr sehr freuen... Danke!

    Achja und hier mein Code

    PHP-Code:
        <?php
        
            $k 
    $_GET['k'];
            
            
    $terms explode(" "$k);
            
            
    $query "SELECT * FROM search WHERE ";
            
            foreach (
    $terms as $each) {
                
    $i++;
                
                if (
    $i == 1)
                    
    $query .= "keywords LIKE '%$each%' ";
                
                else
                    
    $query .= "OR keywords LIKE '%$each%' ";
                
            
            }
            
            
    // connect
            
    mysql_connect("localhost""name""passwort");
            
    mysql_select_db ("Datenbank");
            
            
    $query mysql_query($query);
            
    $numrows mysql_num_rows($query);
            
            if (
    $numrows 0) {
            
                while (
    $row mysql_fetch_assoc($query)) {
                    
    $id $row['id'];
                    
    $title $row['title'];
                    
    $description $row['description'];
                    
    $keywords $row['keywords'];
                    
    $link $row['link'];
                    
                    echo 
    "<h4><a href='$link' title='$title'>$title</a></h4>
                    <h5>
    $description</h5><br />
                    <h6>
    $link</h6>";
                    
                }
                
            }
            
            
            else
                echo 
    "No results found for \"<b>$k</b>\"";
                
                
            
            
            
    // disconnect
            
    mysql_close();
        
        
    ?>


  • #2
    Herzlich Willkommen im Forum,

    Hat soweit gut funktioniert, aber wenn man die Seite neu läd, werden sofort alle Datensätze, die ich in der Datenbank stehen habe unter dem Suchfeld angezeigt. Wie kann ich das verhindern?
    Was heißt "unter dem Suchfeld angezeigt"? Für die Ausgaben bist Du doch selbst verantwortlich...
    EDIT: Das kommt, weil Du nicht prüfst ( isset ), ob $_GET['k'] überhaupt übergeben wurde. Der erste Aufruf sendet also eine Anfrage an die DB ohne WHERE-Klausel
    Und wie kann ich einstellen, dass z.B nur 10 Suchergebnisse pro Seite angezeigt werden
    Das nennt sich Pagination
    und wie kann ich die Elemente, die ich in PHP geschrieben habe mit CSS anpassen?
    Einfach den Elementen eine CSS-Klasse mitgeben:
    PHP-Code:
    echo '<div class="meineKlasse">thats all</div>'
    Zum Code:
    Woher kommt $i bzw. wo wird das initiiert und wozu brauchst Du den?
    PHP-Code:
    $aWhereItems = array();
            
    foreach (
    $terms as $each) {
                
        
    $aWhereItems[] = "keywords LIKE '%$each%'";

    }

    $query "SELECT * FROM search WHERE " implode' OR '$aWhereItems ); 
    Warum MySQLi/PDO, anstatt mysql_* Extension?
    Die Erweiterung um die mysql_* Funktionen wird seit längerer Zeit bereits als deprecated eingestuft und steht in der PHP-Version > 5.5.0 nicht mehr zur Verfügung. Das heißt daß Scripte, die auf dieser Erweiterung basieren für Fehlermeldungen sorgen.
    Daher sollte man rechtzeitig auf eine der beiden Erweiterungen MySQLi oder PDO umsteigen.
    Die weit verbreitete Einstellung "mache ich später, im Moment muß ich das erstmal fertig kriegen" ist nicht angebracht, weil die Erfahrung zeigt, daß man es hinterher erstmal nicht in Angriff nimmt, bis es dann meistens zu spät ist.

    Ach ja... und bitte keine Userdaten ungefiltert an die DB schicken!
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Welchen Teil von PHP-Code müsste ich denn ersetzten? Ich verstehe das leider gerade nicht so. Also, wo soll ich den PHP denn einfügen bzw durch was ersetzen?

      PHP-Code:
      $aWhereItems = array();
              
      foreach (
      $terms as $each) {
                  
          
      $aWhereItems[] = "keywords LIKE '%$each%'";

      }

      $query "SELECT * FROM search WHERE " implode' OR '$aWhereItems ); 

      Kommentar


      • #4
        Welchen Teil von PHP-Code müsste ich denn ersetzten?
        Du hast ein foreach gepostet und ich habe Dir eine Alternative gezeigt, die Frage dürfte sich nicht stellen...
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar

        Lädt...
        X