Wyszukiwanie danych i wyświetlenie dokładnego rekordu

0

Witam!
Mam napisany skrypt wyszukiwania danych z bazy. Kod wygląda następująco.

<?php

  // pobranie url

  $var = @$_GET['q'] ;
  $pobrane = trim($var); 


$limit=10; 
//Sprawdź czy pole jest puste
if ($pobrane == "")
  {
  echo "<p>Proszę wprowadź szukaną frazę</p>";
  exit;
  }


if (!isset($var))
  {
  echo "<p>Błąd! Wprowadź szukaną frazę. Pole nie może pozostać puste.</p>";
  exit;
  }


mysql_connect("mysql4.yoyo.pl","db1197976","horyzont"); 


mysql_select_db("db1197976") or die("Nie można wybrać bazy danych!"); 

//Warunek SQL 
$warunki="(imie like \"%$pobrane%\" || naziwsko like \"%$pobrane%\")";
$query = "select * from klienci where $warunki";

 $numresults=mysql_query($query);
 $numrows=mysql_num_rows($numresults);



if ($numrows == 0)
  {
  echo "<h4>Rezultat szukania: </h4>";
  echo "<p>Przepraszam, Twoje zapytanie: &quot;" . $pobrane . "&quot; zwróciło zero rezultatów</p>";
  }


  if (empty($s)) {
  $s=0;
  }

// Pobierz rezultat
  $query .= " limit $s,$limit";
  $result = mysql_query($query) or die("Błąd zapytania");

// Wyświetl
echo "<p>Wpisana fraza: &quot;" . $var . "&quot;</p>";

echo "Rezultat:<br>";
$count = 1 + $s ;

  echo '<table border="1" align="center"><tr><td width="150"><b>Lp</td><td width="650"><b>Imię</td><td width="650"><b>Nazwisko</b></td></tr></table>';
  while ($row= mysql_fetch_array($result)) {
  $title = $row["imie"];
  $title1 = $row["naziwsko"];
  echo '<table border="1" align="center"><tr><td width="150"><b>'.$count.'</td><td width="650">'.$title.'</td><td width="650">'.$title1.'</b></td></tr></table>';
  $count++ ;
  }

//wycięte

// licz strony
  $pages=intval($numrows/$limit);



  if ($numrows%$limit) {
  $pages++;
  }

$a = $s + ($limit) ;
  if ($a > $numrows) { $a = $numrows ; }
  $b = $s + 1 ;
  echo "<p>Rezultat $b wybrany $a z $numrows</p>";
  
?>

 

Chciałbym, aby dla konkretnego rekordu wyświetlało pełne dane. Czyli np. Mam wyświetlony rekord:

Adam | Adamowski | "więcej"

Po kliknięciu w "więcej" chciałbym otrzymać jego wszystkie dane z tabeli (istnieją jeszcze numery telefonów itp.), które pokazały by się w nowym oknie. Oprócz napisania odpowiedniej kwerendy jak mogę, to w prosty sposób zrobić?

0

W prosty sposób to chyba będzie najłatwiej dać jako "więcej" odsyłacz do cos.php?id=* w miejsce gwiazdki wstawiasz id rekordu (przy wyświetlaniu tego odsyłacza) potem w pliku cos.php robisz podobny skrypt jak ten twój tylko, że szukasz po id a nie po imieniu i nazwisku, no i wyświetlasz wszystkie dane

i ogólnie zamiast

$warunki="(imie like \"%$pobrane%\" || naziwsko like \"%$pobrane%\")";
$query = "select * from klienci where $warunki";
 
 $numresults=mysql_query($query);
 $numrows=mysql_num_rows($numresults);

zrób

$numresults=mysql_query('select * from `klienci` where `imie` like "%'.$pobrane.'%" || `naziwsko` like "%'.$pobrane.'%"');

No i jakieś zabezpieczenie zmiennej pobrane by się przydało :P

Jeśli nie ma odpowiednich rekordów to zmienna numresults będzie pusta więc nie potrzeba sprawdzać ilości rekordów, a jak kiedyś będziesz musiał to służy do tego mysql'owskie COUNT() a nie php'owskie mysql_num_rows, nie będę się rozpisywał dlaczego tak :P.

1 użytkowników online, w tym zalogowanych: 0, gości: 1