Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Dodanie wyszukiwania
Forum PHP.pl > Forum > Przedszkole
Petrus1610
Witajcie!
Dopiero zaczynam zabawę z bazą SQL i prosiłbym o pomoc w dodaniu wyszukiwania po nicku. Zrobiłem metodą prób i blędów taki skrypcik.
Chcialbym dodać wyszkuiwanie po "Name". Czyli jakiś prosty formularz do wpisu nick'a i po kliknięciu wyszukaj wyświetla tylko te nicki z danej tabeli.

  1. <?php $czasgen=microtime(); ?>
  2. <?php require( "ustawienia.php" ); ?>
  3. <center>
  4. <?php echo '<table width="100%" border="1px" cellpadding="0" cellspacing="0">
  5. <td style="text-align:center;font-weight:bold;">Mapa</td><td style="text-align:center;font-weight:bold;">Gracz</td><td style="text-align:center;font-weight:bold;">Steam ID</td><td style="text-align:center;font-weight:bold;">IP</td><td style="text-align:center;font-weight:bold;">Data</td>
  6. <tr style="height:1px; background-color:#000000; font-size:4px;"></tr>';
  7. if(!isset($_GET['page']))
  8. $Page = 'index';
  9. else
  10. $Page = $_GET['page'];
  11. if($Page == 'index')
  12. {
  13. if(!isset($_GET['p']) || intval($_GET['p']) == '0' || intval($_GET['p']) == '1')
  14. $Querys = 0;
  15. else
  16. $Querys = (intval($_GET['p']) - 1) * $QuerysForPage;
  17. }
  18.  
  19. $all = mysql_query("SELECT * from $table ORDER BY Data DESC , IP DESC , SteamID DESC , Name DESC , szMapName DESC LIMIT $Querys, $QuerysForPage")or die(mysql_error()); while ($row = mysql_fetch_array($all)) {
  20. echo '<tr class ="">'; echo "<td>".$row["szMapName"].'</td>'; echo "<td>".$row["Name"].'</td>'; echo "<td>".$row["SteamID"].'</td>'; echo '<td>'.$row["IP"].'</td>'; echo '<td>'.$row["Data"].'</td>'; } ?>
  21. </center>
  22. </table>


Liczę na pomoc bardziej obeznanych osób! Dzięki!
Turson
Było wiele razy. Szukaj
Petrus1610
Wiem, że było... nie mogę sobie poradzić tylko z dodaniem tego do kodu..

@edit 19.02 16.22

Czyli nikt nie pomoże w dodaniu tych kilku linijek? ;/

@odświeżam

Dodatkowo mam problem jak usunąć wpisy z bazy starsze niż 10 dni. Dodaję to, ale nie działa:
Kod
<?
$polecenie = "DELETE FROM `logowanie_dd2` WHERE `Data` > NOW() - INTERVAL 5 DAY";
?>
Turson
To w końcu starsze niż 5 czy 10 dni, bo masz różną wersję
Petrus1610
Cytat(Turson @ 24.02.2014, 20:25:06 ) *
To w końcu starsze niż 5 czy 10 dni, bo masz różną wersję


No jeju to nie ma różnicy. Ma być 10 dni, ale testowałem dla 5ciu, gdyż skrypt mam uruchomiony 11 dni i nie chciałem sprawdzać ostatnich stron, tylko wyraźną różnicę zrobić, abym widział czy usunęlo wpisy.
mar1aczi
Skoro maja być starsze to data ich dodanie powinna być "mniejsza" niż now() - 5 dni (czy 10 dni), nieprawdaż?
Petrus1610
Po zmienie znaczka na 'mniejszy' usunęło i usuwa na bieżąco wszystkie wpisy z bazy.

@up? ...
ilies
Formularz szukania
  1. <form metod="post">
  2. <tr><th>Szukany text</th><td>
  3. <input type="text" name="szukany_tekst">
  4. </td></tr><tr><td colspan="2">
  5. <input type="submit" name="szukaj" value="szukaj">
  6. </td></tr>
  7. </form>

Skrypt szukania, ogólnie to wystarczy do twojego zapytania dodać WHERE, zamiast NAZWA_TABELI wstaw nazwę tabeli według której ma szukać
  1. if(isset($_POST['szukaj'] and !empty($_POST['szukany_tekst'])){
  2. $all = mysql_query("SELECT * from $table WHERE NAZWA_TABELI='".$_POST['szukany_tekst']."' ORDER BY Data DESC , IP DESC , SteamID DESC , Name DESC , szMapName DESC LIMIT $Querys, $QuerysForPage")or die(mysql_error());
  3. }
Turson
Cytat
ogólnie to wystarczy do twojego zapytania dodać WHERE, zamiast NAZWA_TABELI wstaw nazwę tabeli według której ma szukać

lepiej LIKE a nie "=", ponieważ = pokaże tylko identyczne wyniki a LIKE podobne
Petrus1610
Sorki, że dopiero teraz odpisuje, ale nie dałem rady wcześniej.

Odnośnie skryptu wyszukiwania to mial on kilka błędów, ale już sobie z tym poradziłem i działa - dzięki!
Jeżeli ktoś wie jak to bardzo bym prosił jeszcze o to usuwanie wpisów starszych niż 10 dni i wplecenie tego w mój kod, będę wdzięczny.
Turson
Wskazówki:
- DELETE FROM
- WHERE
- operacje na dacie
MrCoody
jakią wartość masz w kolumnie data? czy masz taką ?
plej
Ja dodaje tabele zawsze "wazne_do" i daje podobne zapytanie do tego:
  1. select * from tabela where (wazne_do + INTERVAL 1 day) < NOW()

do wazne_do daje 1dzień bo inaczej usunie mi się odrazu po godzinie 24 i dacie ważności danej. A ma się na koniec dnia usunąć bo nie daje tam godziny w waznosci.

To wyświetla mi rekordy których data się kończy wykonuje inne operacje na nich jeszcze bo kilka tabel jest połączonych z powyższą tabelą.

Może sobie to zrobić podobnie jak wyżej wybierasz stare rekordy pobierasz id starego rekordu i usuwasz w moim przypadku wykonuje kilka czynności.

@edit

pole w tabeli wazne_do daje na wartość "date" jak by coś.
Petrus1610
Nie chce mi to działać. Szukam po necie i wyporóbowałem chyba z 100 możliwości i nie chce to działać.
Obecnie mam coś takiego:

  1. $sql_usuwanie = mysql_query("DELETE * FROM `$table` WHERE DATE_ADD(NOW(), INTERVAL -10 DAY) < `Data`");


1. Chce usuwać wpisy starsze niż 10 dni.
2. Mam tabelkę z datą 'Data', która jest w formacie 02/27/2014 - 20:11:14
Turson
Kolumna jest typu datetime?
Petrus1610
Nie wiem do końca co to oznacza ;D

Dane w tym przypadku zapisywane są z serwera gry plikiem .amxx w ten sposób:

  1. new DATA[32];
  2. get_time ("%m/%d/%Y - %H:%M:%S", DATA, 31);
  3. new query[1001]
  4. format(query,1000,IMPORRT_DB,DATA)
  5. SQL_ThreadQuery(SqlConnection,"QueryCreateTable",query)
  6. RETURN PLUGIN_CONTINUE;


To jak, pomoże ktoś?

Może irytują Was moje pytania, ale jestem laikiem i niepotrafie zrobić tego samemu. Szukałem wiele razy w necie i próbowałem to robić, ale nie działa mi.

dzięki!
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.