MySQL-Datenbank mit php durchsuchen.

Sorry ich meinte, dass du zeigen sollst, was im $sql drin steht, also was dir mit echo $sql; ausgegeben wird.

Aber wieso nimmst du immer noch mehrere Abfragen?

Schau dir auch nochmal meinen letzten Post, den hatte ich nochmal editiert.
 
ja der funktioniert leider nicht bzw. auch nur so, dass ich zwar bei elektriker ne ausgabe erhalte aber nicht mehr bei elektriker plus plz :(
 
PHP:
$ergebnis = $db->query($sql);
                               
                            while($zeile = $ergebnis->fetch_object())
                            {
                                //Div class url
                                echo "<div class='url'>";
                               
                                //Firmenname
                                echo "<div class='$zeile->premium'><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>";
                            }
 
Du sollst bitte zwischen den beiden Zeilen:
PHP:
                           $sql = "SELECT * FROM `indexcompanies` WHERE " . $abfrage;
                            $ergebnis = $db->query($sql);
den Inhalt der $sql Variable ausgeben lassen:
PHP:
                           $sql = "SELECT * FROM `indexcompanies` WHERE " . $abfrage;
echo $sql;
                            $ergebnis = $db->query($sql);
und uns dann hier posten, was dir die Seite als Inhalt der Variable wiedergibt.
 
SELECT * FROM `indexcompanies` WHERE `beschreibung` LIKE '%elektro%'AND`beschreibung` LIKE '%12345%'OR`plz` LIKE '%elektro%'AND`plz` LIKE '%12345%' ...... Wenn ich mir das so anschaue kann es ja nicht funktionieren, weil es keine plz elektro gibt und keine beschreibung 12345 gibt
 
sorry war mein Denkfehler gewesen, aber versuch mal das:
PHP:
<?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++)
                            {
                            $abfrage .= "`".$a[$ii]."` LIKE '%".$suchwort[$i]."%'";
                                if($ii < (sizeof($a) - 1)) {
                                    $abfrage .= " OR ";
                                }
                            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();
                    }
                ?>

und wenn es wieder nicht funktioniert, dann bitte gleich das echo vom $sql mit senden und zwar komplett.
 
jetzt besteht allerdings das Problem, dass er in allen Spalten nach dem Suchbefehl sucht, er soll allerdings nur in der Spalte `beschreibung` und in der Spalte `plz` nach dem Suchbegriff suchen :)
 
Sorry noch nen kleinen Denkfehler gehabt:
PHP:
<?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();
                    }
                ?>

Das müsste jetzt aber funktionieren, denn die OR mussten in die Klammer gesetzt werden, denn sonst wurden das letzte aus dem ersten und das erste aus dem zweiten durchlauf mit dem AND verglichen und die anderen der durchläufe zu einander nur mit OR, aber nicht mit bei dem AND in betracht gezogen.
 
Das ist bei deiner Art der Programmierung ganz normal, dass alle in Frage kommenden Spalten durchsucht werden.

Wenn du es anders haben willst, dann musst du noch ausgeklügelte String-Vorgaben dir ausdenken, welche du zum Unterscheiden der Eingaben verwenden kannst oder du nimmst mehrere Formularfelder.

EDIT: Nun solltest du noch in Betracht ziehen, dass du am besten noch mit Statements arbeiten solltest, denn sonst gibst du Hackern leichtes Spiel.
 

Neue Beiträge

Zurück