Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Problem z wyszukaniem
Forum PHP.pl > Forum > Przedszkole
hipis666
Witam
jako ze od paru godzin męczę się z sql mam pytanie do Was

są dwie tabele w bazie
ok poprawka - dolozenie tabeli

  1. CREATE TABLE IF NOT EXISTS `obiekty` (
  2. `id` int(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `nazwa` text COLLATE utf8_polish_ci,
  4. `typ` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
  5. `miasto` varchar(50) COLLATE utf8_polish_ci DEFAULT NULL,
  6. `ulica` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=12 ;
  9.  
  10. CREATE TABLE IF NOT EXISTS `uzytkownicy` (
  11. `id` int(11) NOT NULL AUTO_INCREMENT,
  12. `identyfikator` int(6) DEFAULT NULL,
  13. `nazwisko` varchar(30) COLLATE utf8_polish_ci DEFAULT NULL,
  14. `imie` varchar(30) COLLATE utf8_polish_ci DEFAULT NULL,
  15. `stopien` varchar(50) COLLATE utf8_polish_ci DEFAULT NULL,
  16. `jednostka` varchar(255) COLLATE utf8_polish_ci DEFAULT NULL,
  17. PRIMARY KEY (`id`)
  18. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=31 ;
  19.  
  20. CREATE TABLE IF NOT EXISTS `user_obie` (
  21. `id` int(11) NOT NULL AUTO_INCREMENT,
  22. `id_user` int(11) NOT NULL,
  23. `id_obi` int(11) NOT NULL,
  24. PRIMARY KEY (`id`)
  25. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=4 ;
  26.  

formularz
  1. <h2>Szukaj:</h2>
  2. <form action="" method="POST">
  3. <input type="text" name="szukana" value="<?php echo $_POST['szukana'];?>" /><br />
  4. <input type="submit" value="ok" />
  5. </form>

kod php
  1.  
  2. $sql = 'SELECT * FROM uzytkownicy WHERE identyfikator like "%'.$_POST['szukana'].'%" or nazwisko like "%'.$_POST['szukana'].'%" or imie like "%'.$_POST['szukana'].'%" or stopien like "%'.$_POST['szukana'].'%" or jednostka like "%'.$_POST['szukana'].'%" ';
  3.  
  4. $sql2 = 'SELECT * FROM obiekty WHERE nazwa like "%'.$_POST['szukana'].'%" or typ like "%'.$_POST['szukana'].'%" or ulica like "%'.$_POST['szukana'].'%" or miasto like "%'.$_POST['szukana'].'%" ';
  5.  
  6. mysql_query("SET NAMES utf8");
  7. $wynik = mysql_query($sql);
  8.  
  9. if(mysql_num_rows($wynik) > 0) {
  10.  
  11. echo '<table cellpadding="2" border=1>';
  12. while($r = mysql_fetch_assoc($wynik)) {
  13.  
  14. echo "<tr>";
  15. echo "<td>".$r['id']."</td>";
  16. echo "<td>".$r['identyfikator']."</td>";
  17. echo "<td>".$r['nazwisko']."</td>";
  18. echo "<td>".$r['imie']."</td>";
  19. echo "<td>".$r['stopien']."</td>";
  20. echo "<td>".$r['jednostka']."</td>";
  21. echo "</tr>";
  22. echo "</table>";
  23. }

i teraz chciałbym poprzez wyszukanie jakiejkolwiek frazy wyświetlić na stronie wszystkie mozliwe opcje
z jednej tabeli mi się to udaje ale z połączeniem obu mam problem

kombinowałem z UNION ale cos mi to nie idzie
_____________________
z góry dzięki za pomoc
K.
longinus_torwaldzki
Cześć,

byćmoże się mylę, ale proponowane przez Ciebie rozwiązanie jest nie logiczne. Te dwie tabele nie mają ze sobą nic wspólnego i zarówno wyszukiwanie jak i prezentacja danych powinny odbyć się w dwóch krokach.

Kod
$sql = 'SELECT * FROM uzytkownicy WHERE identyfikator like "%'.$_POST['szukana'].'%" or nazwisko  like "%'.$_POST['szukana'].'%" or imie  like "%'.$_POST['szukana'].'%" or stopien  like "%'.$_POST['szukana'].'%" or jednostka  like "%'.$_POST['szukana'].'%"  ';

$sql2 = 'SELECT * FROM obiekty WHERE nazwa like "%'.$_POST['szukana'].'%" or typ  like "%'.$_POST['szukana'].'%" or ulica  like "%'.$_POST['szukana'].'%" or miasto  like "%'.$_POST['szukana'].'%"  ';
  
    mysql_query("SET NAMES utf8");    
    $wynik = mysql_query($sql);

    if(mysql_num_rows($wynik) > 0) {
  
        echo '<table cellpadding="2" border=1>';
        while($r = mysql_fetch_assoc($wynik)) {

                echo "<tr>";
                echo "<td>".$r['id']."</td>";
                echo "<td>".$r['identyfikator']."</td>";
                echo "<td>".$r['nazwisko']."</td>";
                echo "<td>".$r['imie']."</td>";
                echo "<td>".$r['stopien']."</td>";
                echo "<td>".$r['jednostka']."</td>";
        echo "</tr>";  
        echo "</table>";
    }

   $wynik = mysql_query($sql2);

    if(mysql_num_rows($wynik) > 0) {
  
        echo '<table cellpadding="2" border=1>';
        while($r = mysql_fetch_assoc($wynik)) {

                echo "<tr>";
                echo "<td>".$r['id']."</td>";
                echo "<td>".$r['nazwa']."</td>";
                echo "<td>".$r['typ']."</td>";
                echo "<td>".$r['ulica']."</td>";
                echo "<td>".$r['miasto']."</td>";
              
        echo "</tr>";  
        echo "</table>";
    }

hipis666
dzięki za info
tak coś czułem ze ta droga niewiele zdziałam
zatem może tak

trzecia tabela trzyma id użytkownika i id przypisanego do niego obiektu
jak zadać zapytanie aby otrzymać takie coś
wyszukać użytkownika przypisanego do obiektu lub wyszukać obiekt przypisanego do użytkowników
no chyba ze za dużo kombinuje

pozdro
K.
CuteOne
Użyj LEFT JOIN smile.gif

users - user_id | user_name
objects - object_id | object_name
users_objects - user_id | object_id

  1. SELECT u.user_name
  2. FROM
  3. objects o
  4. LEFT JOIN users_objects uo ON(uo.object_id = o.object_id)
  5. LEFT JOIN users u ON(uo.user_id = u.user_id)
  6. WHERE
  7. o.object_name = 'obiekt'


Podstaw to do swojego zapytania i gotowe smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.