Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
Salur
Witam,
Czy moglby mi jakis kolega powiedziec lub rzucic kawalkiem kodu jak zrobic wyszukiwarke ktora bedzie wyszukiwala uzytkownika po nicku i wrzucala na strone edycji danego uzytkownika, edycja usera znajduje sie pod tym linkiem i id= to id uzytkownika.
localhost/?p=players&id=1
tomek200
Pokaż strukturę tabeli. I czy masz coś zrobione w PHP?
Salur
W tabelce user_data mam kolumny id, nick , email itd.
Co do skryptu to jeszcze nic nie napisalem.
tomek200
Jeśli dobrze zrozumiałem to masz coś takiego:
  1. $nick = $_GET['p'];
  2. $connect = new mysqli('localhost','user','haslo','baza');
  3.  
  4. $zapytanie = $connect->query("SELECT * FROM user_data WHERE nick='$nick'");
  5. $ile = $zapytanie->num_rows;
  6. if ($ile != 0) {
  7.  
  8. $wynik = $zapytanie->fetch_assoc();
  9.  
  10. echo $wynik['id'];
  11. echo $wynik['nick'];
  12. echo $wynik['email'];
  13. // etc.
  14. }else{
  15. echo 'Nie odnaleziono takiego gracza.';
  16. }
Salur
Tak tylko ja juz napisalem edycje usera w innym pliku tzn. players.php ten plik wyswietla liste uzytkownikow i po kliknieciu na uzytkownka wrzuca mnie na edycje tego usera, dodam ze wtedy znajduje go po id typu ?p=players&id=idgracza
I teraz chcialbym aby po wpisaniu nicku w wyszukiwarce wrzucalo mi na taki adres z odpowiednim id. Tzn. Localhost/?s=players&id=
Nie chce aby mi zwracalo wyniki lecz od razu wrzucalo na strone profilu.
tomek200
  1. $nick = $_GET['p'];// To co user wpisze w wyszukiwarce
  2. $connect = new mysqli('localhost','user','haslo','baza');
  3.  
  4. $zapytanie = $connect->query("SELECT * FROM user_data WHERE nick='$nick'");
  5. $ile = $zapytanie->num_rows;
  6. if ($ile != 0) {
  7.  
  8. for ($i=0; $i < $ile; $i++) {
  9. $wynik = $zapytanie->fetch_assoc();
  10. header("Location: ?s=players&id=".$wynik['id']);// tak jak kolega poniżej bo wcześniej nie wiedziałem że chodzi ci o przekierowanie
  11. }
  12. }else{
  13. echo 'Nie odnaleziono takiego gracza.';
  14. }

Nadal nie wiem czy o to dokładnie ci chodziło
olszam
header("Location: localhost?s=players&id=".$wynik['id']);

chyba najprościej jak komuś się nie chce męczyć smile.gif
Salur
No jeszcze nie o to wink.gif tzn jeden szczegol nie chce aby wyswietlalo mi link do profilu lecz od razu po kliknieciu wyszukaj wrzucalo na profil.
tomek200
No to dokładnie ten kod co powyżej. smile.gif
Salur
Ojj, to przepraszam dziekuje kolegom i oczywiscie plusiki sie naleza.

Ups, po małych modyfikacja skrypt po wpisaniu nicku wrzuca na adres : http://localhost/main.php&s=players?p=salur <--- tu powinno byc id a nie nick oraz zamiast p= to id=


Skrypt :

  1. <form action="main.php&s=players" method="GET">
  2. Szukaj gracza: <input type="text" name="p" />
  3. <input type="submit" value="Znajdź" />
  4. </form>
  5. <?php
  6. $nick = $_GET['p'];
  7.  
  8. $zapytanie = "SELECT * FROM user_data WHERE nick='$nick'";
  9. $ile = mysql_num_rows($zapytanie) or mysql_error();
  10. if ($ile != 0) {
  11.  
  12. for ($i=0; $i < $ile; $i++) {
  13. $wynik = mysql_fetch_assoc($zapytanie);
  14. echo header("Location: ?s=players&id=".$wynik['id']);
  15. }
  16. }else{
  17. echo 'Nie odnaleziono takiego gracza.';
  18. }
  19. ?>


ref
tomek200
Na pierwszy rzut oka to w formularzu w parametrze action masz znak "&" a powinno być "?" wytwarza to błąd bo w dalszej części skryptu dubluje się znak "&".
I przed header nie dawaj echo.
PS. Zapoznaj się z klasą mysqli lub biblioteką PDO bo funkcja mysql to trup.
Salur
Edytowałem skrypt na taki i nadal po kliknieciu znajdz wrzuca na adres: http://localhost/main.php?p=Serverek a powinno na http://localhost/main.php?s=editUser&id=2
Dodatkowo nick powinno zamieniać na ID.
  1. <form action="main.php?s=editUser" method="GET">
  2. Szukaj gracza: <input type="text" name="p" />
  3. <input type="submit" value="Znajdź" />
  4. </form>
  5. <?php
  6. $nick = $_GET['p'];
  7.  
  8. $zapytanie = "SELECT * FROM user_data WHERE nick='$nick'";
  9. $ile = mysql_num_rows($zapytanie) or mysql_error();
  10. if ($ile != 0) {
  11.  
  12. for ($i=0; $i < $ile; $i++) {
  13. $wynik = mysql_fetch_assoc($zapytanie);
  14. header("Location: ?s=editUser&id=".$wynik['id']);
  15. }
  16. }else{
  17. echo 'Nie odnaleziono takiego gracza.';
  18. }
tomek200
A czy to jest jedyny skrypt php w tym pliku?
Salur
To jest cały plik w którym znajduje się wyszukiwarka:
http://wklej.org/id/1691801/
tomek200
php:
  1. <?php
  2. if(isset($_GET['s'])){
  3. if($_GET['s'] == 'editUser'){
  4. $nick = $_GET['p'];
  5.  
  6. $zapytanie = "SELECT * FROM user_data WHERE nick='$nick'";
  7. $ile = mysql_num_rows($zapytanie) or mysql_error();
  8. if ($ile != 0) {
  9.  
  10. for ($i=0; $i < $ile; $i++) {
  11. $wynik = mysql_fetch_assoc($zapytanie);
  12. header("Location: ?s=editUser&id=".$wynik['id']);
  13. }
  14. }else{
  15. echo 'Nie odnaleziono takiego gracza.';
  16. }
  17. }
  18. }
  19. ?>

I formularz:
  1. <form action="main.php" method="GET">
  2. <input type="hidden" name="s" value="editUser" />
  3. Szukaj gracza: <input type="text" name="p" />
  4. <input type="submit" value="Znajdź" />
  5. </form>
Salur
Teraz zwraca mi taki link: http://localhost/main.php?s=editUser&p=Serwerek

Zamista Serwerek powinno być id, i zamiast p=Serwerek to id= IDSerwerka, przez co nie znajduje gracza i wypluwa:

  1.  
  2. Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\WebServ\httpd\pages\editUser.php on line 30
  3.  
  4. Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\WebServ\httpd\pages\editUser.php on line 31
tomek200
Pokaż tą linijkę.
Salur
Oto cały kod:
http://wklej.org/id/1691833/
tomek200
Ale błąd jest w pliku editUser.php a nie w main.php
Salur
To linijki 27-31:

  1. $kto = $_GET['id'];
  2. $sql = "SELECT * FROM user_data WHERE user_id = ".$kto;
  3. $query = mysql_query($sql) or mysql_error();
  4. $u = mysql_fetch_array($query);
  5. $gildia = mysql_fetch_array(mysql_query("SELECT name FROM guilds WHERE guild_id = " . $u["guild_id"] . " LIMIT 1"));
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.