Autor Zpráva
Jan Žák
Profil
Dobrý den všem,

rád bych vás požádal o radu či pomoc. Mám napsaný jednoduchý příkaz na vyhledání ve třech tabulkách, viz níže:
                <?php
        // gets value sent over search form
        if (isset($_GET['query']))
         $query = $_GET['query'];

        // you can set minimum length of the query if you want
        $min_length = 3;

        // if query length is more or equal minimum length then     
        if(strlen($query) >= $min_length){

          // changes characters used in html to their equivalents, for example: < to &gt;
          $query = htmlspecialchars($query); 

          // makes sure nobody uses SQL injection         
          $query = mysql_real_escape_string($query);

          $results = "(SELECT company_name, street FROM company WHERE company_name LIKE '%" . $query . "%' OR street LIKE '%" . $query ."%') 
                      UNION
                      (SELECT firstname, lastname FROM contacts WHERE firstname LIKE '%" . $query . "%' OR lastname LIKE '%" . $query ."%') 
                      UNION
                      (SELECT contract_name, contract_second_name FROM contracts WHERE contract_name LIKE '%" . $query . "%' OR contract_second_name LIKE '%" . $query ."%')";
          $result = mysql_query($results) or die ("Unable to select data because: ".mysql_error());

          // if one or more rows are returned do following
          if ($result && mysql_num_rows($result) > 0) {

            // $results = mysql_fetch_array($raw_results) puts data from database into array, while it's valid it does the loop
            while($row = mysql_fetch_array($result)){
        ?>

Pak jen vyhledané fráze vypíšu
<td><?php echo $row['company_name']; ?> <?php echo $row['street']; ?></td>

Sice je to takové krkolomné ale funguje to. Rád bych ale ten výpis udělal aby se mi vypsali hodnoty z tabulky company pak z tabulky contacts a pak z poslední contracts. Toto by bylo odděleno třeba nadpisem.
Lze tohoto nějak dosáhnout? Díky moc všem.
Keeehi
Profil
Dá se sestavit i takový dotaz, který by to zvládl, ale mnohem jednodušší mi přijde ten dotaz rozdělit na 3 a vypsat každý zvlášť

Řádek 13. tam nemá co dělat. V databázi by data neměla být nijak escapovaná. Funkci htmlspecialchars bys měl volat až při výpisu dat do html stránky. Kdyby jsi data vypisoval třeba do části, kde je javascript, použil by jsi zase úplně jinou escapovací funkci.
Jan Žák
Profil
Keeehi:
Děkuji za odpověď, asi to bude opravdu lehčí to třikrát vypsat a díky za info ohledně řádku 13, to jsem si neuvědomil.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0