Pomoc w PHP na stronie

Problemy związane ze stronami PHP

Pomoc w PHP na stronie

Postprzez Nieznany » Śr mar 21, 12 11:34

Hejka, właśnie robię strone z katalogiem sławnych osób. Jak w php napisać wyszukiwanie osób? jak to z bazą danych połączyć? ma ktoś jakieś pomysły?
Nieznany
 
Posty: 4
Dołączył(a): Śr mar 21, 12 11:30

Re: Pomoc w PHP na stronie

Postprzez parox » Śr mar 21, 12 11:50

Witaj.

Wszystko zalezy od Ciebie. Jesli chcesz to zrobic na bazie MySQL, wystarczy Ci odpowiednie zapytanie. Jesli jednak w oparciu o dajmy na to ciagi znakow w HTML/PHP - musial bys dluzej sie pobawic preg_match itp.

Wracajac do MySQL, mozesz zarowno uzyc zwyklej opcji LIKE, badz tez REGEXP. Przyklad:

Kod: Zaznacz cały
SELECT * FROM slawni WHERE nazwisko LIKE `%Lee`;


Zapytanie wyszuka osob o nazwisku Lee dokladnie w takim stanie. Znak procenta, oznacza, iz jesli jest cos przed nazwiskiem, np. imie, zostanie ono zignorowane i znajdzie jedynie ow nazwisko.

Kod: Zaznacz cały
SELECT * FROM slawni WHERE nazwisko REGEXP `[[:<:]](Lee|lee)[[:>:]]`;


Te jednak, wyszuka nazwiska ktore zostanie wpisane mala, badz duza literka. Znowu, znaki [[:<:]] oraz [[:>:]] swiadcza o tym, iz by ignorowac, co jest przed i po podanej frazie.

Mysle, iz dalej uzywajac swojej wyobrazni, poradzisz sobie :)

Powodzenia i Pozdrawiam.
Avatar użytkownika
parox
 
Posty: 598
Dołączył(a): Śr maja 23, 07 23:17
Lokalizacja: Prudhoe

Re: Pomoc w PHP na stronie

Postprzez Nieznany » Śr mar 21, 12 16:49

Dzięki za zainteresowanie ale kłopot jest w czym innym, już piszę. :D

Mam index.html i tam formularz, w tym samym folderze browstar.php gdzie w kodzie html jest kod php.

index.html
Kod: Zaznacz cały
<form method=post action="browstar.php">

<p><big>Znajdz znana kobiete</big></p>

Profesja:

<select name="pro">

<option value="All">Wszystkie</option>

<option value="aktor">Aktorka</option>

<option value="piosenka">Piosenkraka</option>

<option value="model">Modelka</option>

<option value="celeb">Celebrytka</option>

</select><br />

Kolor wlosow:

<input type="radio" name="color" value="blond">Blondynka

<input type="radio" name="color" value="brunetka">Brunetka<br />
Wzrost:

<input type="radio" name="wzrost" value="short">Niska

<input type="radio" name="wzrost" value="medium">Srednia

<input type="radio" name="wzrost" value="high">Wysoka <br />

<p><center><input type="Submit" value="Szukaj"></center></p>

</form>


browstar.php:
Kod: Zaznacz cały
<body>
<?php
$polaczenie=mysql_connect("mysql3.ugu.pl","dbXXX","[cenzura]");
mysql_select_db("[cenzura]",$polaczenie);
switch ($_POST['pro'])
{
    case 'All':
    $zapytanie = "SELECT imie, nazwisko FROM kobiety where kolor_w=="%$color%"
    and wzrost=="%$wzrost%";
    $wykonaj = mysql_query ($zapytanie);
   

    while($linia=mysql_fetch_array($wynik)){

    echo "$linia["imie"] $linia["nazwisko"]";

    }

   

    case 'piosenka':
    $zapytanie = "SELECT imie, nazwisko FROM kobiety where profesja==piosenkarka and
    kolor_w == "%$color%" and wzrost=="%$wzrost%";
    $wykonaj = mysql_query ($zapytanie);
   

    while($linia=mysql_fetch_array($wynik)){

    echo "$linia["imie"] $linia["nazwisko"]";

    }


    case 'aktor':
    $zapytanie = "SELECT imie, nazwisko FROM kobiety where profesja==aktor
    kolor_w=="%$color%" and wzrost=="%$wzrost%";
    $wykonaj = mysql_query ($zapytanie);
   

    while($linia=mysql_fetch_array($wynik)){

    echo "$linia["imie"] $linia["nazwisko"]";

    }


    case 'celeb':
    $zapytanie = "SELECT imie, nazwisko FROM kobiety where profesja==celebrytka
    kolor_w=="%$color%" and wzrost=="%$wzrost%";
    $wykonaj = mysql_query ($zapytanie);
   
    while($linia=mysql_fetch_array($wynik)){

    echo "$linia["imie"] $linia["nazwisko"]";

    }
case 'model':
    $zapytanie = "SELECT imie, nazwisko FROM kobiety where profesja==modelka and
    kolor_w == "%$color%" and wzrost=="%$wzrost%";
    $wykonaj = mysql_query ($zapytanie);
   

    while($linia=mysql_fetch_array($wynik)){

    echo "$linia["imie"] $linia["nazwisko"]";

}

mysql_close($polaczenie);


?>   
</body>   


Wyskakują mi błędy, a wyniki nie są wyświatlane. Sądzę, że może nie potrzebnie case używałem. Mam jeszcze jedną zagwostke, cciałbym mieć szablon strony w której zależnie od id gwiadzy mi uzupełniało rubryki wzrost, włosy.
Nieznany
 
Posty: 4
Dołączył(a): Śr mar 21, 12 11:30

Re: Pomoc w PHP na stronie

Postprzez parox » Śr mar 21, 12 19:14

Mam nadzieję iż dobrze rozumiem. Widzę JEDEN formularz, z którego wybierasz KILKA opcji, tak?
Kod ja bym zrobił tak:

Kod: Zaznacz cały
<?php

$dbc = mysql_connect ('mysql3.ugu.pl', 'db0000000', 'Hasło', 'db0000000')
OR die ('Nie można połączyć z bazą danych z następującego powodu:<br> ' . mysqli_connect_error() );

$prof = ''; //
$kolor = ''; // Ów wartości nie są ustawione, by nie wywoływały błędów.
$wzrost = ''; //

if (isset($_POST['pro'])) {
   if ($_POST['pro'] != 'All') {
      $prof = $_POST['pro']; // Jeśli w formularzu została wyznaczona wartość, nasza zmienna przybierze jej format. Jeśli nie, pozostanie pusta.
      $type = 0;
   } else {
      $type = 1;
   }
}

if (isset($_POST['color'])) {
   $kolor = $_POST['color']; // -||-
}

if (isset($_POST['wzrost'])) {
   $wzrost = $_POST['wzrost']; // -||-
}

if ($type == 1) { // W zależności, jeśli nie wybrano żadnej profesji poza "All"
   $query = "SELECT profesja, imie, nazwisko, kolor_w, wzrost FROM `kobiety` WHERE kolor_w='" . $kolor . "', wzrost='" . $wzrost . "'";
} else {
   $query = "SELECT profesja, imie, nazwisko, kolor_w, wzrost FROM `kobiety` WHERE profesja='" . $prof . "', kolor_w='" . $kolor . "', wzrost='" . $wzrost . "'";
}

$result = mysqli_query ($dbc, $query);

echo '<table>
<tr>
   <th>Imie</th>
   <th>Nazwisko</th>
   <th>Profesja</th>
   <th>Kolor włosów</th>
   <th>Wzrost</th>
</tr>';

while ($value = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
   echo '<tr>
      <td>' . $value['imie'] . '</td>
      <td>' . $value['nazwisko'] . '</td>
      <td>' . $value['profesja'] . '</td>
      <td>' . $value['kolor_w'] . '</td>
      <td>' . $value['wzrost'] . '</td>
   </tr>';
}

echo '</table>';

?>


Nie testowałem, ale sądzę iż powinno działać bez zaprzeczeń. BŁĄD mogłeś dostać, ponieważ nie zdefiniowałeś zmiennych $wzrost i $kolor. Ponadto, w takiej wyszukiwarce, nie potrzebne Ci są funkcje LIKE czy REGEXP.

Pozdrawiam.
Avatar użytkownika
parox
 
Posty: 598
Dołączył(a): Śr maja 23, 07 23:17
Lokalizacja: Prudhoe

Re: Pomoc w PHP na stronie

Postprzez Nieznany » Śr mar 21, 12 22:07

to jest strona na której działam: http://slawnik.ugu.pl/. Jak narazie tylko wyszukiwarka, ale potem css jakiś upiekszy strone.

Drugie pytanie tyczy się, może źle opisałem problem:/ ale miałem na myśli: domna/gwiazda_id=781 i serwer pobiera strone w szablon profilu gwiazdy i w niej umieszcza dane w miejsca opowiednie z bazy danych. Bo chce zrobić tabelke z wynikami w której będą odsyłacze do strony profili gwiazd. :o

za wszelką pomoc wielkie THX :D
Nieznany
 
Posty: 4
Dołączył(a): Śr mar 21, 12 11:30

Re: Pomoc w PHP na stronie

Postprzez parox » Cz mar 22, 12 03:55

Jeśli potrafisz formułować zapytania SQL, nie będzie to dla Ciebie problemem. Aczkolwiek, trochę na temat bezpieczeństwa w php:

- Jeśli w linku, będzie GET który zostanie wysłany do bazy danych, warto się ubezpieczyć.

Kod: Zaznacz cały
if (isset($_GET['gwiazda_id']) && is_numeric($_GET['gwiazda_id'])) {
   $id = $_GET['gwiazda_id'];
} else {
   header("Location: index.php");
   exit();
}


Dany kod, sprawdzi najpierw, czy podana fraza GET jest numerkiem, czy też nie. Jeśli nie jest, przeniesie do index.php nie pozwalając na część dalszą.

Link tworzysz najzwyczajniej w świecie. Do poprzedniego skryptu, dodajesz tylko link oraz w zapytaniu dodajesz by wczytywało ID gwiazdy. Odnośnik mógłby wyglądać tak:

Kod: Zaznacz cały
<a href="gwazda.php?id=' . $ID_Wyczytane_Z_Zapytania . '">Pokaz profil gwiazdy</a>


Kolejna sprawa, co do profilu. Możesz dać jedno zapytanie, którego rezultat będziesz dzielił.

Kod: Zaznacz cały
$query = mysqli_query($dbc, "SELECT pola, ktore, chcesz, wczytac, z, bazy, danych FROM `Nazwa Tabeli` WHERE id=9 ");
$result = mysqli_fetch_array($query);


W ów czas robisz stronę CSS/HTML, i gdzie chcesz wstawić jakieś dane, dajesz w echo, $result[''] podpisując do niego jedną z wybranych (SELECT'owanych) opcji. Np.

Kod: Zaznacz cały
echo $result['nazwisko'];


Wyświetli nazwisko gwiazdy, jeśli w zapytaniu SELECT, o nie poprosiłeś.

Język jest banalnie prosty, wystarczy wyobraźni użyć i można zdziałać wiele :)

Pozdrawiam.
Avatar użytkownika
parox
 
Posty: 598
Dołączył(a): Śr maja 23, 07 23:17
Lokalizacja: Prudhoe


Powrót do PHP

Copyright © 2007-2011 ugu.pl
Wszelkie prawa zastrzeżone.
Polityka prywatności

cron