MySQL-Datenbank mit php durchsuchen.

PHP:
if(isset($_GET["search"])) {
kann das sein das du eine "}" zu wenig gemacht hast, denn jetzt hat die "{" in der ersten Zeile keine zugeordnete "}" mehr

EDIT: Jetzt erhalte ich folgende Fehlermeldung:" Fatal error: Call to a member function fetch_object() on a non-object in /homepages/7/d485168035/htdocs/suche/index.php on line 83"
 
Sorry nochmal, die 2. Vorschleife war nicht geschlossen:
PHP:
                    if(isset($_GET["search"])) {
                        $suchwort = $_GET["search"];
                        $suchwort = explode(" ", $suchwort);
                        $abfrage = "";
                        $a = array('name', 'beschreibung', 'strasse', 'hausnummer', 'plz', 'ort', 'web');
                        for($i = 0; $i < sizeof($suchwort); $i++)
                        {
                            for($ii = 0; $ii < sizeof($a); $ii++)
                            {
                                    if($ii == 0){
                                       $abfrage .= "(";
                                    }
                                    $abfrage .= "`".$a[$ii]."` LIKE '%".$suchwort[$i]."%'";
                                        if($ii < (sizeof($a) - 1)) {
                                            $abfrage .= " OR ";
                                        }else{
                                            $abfrage .= ")";
                                        }
                                    if($i < (sizeof($suchwort) - 1)) {
                                        $abfrage .= " AND ";
                                    }
                              }
                        }
                
                        $host_name  = "DBHost";
                        $database   = "DBName";
                        $user_name  = "DBUser";
                        $password   = "DBPass";
              
                        $db = mysqli_connect($host_name, $user_name, $password, $database);
              
                
                        if(mysqli_connect_errno() == 0)
                        {
                           $sql = "SELECT * FROM `indexcompanies` WHERE " . $abfrage;
                            $ergebnis = $db->query($sql);
                      
                            while($zeile = $ergebnis->fetch_object())
                            {
                                //Div class url
                                echo "<div class='url'>";
                      
                                //Firmenname
                                echo "<a href='http://$zeile->web/'><h3>";
                                echo $zeile->name;
                                echo "</h3></a>";
                      
                                //Adresse
                                echo "<a href='https://www.google.de/maps/place/$zeile->strasse+$zeile->hausnummer+$zeile->plz+$zeile->ort' target='_blank'>";
                                echo $zeile->strasse;
                                echo "&nbsp;";
                                echo $zeile->hausnummer;
                                echo ",&nbsp";
                                echo $zeile->plz;
                                echo "&nbsp;";
                                echo $zeile->ort;
                                echo "</a><br>";
                      
                                //Rufnummern
                                    //Telefon 1 z.B. Festnetz
                                echo "<a href='tel:$zeile->telefoneins'>Tel.:&nbsp;";
                                echo $zeile->telefoneins;
                                echo "</a>&nbsp;|&nbsp;";
                                    //Telefon 2 z.B. Mobil
                                echo "<a href='tel:$zeile->telefonzwei'>Mobil:&nbsp;";
                                echo $zeile->telefonzwei;
                                echo "</a><br>";
                      
                                //Fax
                                echo "<a href='fax:$zeile->fax'>Fax:&nbsp;";
                                echo $zeile->fax;
                                echo "</a><br>";
                      
                                //URL
                                echo "<a href='http://$zeile->web/'>";
                                echo $zeile->web;
                                echo "<br>";
                      
                                //E-Mail
                                echo "<a href='mailto:$zeile->mail'>";
                                echo $zeile->mail;
                                echo "</a>";
                      
                                //Social Media
                                echo "<br>";
                                echo $zeile->socialmedia;
                      
                                //Div class url
                                echo "</div>";
                            }
                        }
                        $db->close();
                    }
 
Sorry nochmal, die 2. Vorschleife war nicht geschlossen:
PHP:
                    if(isset($_GET["search"])) {
                        $suchwort = $_GET["search"];
                        $suchwort = explode(" ", $suchwort);
                        $abfrage = "";
                        $a = array('name', 'beschreibung', 'strasse', 'hausnummer', 'plz', 'ort', 'web');
                        for($i = 0; $i < sizeof($suchwort); $i++)
                        {
                            for($ii = 0; $ii < sizeof($a); $ii++)
                            {
                                    if($ii == 0){
                                       $abfrage .= "(";
                                    }
                                    $abfrage .= "`".$a[$ii]."` LIKE '%".$suchwort[$i]."%'";
                                        if($ii < (sizeof($a) - 1)) {
                                            $abfrage .= " OR ";
                                        }else{
                                            $abfrage .= ")";
                                        }
                                    if($i < (sizeof($suchwort) - 1)) {
                                        $abfrage .= " AND ";
                                    }
                              }
                        }
               
                        $host_name  = "DBHost";
                        $database   = "DBName";
                        $user_name  = "DBUser";
                        $password   = "DBPass";
             
                        $db = mysqli_connect($host_name, $user_name, $password, $database);
             
               
                        if(mysqli_connect_errno() == 0)
                        {
                           $sql = "SELECT * FROM `indexcompanies` WHERE " . $abfrage;
                            $ergebnis = $db->query($sql);
                     
                            while($zeile = $ergebnis->fetch_object())
                            {
                                //Div class url
                                echo "<div class='url'>";
                     
                                //Firmenname
                                echo "<a href='http://$zeile->web/'><h3>";
                                echo $zeile->name;
                                echo "</h3></a>";
                     
                                //Adresse
                                echo "<a href='https://www.google.de/maps/place/$zeile->strasse+$zeile->hausnummer+$zeile->plz+$zeile->ort' target='_blank'>";
                                echo $zeile->strasse;
                                echo "&nbsp;";
                                echo $zeile->hausnummer;
                                echo ",&nbsp";
                                echo $zeile->plz;
                                echo "&nbsp;";
                                echo $zeile->ort;
                                echo "</a><br>";
                     
                                //Rufnummern
                                    //Telefon 1 z.B. Festnetz
                                echo "<a href='tel:$zeile->telefoneins'>Tel.:&nbsp;";
                                echo $zeile->telefoneins;
                                echo "</a>&nbsp;|&nbsp;";
                                    //Telefon 2 z.B. Mobil
                                echo "<a href='tel:$zeile->telefonzwei'>Mobil:&nbsp;";
                                echo $zeile->telefonzwei;
                                echo "</a><br>";
                     
                                //Fax
                                echo "<a href='fax:$zeile->fax'>Fax:&nbsp;";
                                echo $zeile->fax;
                                echo "</a><br>";
                     
                                //URL
                                echo "<a href='http://$zeile->web/'>";
                                echo $zeile->web;
                                echo "<br>";
                     
                                //E-Mail
                                echo "<a href='mailto:$zeile->mail'>";
                                echo $zeile->mail;
                                echo "</a>";
                     
                                //Social Media
                                echo "<br>";
                                echo $zeile->socialmedia;
                     
                                //Div class url
                                echo "</div>";
                            }
                        }
                        $db->close();
                    }

Kein Problem :)
 
Alles läuft jetzt, nur kann ich nicht nach "Elektro 12345" suchen. Es funktioniert nur Elektro. Da die PLZ-Suche aber vorgesehen ist möchte ich auch nach Suchbegriff="Elektro PLZ" suchen können.
Wie muss ich das machen ?
 
schick uns bitte nochmal das Echo von der $sql Variable, denn meines erachtens müsste das jetzt funktionieren.
 
SELECT * FROM `indexcompanies` WHERE (`name` LIKE '%elektro%' OR AND `beschreibung` LIKE '%elektro%' OR AND `strasse` LIKE '%elektro%' OR AND `hausnummer` LIKE '%elektro%' OR AND `plz` LIKE '%elektro%' OR AND `ort` LIKE '%elektro%' OR AND `web` LIKE '%elektro%') AND (`name` LIKE '%26954%' OR `beschreibung` LIKE '%26954%' OR `strasse` LIKE '%26954%' OR `hausnummer` LIKE '%26954%' OR `plz` LIKE '%26954%' OR `ort` LIKE '%26954%' OR `web` LIKE '%26954%')
Fatal error: Call to a member function fetch_object() on a non-object in /homepages/7/d485168035/htdocs/suche/index.php on line 59 -> ist bei deinem Code in PHP Zeile 38. (WHILE)
 
Heute ist scheinbar nicht mein Tag, bei der Fehlersuche:
PHP:
                    if(isset($_GET["search"])) {
                        $suchwort = $_GET["search"];
                        $suchwort = explode(" ", $suchwort);
                        $abfrage = "";
                        $a = array('name', 'beschreibung', 'strasse', 'hausnummer', 'plz', 'ort', 'web');
                        for($i = 0; $i < sizeof($suchwort); $i++)
                        {
                            for($ii = 0; $ii < sizeof($a); $ii++)
                            {
                                    if($ii == 0){
                                       $abfrage .= "(";
                                    }
                                    $abfrage .= "`".$a[$ii]."` LIKE '%".$suchwort[$i]."%'";
                                        if($ii < (sizeof($a) - 1)) {
                                            $abfrage .= " OR ";
                                        }else{
                                            $abfrage .= ")";
                                        }
                            }
                            if($i < (sizeof($suchwort) - 1)) {
                                $abfrage .= " AND ";
                            }
                        }
              
                        $host_name  = "DBHost";
                        $database   = "DBName";
                        $user_name  = "DBUser";
                        $password   = "DBPass";
            
                        $db = mysqli_connect($host_name, $user_name, $password, $database);
            
              
                        if(mysqli_connect_errno() == 0)
                        {
                           $sql = "SELECT * FROM `indexcompanies` WHERE " . $abfrage;
                            $ergebnis = $db->query($sql);
                                     if(is_object($ergebnis)){
                                    while($zeile = $ergebnis->fetch_object())
                                    {
                                        //Div class url
                                        echo "<div class='url'>";
                            
                                        //Firmenname
                                        echo "<a href='http://$zeile->web/'><h3>";
                                        echo $zeile->name;
                                        echo "</h3></a>";
                            
                                        //Adresse
                                        echo "<a href='https://www.google.de/maps/place/$zeile->strasse+$zeile->hausnummer+$zeile->plz+$zeile->ort' target='_blank'>";
                                        echo $zeile->strasse;
                                        echo "&nbsp;";
                                        echo $zeile->hausnummer;
                                        echo ",&nbsp";
                                        echo $zeile->plz;
                                        echo "&nbsp;";
                                        echo $zeile->ort;
                                        echo "</a><br>";
                            
                                        //Rufnummern
                                            //Telefon 1 z.B. Festnetz
                                        echo "<a href='tel:$zeile->telefoneins'>Tel.:&nbsp;";
                                        echo $zeile->telefoneins;
                                        echo "</a>&nbsp;|&nbsp;";
                                            //Telefon 2 z.B. Mobil
                                        echo "<a href='tel:$zeile->telefonzwei'>Mobil:&nbsp;";
                                        echo $zeile->telefonzwei;
                                        echo "</a><br>";
                            
                                        //Fax
                                        echo "<a href='fax:$zeile->fax'>Fax:&nbsp;";
                                        echo $zeile->fax;
                                        echo "</a><br>";
                            
                                        //URL
                                        echo "<a href='http://$zeile->web/'>";
                                        echo $zeile->web;
                                        echo "<br>";
                            
                                        //E-Mail
                                        echo "<a href='mailto:$zeile->mail'>";
                                        echo $zeile->mail;
                                        echo "</a>";
                            
                                        //Social Media
                                        echo "<br>";
                                        echo $zeile->socialmedia;
                            
                                        //Div class url
                                        echo "</div>";
                                    }
                                }
                        }
                        $db->close();
                    }
Folgendes hab ich gemacht:
  • die IF mit dem AND musste aus der 2. FOR raus
  • Die WHILE habe ich mit einer IF versehen, welche überprüft, ob $ergebnis überhaupt ein Object ist.
Gruß Matze.
 

Neue Beiträge

Zurück