Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql]zastosowanie wynikow wyszukiwania jako linki
Forum PHP.pl > Forum > Przedszkole
Rico_ds
Witam,
baza dana sklada sie z kategorii a te maja swoje podkategorie. Na stronie wyswietlaja sie nazwy kategorii. I do tego momentu wiem, jak zrobic, ale nie bardzo wiem jak zrobic aby te nazwy kategorii byly linkami do podkategorii bez tworzenia dodatkowych plikow php. Czy mozecie opisac mi schemat dzialania takich linkow opartych o baze danych?
PanGuzol
Linki robisz w postaci:
  1. <a href='plik.php?id_cat=idkategori'>Link</a>


I piszesz coś takiego:

  1. <?php
  2. if (isset($_GET['id_cat']))
  3. {
  4. //wyświetlasz podkategorie kategori id_cat
  5. }
  6. else
  7. {
  8. //wyświetlasz kategorie
  9. }
  10. ?>
Rico_ds
a czy moge zrobic tak?
  1. <?php
  2. <a href=cat.php?id_cat=$litera>A</a>
  3. ?>
chce aby po nacisnieciu takiego linku zostala pobrana z bazy $litera. Chce aby ten link wywolywal zapytanie dzieki ktoremu bede mogl pobrac z bazy wszytkie kategorie na litere a
PanGuzol
Możesz tak zrobić ale proponuje inaczej nazwać ta zmienna np:

  1. <?php
  2. echo "<a href='cat.php?firstlet=".$litera."'>litera</a>";
  3. ?>

I takie zapytanie

  1. <?php
  2. $query = "SELECT * FROM kategorie WHERE nazwakategorii LIKE '".$litera."%';";
  3. ?>
Rico_ds
mam jeszcze jedno pytanie odnośnie linków. Chciałbym zrobi menu z użyciem mysql. Zakladając że miałbym tabelkę o nazwie Menu i tam by bylo link_id, name, url, menu_id to co musiałbym wstawic w pole url? Takie linki jak wyżej mi podałeś? Te podstrony też oczywiście były by generowane za pomocą php i mysql.
pianta_d
Ja w bazie SQL mam coś takiego:

  1. <?php
  2. <a href="katalog/plik.php">Link</a>
  3. ?>
PanGuzol
Jeśli chodzi ci o menu z tymi literami to proponuje zrobić pętle
  1. <?php
  2. for($i=65;$i<91;$i++)
  3. {
  4. echo "<a href='cat.php?firstlet=".chr($i)."'>".chr($i)."</a>";
  5. }
  6. ?>

A jeśli chodzi ci o całkiem inne menu to proponuje wpisywać tam wartość parametru href
Rico_ds
zrobilem cos takiego
  1. <?phpecho'<div id=\"pap\"><img src=\"img/paper.jpg\"></div><div class=\"p4\">SEARCH RESULTS</div><br/>';echo'<div id=\"ile\">There is results</div>';$_POST['what']=trim($_POST['what']);if(empty($_POST['what']))die('Search string is empty. Please try again');else{$base=mysqli_connect('localhost','root','vertrigo','020london');$query=&#092;"Select * From companys Where name Like '%{$_POST['what']}%' Or description Like '%{$_POST['what']}%' Or address Like '%{$_POST['where']}%' Or postcode Like '%{$_POST['where']}%'\";$result=mysqli_query($base,$query);while($row=mysqli_fetch_assoc($result)){$company_id = $row[\"id\"]; $name = $row[\"name\"];$address = $row[\"address\"];$postcode = $row[\"postcode\"];$location = $row[\"location\"];echo '<div id=\"wyniki\">';echo '<table>';echo '<tr><td nowrap><a href=\"search.php?company_id\"><div class=\"p5\">'.$row[\"name\"].'</div></a></td><td nowrap><div class=\"p6\">'.$row[\"address\"].'</div></td><td nowrap><div class=\"p6\">'.$row[\"postcode\"].'</div></td></tr>';echo '</table>';echo '</div>';}if (isset($_GET['company_id'])){$query=\"Select * From companys \";$name = $row[\"name\"];echo '<table>';echo '<tr>';echo '<td>'.$row[\"name\"].'</td>';echo '</tr>';echo '</table>';}else{// w razie nie pobrania danych firmy z bazy.echo 'There is a problem with the data base';}mysqli_close($base);}?>
chcialem zrobic aby wyszukiwarka pokazala wyniki zapytania a nastepnie klikajac na link ktorym jest nazwa przeniesc sie do dokladniejszych danych o firmie, ale cos mi nie poszlo. Po kliknieciu na link pokazuje sie komunikat, ze nie zostala wpisana fraza do wyszukiwarki, czyli tak jakby link uruchamial od nowa procedure szukania. Mozesz mi wytlumaczyc najlepiej na przykladzie co zrobilem zle? Dziekimam tak
  1. <?php<a href='cat.php?firstlet=\".$litera.\"'>|</a>?>
i
  1. <?phpif (isset($_GET['.$litera.'])){$connect = mysql_connect(&#092;"localhost\", \"kingreid\", \"linddddd\") or die (\"There is no connetion with the data base.\");  mysql_select_db (\"kingreid_020london\");  mysql_query ('SET NAMES latin2'); $wynik = mysql_query(\"SELECT * FROM categorie WHERE categorie_name LIKE '\".$litera.\"%'\");echo '<Table>'; while($row = mysql_fetch_assoc($wynik)) if($kolor==\"#FFFFFF\") { $kolor=\"#FFFFFF\";} else {$kolor=\"#F1F8FF\"; echo '<table bgcolor=$kolor>'; echo '<tr>'; echo '<td><img src=\"img/blue_arrow.jpg\"></td>'; echo '<td nowrap><div class=\"p7\">'.$row['categorie_name'].'</div></td></tr>'; echo '</Table>'; }  echo '</Table>'; }?>
i wyglada na to, ze mi nie pobiera litery wcisnietej, poniewaz adres jest taki http://www.kingreidmedia.com/cat.php?firstlet= jak to poprawic?
drPayton
  1. <?php
  2. if (isset($_GET['.$litera.']))...
  3. ?>

zamień na:
  1. <?php
  2. if (isset($_GET[$litera])) ...
  3. ?>
Rico_ds
dalej nic. Mozesz zobaczyc to pod http://www.kingreidmedia.com/cat.php
drPayton
Jeżeli problemem jest samo wyświetlenie listy liter, to:
  1. <?php
  2. $firstLetters = str_split("abcdefghijklmnopqrstuvwxyz");
  3. foreach($firstLetters AS $letter) {
  4. echo "<a href=\"cat.php?firstlet={$letter}\">{$letter}</a> | ";
  5. }
  6. ?>

Ta metoda jest o tyle dobra, że w banalny sposób można dodawać/usuwać określone litery czy znaki
Rico_ds
problem polega na tym, ze po nacisnieciu litery, ma nastapic pobranie listy kategorii na dana litere. Caly kod
  1. <?php
  2. echo "<a href='cat.php?firstlet=".$litera."'>A |</a><a href='cat.php?firstlet=".$litera."'> B |</a> <a href='cat.php?firstlet=".$litera."'>C |</a> <a href='cat.php?firstlet=".$litera."'>D | </a> <a href='cat.php?firstlet=".$litera."'>E | </a> <a href='cat.php?firstlet=".$litera."'>F | </a> <a href='cat.php?firstlet=".$litera."'>G | </a> <a href='cat.php?firstlet=".$litera."'>H | </a> <a href='cat.php?firstlet=".$litera."'>I | </a> <a href='cat.php?firstlet=".$litera."'>J | </a> <a href='cat.php?firstlet=".$litera."'>K | </a> <a href='cat.php?firstlet=".$litera."'>L | </a> <a href='cat.php?firstlet=".$litera."'>M | </a> <a href='cat.php?firstlet=".$litera."'>N | </a> <a href='cat.php?firstlet=".$litera."'>O | </a> <a href='cat.php?firstlet=".$litera."'>P | </a> <a href='cat.php?firstlet=".$litera."'>Q | </a> <a href='cat.php?firstlet=".$litera."'>R | </a> <a href='cat.php?firstlet=".$litera."'>S | </a> <a href='cat.php?firstlet=".$litera."'>T | </a> <a href='cat.php?firstlet=".$litera."'>U | </a> <a href='cat.php?firstlet=".$litera."'>V | </a> <a href='cat.php?firstlet=".$litera."'>W | </a> <a href='cat.php?firstlet=".$litera."'>X | </a> <a href='cat.php?firstlet=".$litera."'>Y | </a> <a href='cat.php?firstlet=".$litera."'>Z | </a> ";
  3.  
  4.  
  5. if (isset($_GET[$litera]))
  6. {
  7. $connect = mysql_connect("localhost", "kingreid", "linddddd") or
  8. die ("There is no connetion with the data base.");
  9.  mysql_select_db ("kingreid_020london");
  10.  mysql_query ('SET NAMES latin2');
  11.  
  12. $wynik = mysql_query("SELECT * FROM categorie WHERE categorie_name LIKE '".$litera."%'");
  13. echo '<Table>';
  14.  
  15. while($row = mysql_fetch_assoc($wynik))
  16.  
  17. if($kolor=="#FFFFFF") { 
  18. $kolor="#FFFFFF";
  19. } else {
  20. $kolor="#F1F8FF";
  21.  
  22.  echo '<table bgcolor=$kolor>';
  23.  echo '<tr>';
  24.  echo '<td><img src="img/blue_arrow.jpg"></td>';
  25.  echo '<td nowrap><div class="p7">'.$row['categorie_name'].'</div></td></tr>';
  26.  echo '</Table>';
  27.  }
  28.  
  29. echo '</Table>'; 
  30. }
  31. else
  32. {
  33.  
  34. }?>
dodatkowo nie pobiera niczego tylko odrazu wykonuje else jezeli cos w nia wpisze
PanGuzol
Twoja zmienna nazywa sie firstlet a nie litera więc zamiast
  1. <?php
  2. if (isset($_GET[$litera]))
  3. {
  4. ?>

zrób
  1. <?php
  2. if (isset($_GET['firstlet']))
  3. {
  4. ?>

oraz w indeksach tablic nie stosuje sie $ tylko daje sie je w apostrofy.
drPayton
Dodatkowo:
  1. <?php
  2. $wynik = mysql_query("SELECT * FROM categorie WHERE categorie_name LIKE '".$_GET['firstlet']."%'");
  3. ?>
Rico_ds
Mam jeszcze jeden problem z tym. Wyswietla mi wszystkie kategorie na A a nie te z kliknietej litery
PanGuzol
Zamiast
  1. <?php
  2. echo "<a href='cat.php?firstlet=".$litera."'>A |</a><a href='cat.php?firstlet=".$litera."'> B |</a> <a href='cat.php?firstlet=".$litera."'>C |</a> <a href='cat.php?firstlet=".$litera."'>D | </a> <a href='cat.php?firstlet=".$litera."'>E | </a> <a href='cat.php?firstlet=".$litera."'>F | </a> <a href='cat.php?firstlet=".$litera."'>G | </a> <a href='cat.php?firstlet=".$litera."'>H | </a> <a href='cat.php?firstlet=".$litera."'>I | </a> <a href='cat.php?firstlet=".$litera."'>J | </a> <a href='cat.php?firstlet=".$litera."'>K | </a> <a href='cat.php?firstlet=".$litera."'>L | </a> <a href='cat.php?firstlet=".$litera."'>M | </a> <a href='cat.php?firstlet=".$litera."'>N | </a> <a href='cat.php?firstlet=".$litera."'>O | </a> <a href='cat.php?firstlet=".$litera."'>P | </a> <a href='cat.php?firstlet=".$litera."'>Q | </a> <a href='cat.php?firstlet=".$litera."'>R | </a> <a href='cat.php?firstlet=".$litera."'>S | </a> <a href='cat.php?firstlet=".$litera."'>T | </a> <a href='cat.php?firstlet=".$litera."'>U | </a> <a href='cat.php?firstlet=".$litera."'>V | </a> <a href='cat.php?firstlet=".$litera."'>W | </a> <a href='cat.php?firstlet=".$litera."'>X | </a> <a href='cat.php?firstlet=".$litera."'>Y | </a> <a href='cat.php?firstlet=".$litera."'>Z | </a> ";
  3. ?>

Użyj pętli którą napisałem w moim trzecim poście w tym temacie lub co napisał drPayton w swoim drugim poście w tym temacie.
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.