Skocz do zawartości
ripool

Problem Z Sortowaniem W Sql

Rekomendowane odpowiedzi

Zaznaczam na początku że dopiero zaczynam z php i prosiłbym o wyrozumiałość i pomoc.

Mam następujący formularz:

<FORM ACTION="w.php" METHOD="POST">
<P>
<SELECT name="wybor">
<OPTION value="Naz">Naz</OPTION>
<OPTION value="Pow">Pow</OPTION>
</SELECT>
<INPUT type="SUBMIT" ALIGN="" NAME="zm" VALUE="Wyślij">
</P>
</FORM>

 

i skrypt

 

$pol = mysql_connect ('localhost','login','haslo') or die('Brak połączenia z serwerem mysql. Błąd: '.mysql_error());

$db = mysql_select_db('baza', $pol) or die('Nie mogę połączyć się z bazą danych. Błąd: '.mysql_error());

$z = $_POST['wynik'];
$wynik = mysql_query("Select * From powiat Order By '.$z.' DESC");
if(mysql_num_rows($wynik) > 0) {
     /* jeżeli wynik jest pozytywny, to wyświetlamy dane */
   echo "<table cellpadding=\"2\" border=1>";
   echo "<th>1</th><th>2</th><th>3</th>";
   while($r = mysql_fetch_assoc($wynik)) {
       echo "<tr>";
       echo "<td>".$r['Pow']."</td>";
       echo "<td>".$r['idpow']."</td>";
       echo "<td>".$r['idnaz']."</td>";
       echo "</tr>";
   }
   echo "</table>";
}

mysql_close($pol);

 

i tutaj jest problem bo chciałbym wybierając pole w formularzu, aby sortował mi według tego pola. To mi nie działa.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A skąd pobierany jest $_POST['wynik'] ? Bo w formularzu jakoś nie widzę, a skoro nie ma tej zmiennej to jak ma działać skrypt ?

 

Czyli jeśli nazwy kolumn w MySQL to Naz i Pow , to w skrypcie w.php powinieneś zmienić

 

$_POST['wynik'] na $_POST['wybor']

 

Jeśli nie ... to musisz pozmieniać tak:

 

<OPTION value="NazwaTejKolumnyWmysql">Naz</OPTION>

<OPTION value="NazwaTejKolumnyWmysql">Pow</OPTION>

Edytowane przez barat

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A skąd pobierany jest $_POST['wynik'] ? Bo w formularzu jakoś nie widzę, a skoro nie ma tej zmiennej to jak ma działać skrypt ?

 

Czyli jeśli nazwy kolumn w MySQL to Naz i Pow , to w skrypcie w.php powinieneś zmienić

 

$_POST['wynik'] na $_POST['wybor']

 

Jeśli nie ... to musisz pozmieniać tak:

 

<OPTION value="NazwaTejKolumnyWmysql">Naz</OPTION>

<OPTION value="NazwaTejKolumnyWmysql">Pow</OPTION>

Wkradła sie literówka. W skrypcie tez mam 'wybor' a nie wynik.

 

Spróbowałem jeszcze tak, że zamiast pola Select w formularzu dałem zwykłe pole tekstowe, gdzie wpisywałem z palca nazwę kolumny, wg której miał sortować i to działało. Ale z tym Selectem nie mam pojęcia jak zrobić.

 

I "cudownie" wpadałem na rozwiązanie - zmienna $z, która była w w zapytaniu Select, w pazurkach '.$z .', dodałem cudzysłów wewnątrz '".$z."' i już chula.

Edytowane przez ripool

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

I "cudownie" wpadałem na rozwiązanie - zmienna $z, która była w w zapytaniu Select, w pazurkach '.$z .', dodałem cudzysłów wewnątrz '".$z."' i już chula.

człowieku :mur: zanim zaczniesz coś pisać przeczytaj przynajmniej instrukcję

 

czy nie lepiej było nasiać tak:

 

$wynik = mysql_query('Select * From powiat Order By '.$_POST['wynik'].' DESC');

jest szybciej czysciej i poprawnie

 

druga spraw to po co wszędzie z uporem maniaka używasz " skoro w 99% można użyć '

 

no i po co tobie to zmienna $z czy nie można użyć $_POST['wynik'] nic z tym nie robisz wiec po co kopiujesz do nowej zbędnej zmiennej :mur:

 

zawsze lepiej jest użyć do sklejania zmiennych z ciągami tekstowymi kropki . zamiast używać "inteligencji" PHP do wyciągania zmiennych z ciągów ""

 

po co tyle tych ECHO jak nie używasz szablonów to przyjemnej skonstruuj to tak aby jak naj mnej tej funkcji użyć kopiowanie do zmiennej kosztuje mniej czasu niż wywołanie funkcji ECHO

 

$out = '<table cellpadding="2" border=1><th>1</th><th>2</th><th>3</th>';while($r = mysql_fetch_assoc($wynik)) {$out .= '<tr><td>'.$r['Pow'].'</td><td>'.$r['idpow'].'</td><td>'.$r['idnaz'].'</td></tr>';}echo $out .= '</table>';

taki mały skrypt a tyle błędów

Edytowane przez Zawadaki

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ludzie często dają " bo to jest bardziej naturalne i w innych językach powszechnie stosowane. Niestety w PHP podstawą definiowania stringa jest pojedynczy '. Podwójny " jest wolniejszy i zmusza server do większego nakładu pracy.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

człowieku :mur: zanim zaczniesz coś pisać przeczytaj przynajmniej instrukcję

 

czy nie lepiej było nasiać tak:

 

$wynik = mysql_query('Select * From powiat Order By '.$_POST['wynik'].' DESC');

jest szybciej czysciej i poprawnie

 

druga spraw to po co wszędzie z uporem maniaka używasz " skoro w 99% można użyć '

 

no i po co tobie to zmienna $z czy nie można użyć $_POST['wynik'] nic z tym nie robisz wiec po co kopiujesz do nowej zbędnej zmiennej :mur:

 

zawsze lepiej jest użyć do sklejania zmiennych z ciągami tekstowymi kropki . zamiast używać "inteligencji" PHP do wyciągania zmiennych z ciągów ""

 

po co tyle tych ECHO jak nie używasz szablonów to przyjemnej skonstruuj to tak aby jak naj mnej tej funkcji użyć kopiowanie do zmiennej kosztuje mniej czasu niż wywołanie funkcji ECHO

 

$out = '<table cellpadding="2" border=1><th>1</th><th>2</th><th>3</th>';while($r = mysql_fetch_assoc($wynik)) {$out .= '<tr><td>'.$r['Pow'].'</td><td>'.$r['idpow'].'</td><td>'.$r['idnaz'].'</td></tr>';}echo $out .= '</table>';

taki mały skrypt a tyle błędów

no coz, napisałem na początku, że dopiero zaczynam z php i to chyba logiczne, że nie będzie to arcydzieło i posiadało błędy. Dlatego prosiłem o pomoc <_<

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...