Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> select, echo select'a
qaxi
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 27.11.2005

Ostrzeżenie: (0%)
-----


skrypcik ponizej dziala bez zarzutu
  1. <?
  2.  
  3. include_once("include/connect.php");
  4. mysql_select_db($db_name, $connection);
  5. $sql="select * from dzial";
  6. $result = @mysql_query($sql, $connection);
  7. echo '<select name="dzial">';
  8. echo '<option>Wybierz własciwy</option>';
  9. while( $row = mysql_fetch_array( $result) ) 
  10.  {
  11.  echo '<option>'.$row['id_dzialu'].'</option>';
  12.  }
  13. echo '</select>';
  14.  
  15. ?>

ale ja potrzebuje wstawic to w duzo wiekszy formularz, ktory jest wyswietlany za pomoca echo wiec z powyzszego usunolem wszystkie echa
powstalo cos takiego
  1. <?php
  2. include_once("include/connect.php");
  3. mysql_select_db($db_name, $connection);
  4. $sqldz= "select * from dzial";
  5. $resultdz = @mysql_query($sqldz, $connection);
  6. $select= "<select name="dzial">
  7. <option>Wybierz własciwy</option>
  8. while( $row = mysql_fetch_array( $resultdz) ) 
  9.  { 
  10.  <option>.$row['id_dzialu'].</option>
  11.  }
  12. </select>";
  13. echo $select;
  14.  
  15. ?>

niesety dostaje komunikat
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\usr\apache\httpd\html\user.php on line 17

linie 17 to ta --> <option>.$row['id_dzialu'].</option>

kiedy z tej linii usune apostrofy obok id_dzialu to pole select wyswietla sie z tym, ze ma tylko 2 opcje "wybierz wlasciwy" i "..", a pod nim (nie ponizej tylko pod)wyrzuca "Wybierz własciwy while( = mysql_fetch_array( Resource id #4) ) { ..} "

Jak naprawic ten skrypcik zeby dzialal poprawnie?
i czy w takim polu select da sie ustawic ktora z pobranych z bazy wartosci jest selected?


Uzywaj BB Code
--
SongoQ
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
qbuz
post
Post #2





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 4.02.2004

Ostrzeżenie: (0%)
-----


Cytat
Nie utrwalajcie w blednym mysleniu. Oczywiscie ze mozna laczyc a potem wszystko naraz wyswietlic, ale to jest zbedne. Smazyc po kolei echo i wszystko bedzie dobrze. To nic formularzowi nie przeszkodzi.


Formularzowi nie przeszkodzi, ale czy taki kod nie bedzie nieco wolniejszy od jednego echo (lub print) z polaczonymi wartosciami?

Wiem, ze moze przesadzam, ale staram sie zwracac uwage na optymalizacje, moze czasem zbyt bardzo ;p W kazdym razie chodzi tez o "nawyki" (przy bardziej zlozonych skryptach zoptymalizowanie bedzie mialo wieksze znaczenie)

Przyjzawszy sie jednak blizej, widze, ze i tak w tym przypadku do laczenia bedzie trzeba tworzyc nowa zmienna, wiec mozna chyba posmazyc echo po kolei ;p bez jakichkolwiek strat (no z marginalnymi ;] )



//////////////////////////////////////////////////
//edit:


Cytat("nospor")
na reszte nie mam sil. jest zapoźno. moze jutro jak nikt nic nie dopisze


Mi starczylo ;] widocznie mi sie jakos nudzi ;]

..sprobuj wiec takiego kodu: (oprocz zmian w sposobie pisania zmienilem tez 2 rzeczy, jak dokladnie porownasz to je znajdziesz i wydaje mi sie, ze to rozwiaze tamten blad):

  1. <?php
  2. include_once("include/connect.php");
  3. session_register('ile', 'id_ksiazki');
  4.  
  5. if($_SESSION['login'] != 'admin')
  6. exit();
  7.  
  8. ?>
  9.  
  10. <HTML>
  11. <HEAD>
  12. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  13. </HEAD>
  14. </HTML>
  15. <FORM ACTION="book_update.php" METHOD="POST">
  16. <TABLE BORDER=0>
  17. <tr><td>Numer pozycji</td><tr></tr><td><input type=char name=nr_up maxlength=10 size=10></td></tr>
  18. <tr><td colspan=2><input type=submit value="Wybierz" name="popraw"></td></tr>
  19. </TABLE>
  20. </FORM>
  21.  
  22. <?php 
  23. if(isset($_POST['popraw'])) {
  24. if($_SESSION['login']== 'admin') {
  25. mysql_select_db($db_name, $connection);
  26.  
  27. $result = mysql_query('select * from ksiazki where id_ksiazki='.$nr_up, $connection)
  28. or die ('<font>Nie ma takiej pozycji</font>');
  29. $ile = mysql_num_rows($result);
  30.  
  31. while ($row = mysql_fetch_array($result)) {
  32. $display_block = ' <P>Nr: '.$row['id_ksiazki'].'<br>
  33. <strong>'.$row['autor'].'</strong> - '.$row['tytul'].'<br>
  34. Dział: '.$row['dzial'].' <br>
  35. Skojarzenia: '.$row['plus1'].', '.$row['plus2'].', '.$row['plus3'].',<br>
  36. <em>ISBN: '.$row['isbn'].'</em><br>
  37. Opis: '.$row['opis']' <br>
  38. Nośnik: '.$row['nosnik'].'</P>';
  39. }
  40. }
  41. }
  42.  
  43. if ($ile==1) {
  44. echo $display_block.
  45. '<FORM ACTION="book_update.php" METHOD="POST">
  46. <TABLE BORDER=0>
  47. <tr><td>Numer pozycji</td><tr></tr><td><input type=char name=nr maxlength=10 size=10 value="'.$row['id_ksiazki'].'"></td></tr>
  48. <tr><td>Autor</td><tr></tr><td><input type=char name=autor maxlength=100 size=100 value="'.$row['autor'].'"></td></tr>
  49. <tr><td>Tytuł</td><tr></tr><td><input type=char name=tytul maxlength=100 size=100 value="'.$row['tytul'].'"></td></tr>
  50. <tr><td>Dział</td><tr></tr><td><select name="dzial">
  51. <option>Wybierz własciwy</option>';
  52. $result = mysql_query('select * from dzial', $connection);
  53. while( $row = mysql_fetch_array ($result) ) {
  54. echo '<option>'.$row['id_ksiazki'].'</option>';
  55. }
  56. echo '</select>
  57. </td></tr>
  58. <tr><td>Słowo kluczowe 1</td><tr></tr><td><input type=char name=k1 maxlength=20 size=20 value="'.$row['plus1'].'"></td></tr>
  59. <tr><td>Słowo kluczowe 2</td><tr></tr><td><input type=char name=k2 maxlength=20 size=20 value="'.$row['plus2'].'"></td></tr>
  60. <tr><td>Słowo kluczowe 3</td><tr></tr><td><input type=char name=k3 maxlength=20 size=20 value="'.$row['plus3'].'"></td></tr>
  61. <tr><td>ISBN</td><tr></tr><td><input type=char name=isbn maxlength="10" size="10" value="'.$row['isbn'].'"></td></tr>
  62. <tr><td>Opis</td><tr></tr><td>
  63. <label><textarea rows="5" cols="30" name="opis">'.$row['opis'].'</textarea></label></td></tr>
  64. <tr><td>Nośnik</td><tr></tr><td>
  65. <SELECT NAME="nosnik" value="'.$row['nosnik'].'">
  66. <OPTION VALUE="">Wybierz wlasciwy</OPTION>
  67. <OPTION VALUE="książka"'.($row['nosnik'] == 'książka' ? ' selected="selected"' : '').'>Książka</OPTION>
  68. <OPTION VALUE="czasopismo"'.($row['nosnik'] == 'czasopismo' ? ' selected="selected"' : '').'>Czasopismo</OPTION>
  69. <OPTION VALUE="cd"'.($row['nosnik'] == 'cd' ? ' selected="selected"' : '').'>Dysk CD</OPTION>
  70. <OPTION VALUE="dvd"'.($row['nosnik'] == 'dvd' ? ' selected="selected"' : '').'>Dysk DVD</OPTION>
  71. </SELECT></td></tr>
  72. <tr><td colspan=2><input type=submit value="Popraw" name="zmien"></td></tr>
  73. </TABLE>
  74. </FORM>';
  75. }
  76.  
  77.  
  78. if(isset($_POST['zmien'])) {
  79. if($_SESSION['login']=="admin") {
  80. mysql_select_db($db_name, $connection);
  81. $result = mysql_query ('UPDATE news
  82. SET
  83. id_ksiazki = ''.$_POST['nr'].'',
  84. autor = ''.$_POST['autor'].'',
  85. tytul = ''.$_POST['tytul'].'',
  86. dzial = ''.$_POST['dzial'].'',
  87. plus1 = ''.$_POST['k1'].'',
  88. plus2 = ''.$_POST['k2'].'',
  89. plus3 = ''.$_POST['k3'].'',
  90. isbn  = ''.$_POST['isbn'].'',
  91. opis  = ''.$_POST['opis'].'',
  92. nosnik  = ''.$_POST['nosnik'].''
  93. WHERE 
  94. id_ksiazki = '.$_POST['nr'], 
  95. $connection);
  96.  
  97. if ($result) {
  98. header ('location: start.php');
  99.  }
  100. }
  101. }
  102. session_unregister('ile', 'id_ksiazki');
  103. ?>


To jest przyklad takiego "lepszego" pisania, nie jestem pewien czy w pelni poprawny. W kazdym razie nie przyzwyczajaj sie do tego typu "odpowiedzi", to ma byc tylko jednorazowy przyklad ;]

PS: no chyba wszyscy sie uczymy. kto stoi w miejscu, ten sie cofa..

Ten post edytował qbuz 13.12.2005, 00:22:23
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 02:38