ripool Opublikowano 26 Lutego 2008 Zgłoś Opublikowano 26 Lutego 2008 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
barat Opublikowano 26 Lutego 2008 Zgłoś Opublikowano 26 Lutego 2008 (edytowane) 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 26 Lutego 2008 przez barat Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ripool Opublikowano 26 Lutego 2008 Zgłoś Opublikowano 26 Lutego 2008 (edytowane) 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 26 Lutego 2008 przez ripool Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
barat Opublikowano 26 Lutego 2008 Zgłoś Opublikowano 26 Lutego 2008 To teraz poczytaj jaka jest różnica między pojedynczymi i podwójnymi cudzysłowami :) Będziesz wiedział czemu działa :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 27 Lutego 2008 Zgłoś Opublikowano 27 Lutego 2008 dodać można tyle, że to co wymyśliłeś jest nieoptymalne wydajnościowo :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
bellum Opublikowano 28 Lutego 2008 Zgłoś Opublikowano 28 Lutego 2008 (edytowane) 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 28 Lutego 2008 przez Zawadaki Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 28 Lutego 2008 Zgłoś Opublikowano 28 Lutego 2008 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. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
ripool Opublikowano 29 Lutego 2008 Zgłoś Opublikowano 29 Lutego 2008 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 <_< Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...