Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie z bazy mysql wartości dla pola select
Forum PHP.pl > Forum > Przedszkole
Arti79
Witam,
Stworzyłem sobie formularz w którym jednym z pól jest pole typu select "status użytkownika".

Poniżej kod dla podstrony dodawania użytkownika, czyli wysyłania danych do tabeli:

Kod
<tr>
 <td align="right" width="170"><strong>Zablokowany: </strong></td>
 <td align="left"><select name='user_status' class='textbox'>
   <option value = "1">Tak</option>
   <option value = "0">Nie</option>
 </select></td>
</tr>


W zalezności od tego czy w formularzu wybiorę opcję Tak lub Nie to do bazy są wstawiane wartości 1 lub 0, a jak teraz wyświetlić te dane pobierając je z bazy, tzn. chciałbym zrobić drugą podstronę na które będę wyświetlał z bazy dane użytkownika z aktualnie zapisaną wartością w bazie, czyli jeżeli użytkownik ma w bazie wartość 1 to formularz powinien pokazac wartość Tak z możliwością zmiany na Nie i wystawieniem na serwer... ale nie wiem jak pobrać aktualnie dane zapisane w bazie dla pola select z zamianą na Tak lub Nie...

Z góry dziękuję za pomoc
Kuziu
  1. <option value = "1" <? if($pole == '1') echo(' selected'); ?>>Tak</option>
  2. <option value = "0" <? if($pole == '0') echo(' selected'); ?>>Nie</option>
Arti79
Wstawiłem sobie taki kod:

Kod
<tr>
  <td align="right" width="170"><strong>Zablokowany: </strong></td>
  <td align="left"><select name='user_status' class='textbox'>
   <option value = "1" <? if({$dane['user_status']} == '1') echo(' selected'); ?>Tak</option>
   <option value = "0" <? if({$dane['user_status']} == '0') echo(' selected'); ?>Nie</option>
  </select></td>
</tr>


a później do testów taki:

Kod
<tr>
  <td align="right" width="170"><strong>Zablokowany: </strong></td>
  <td align="left"><select name='user_status' class='textbox'>
   <option value = "1" <? if($user_status == '1') echo(' selected'); ?>Tak</option>
   <option value = "0" <? if($user_status == '0') echo(' selected'); ?>Nie</option>
  </select></td>
</tr>


ale niestety nie działa, niezależnie od tego czy użytkownik ma w bazie 1 czy 0 domyślnie podstawia się wartość Tak
Kuziu
Po co te nawiasy klamrowe w 1 przypadku ?

Uzywaj tagów [ php ] a nie [ CODE ] do zaznaczania kodu php
Arti79
Cały formularz wygląda tak (poniżej), i wszystkie dane wyświetlają mi się prawidłowo poza polami select ;(

Kod
echo <<<KONIEC
<form action="index.php?str=edytuj&opcja=zmien&user_id={$dane['user_id']}" method="post">
<table align="center" valign="center" border="1">
<tr>
  <td colspan="2" align="center"><strong>EDYCJA UZYTKOWNIKA</srong></td>
</tr>
  <tr>
  <td align="right" width="170"><strong>Login: </strong></td>
  <td align="left"><strong>{$dane['user_login']}</strong></td>
</tr>
<tr>
  <td align="right" width="170"><strong>Adres Email: * </strong></td>
  <td align="left"><input name="user_email" type="text" value="{$dane['user_email']}" size="50" /></td>
</tr>
<tr>
  <td align="right" width="170"><strong>Imię: </strong></td>
  <td align="left"><input name="user_imie" type="text" value="{$dane['user_imie']}" size="50" /></td>
</tr>
<tr>
  <td align="right" width="170"><strong>Nazwisko: </strong></td>
  <td align="left"><input name="user_nazwisko" type="text" value="{$dane['user_nazwisko']}" size="50" /></td>
</tr>
<tr>
  <td align="right" width="170"><strong>Numer KPX: </strong></td>
  <td align="left"><input name="user_kpx" type="text" value="{$dane['user_kpx']}" size="50" maxlength="5" /></td>
</tr>
<tr>
  <td align="right" width="170"><strong>Stanowisko: </strong></td>
  <td align="left"><input name="user_stanowisko" type="text" value="{$dane['user_stanowisko']}" size="50" /></td>
</tr>
<tr>
  <td align="right" width="170"><strong>Numer Telefonu: </strong></td>
  <td align="left"><input name="user_telefon" type="text" value="{$dane['user_telefon']}" size="50" maxlength="10" /></td>
</tr>
<tr>
  <td align="right" width="170"><strong>Komórka Organizacyja: </strong></td>
  <td align="left"><input name="user_organizacja" type="text" value="{$dane['user_organizacja']}" size="50" /></td>
</tr>
<tr>
  <td align="right" width="170"><strong>Grupa Użytkowników: </strong></td>
  <td align="left"><select align="left" name='user_grupa' value="{$dane['user_grupa']}" class='textbox'>
    <option value = "">- - - wybierz z listy - - -</option>
    <option value = "101">Test 1</option>
    <option value = "102">Test 2</option>
    <option value = "103">Test 3</option>
  </select></td>
</tr>
<tr>
  <td align="right" width="170"><strong>Poziom Dostepu: </strong></td>
  <td align="left"><select name='user_poziom' value="{$dane['user_poziom']}" class='textbox'>
    <option value = "10">Użytkownik</option>
    <option value = "11">Administrator</option>
    <option value = "12">Super Administrator</option>
  </select></td>
</tr>
<tr>
  <td align="right" width="170"><strong>Zablokowany: </strong></td>
  <td align="left"><select name='user_status' class='textbox'>
   <option value = "1" <? if({$dane['user_status']} == '1') echo(' selected'); ?>Tak</option>
   <option value = "0" <? if({$dane['user_status']} == '0') echo(' selected'); ?>Nie</option>
  </select></td>
</tr>
<tr>
  <td align="center" colspan="2"><input type="submit" value="Zapisz Zmiany" /></td>
</tr>
</table>
</form>
KONIEC;
msulik
A od kiedy tutaj stawia się spacje:
  1. <option value = "1" ....

questionmark.gif winksmiley.jpg

Powinno być tak:
  1. <option value="1" ....
Arti79
Ze spacją czy bez spacji nie pobiera aktualnie nadanej wartości 1=Tak, 0=Nie
Kuziu
Wklej kawałek kodu końcowego html'a który jest wygenerowany. (Z przeglądarki pokaż źródło)

ten gdzie są tagi <option>

Zobaczymy czy coś tam się w ogóle pojawia.
Arti79
Wycinek z podstrony do edycji użytkownika po zrobieniu "pokaż źródło":

Kod
<tr>
  <td align="right" width="170"><strong>Zablokowany: </strong></td>
  <td align="left"><select name='user_status' class='textbox'>
   <option value="1" <? if(0 == '1') echo(' selected'); ?>Tak</option>
   <option value="0" <? if(0 == '0') echo(' selected'); ?>Nie</option>
  </select></td>
</tr>
Guest
spróbuj zamienić <? na <?php, wyglada jakby nie łykał shorttags
Kuziu
echo <<<KONIEC


Najpierw musisz zamknąć to echo KONIEC; potem wstawić tego IF'a i znów rozpocząć echo
Arti79
Nic nie dało sad.gif

Może wstawię całą podstronę:

Kod
<?php
session_start();

include "../polacz.php";

$opcja = trim($_REQUEST["opcja"]);

if ($opcja=="zmien" and $_SESSION["zalogowany"]=="tak") {

 $user_login = htmlspecialchars(stripslashes(trim($_POST["user_login"])), ENT_QUOTES);
 $user_email = htmlspecialchars(stripslashes(trim($_POST["user_email"])), ENT_QUOTES);
 $user_imie = htmlspecialchars(stripslashes(trim($_POST["user_imie"])), ENT_QUOTES);
 $user_nazwisko = htmlspecialchars(stripslashes(trim($_POST["user_nazwisko"])), ENT_QUOTES);
 $user_kpx = htmlspecialchars(stripslashes(trim($_POST["user_kpx"])), ENT_QUOTES);
 $user_stanowisko = htmlspecialchars(stripslashes(trim($_POST["user_stanowisko"])), ENT_QUOTES);
 $user_telefon = htmlspecialchars(stripslashes(trim($_POST["user_telefon"])), ENT_QUOTES);
 $user_organizacja = htmlspecialchars(stripslashes(trim($_POST["user_organizacja"])), ENT_QUOTES);
 $user_grupa = htmlspecialchars(stripslashes(trim($_POST["user_grupa"])), ENT_QUOTES);
 $user_poziom = htmlspecialchars(stripslashes(trim($_POST["user_poziom"])), ENT_QUOTES);
 $user_status = htmlspecialchars(stripslashes(trim($_POST["user_status"])), ENT_QUOTES);

     if (mysql_select_db($mysql_baza)) {
       $wynik = mysql_query("UPDATE users
       SET user_email='$user_email', user_imie='$user_imie', user_nazwisko='$user_nazwisko', user_kpx='$user_kpx', user_stanowisko='$user_stanowisko', user_telefon='$user_telefon', user_organizacja='$user_organizacja', user_grupa='$user_grupa', user_poziom='$user_poziom', user_status='$user_status' WHERE user_id='$_GET[user_id]'");
     } else echo "Nie mo&iquest;na po&sup3;&sup1;czy&aelig; si&ecirc; z baz&sup1;";
   if ($wynik) {
     echo "<center><span style=\"color:green;\">Dane zosta&sup3;y zmienione</span><br /></center>";
//      $_SESSION["user_id"]=$user_id;
   }
  else echo "<center><span style=\"color:red;\">Dane <b>nie</b> zosta&sup3;y zmienione!</span><br /></center>";
}

if ($opcja=="" and $_SESSION["zalogowany"]=="tak") {

$dane=mysql_fetch_assoc(mysql_query("select * from users where user_id='$_GET[user_id]'"));

echo <<<KONIEC
<form action="index.php?str=edytuj&opcja=zmien&user_id={$dane['user_id']}" method="post">
<table align="center" valign="center" border="1">
<tr>
 <td colspan="2" align="center"><strong>EDYCJA UZYTKOWNIKA</srong></td>
</tr>
 <tr>
 <td align="right" width="170"><strong>Login: </strong></td>
 <td align="left"><strong>{$dane['user_login']}</strong></td>
</tr>
<tr>
 <td align="right" width="170"><strong>Adres Email: * </strong></td>
 <td align="left"><input name="user_email" type="text" value="{$dane['user_email']}" size="50" /></td>
</tr>
<tr>
 <td align="right" width="170"><strong>Imi&ecirc;: </strong></td>
 <td align="left"><input name="user_imie" type="text" value="{$dane['user_imie']}" size="50" /></td>
</tr>
<tr>
 <td align="right" width="170"><strong>Nazwisko: </strong></td>
 <td align="left"><input name="user_nazwisko" type="text" value="{$dane['user_nazwisko']}" size="50" /></td>
</tr>
<tr>
 <td align="right" width="170"><strong>Numer KPX: </strong></td>
 <td align="left"><input name="user_kpx" type="text" value="{$dane['user_kpx']}" size="50" maxlength="5" /></td>
</tr>
<tr>
 <td align="right" width="170"><strong>Stanowisko: </strong></td>
 <td align="left"><input name="user_stanowisko" type="text" value="{$dane['user_stanowisko']}" size="50" /></td>
</tr>
<tr>
 <td align="right" width="170"><strong>Numer Telefonu: </strong></td>
 <td align="left"><input name="user_telefon" type="text" value="{$dane['user_telefon']}" size="50" maxlength="10" /></td>
</tr>
<tr>
 <td align="right" width="170"><strong>Komórka Organizacyja: </strong></td>
 <td align="left"><input name="user_organizacja" type="text" value="{$dane['user_organizacja']}" size="50" /></td>
</tr>
<tr>
 <td align="right" width="170"><strong>Grupa U&iquest;ytkowników: </strong></td>
 <td align="left"><select align="left" name='user_grupa' value="{$dane['user_grupa']}" class='textbox'>
   <option value = "101">Test 1</option>
   <option value = "102">Test 2</option>
   <option value = "103">Test 3</option>
 </select></td>
</tr>
<tr>
 <td align="right" width="170"><strong>Poziom Dostepu: </strong></td>
 <td align="left"><select name='user_poziom' value="{$dane['user_poziom']}" class='textbox'>
   <option value = "10">U&iquest;ytkownik</option>
   <option value = "11">Administrator</option>
   <option value = "12">Super Administrator</option>
 </select></td>
</tr>
<tr>
 <td align="right" width="170"><strong>Zablokowany: </strong></td>
 <td align="left"><select name='user_status' class='textbox'>
  <option value="1" <?php if({$dane['user_status']} == '1') echo(' selected'); ?>Tak</option>
  <option value="0" <?php if({$dane['user_status']} == '0') echo(' selected'); ?>Nie</option>
 </select></td>
</tr>
<tr>
 <td align="center" colspan="2"><input type="submit" value="Zapisz Zmiany" /></td>
</tr>
</table>
</form>
KONIEC;

} else {
echo "<center><img src='../img/head.gif' width='970' height='93' /><center>";
echo "<br><br><br><br><br><br><br><br><br>";
echo "<center><b>Jesteś niezalogowany lub nie masz uprawnień do zawartości tej strony !</b></center></br >";
echo "<center><b>Za chwilę nastąpi przekierowanie...</b></center></br >";
echo "<meta http-equiv='refresh' content='3;URL=../' />";
}
?>
Qvazar
wstaw w w pliku przed fromularzem
echo "wartość user_status ".$user_status;
Arti79
Wstawiłem tutaj:

Kod
$dane=mysql_fetch_assoc(mysql_query("select * from users where user_id='$_GET[user_id]'"));

echo "wartość user_status ".$user_status;

echo <<<KONIEC


Po wyświetlenie strony widać tylko:

Kod
wartość user_status
Kuziu
Jak już raz napisałem zamknij najpierw KONIEC a potem dawaj kolejne kody php z tego co przetestowałem php nie łapie nawet <?php po echo <<<KONIEC do czasy aż nie dasz
KONIEC;

Więc daj najpierw to a potem dopiero if'a i ewentualnie potem znów php
Arti79
Jakoś nie łapię co mam zrobić, czy mógłbyś mi na wycinku mojej podstrony pokazać jak to widzisz?

Zastanawia mnie dlaczego resztę danych typu: Imię, Nazwisko itd wyświetla prawidłowo a tego nie chce?

A poza tym, czy jeżeli zamknę KONIEC; a póżniej go otworzę, to czy dane między zamkniętym a otwartym KONIEC nie będą widoczne kiedy użytkownik będzie niezalogowany itd. ?
Kuziu
  1. <?php
  2.  
  3. if ($opcja=="" and $_SESSION["zalogowany"]=="tak") {
  4.  
  5. $dane=mysql_fetch_assoc(mysql_query("select * from users where user_id='$_GET[user_id]'"));
  6.  
  7. echo <<<KONIEC
  8. <form action="index.php?str=edytuj&opcja=zmien&user_id={$dane['user_id']}" method="post">
  9. <table align="center" valign="center" border="1">
  10. <tr>
  11.  <td colspan="2" align="center"><strong>EDYCJA UZYTKOWNIKA</srong></td>
  12. </tr>
  13.  <tr>
  14.  <td align="right" width="170"><strong>Login: </strong></td>
  15.  <td align="left"><strong>{$dane['user_login']}</strong></td>
  16. </tr>
  17. <tr>
  18.  <td align="right" width="170"><strong>Adres Email: * </strong></td>
  19.  <td align="left"><input name="user_email" type="text" value="{$dane['user_email']}" size="50" /></td>
  20. </tr>
  21. <tr>
  22.  <td align="right" width="170"><strong>Imi&ecirc;: </strong></td>
  23.  <td align="left"><input name="user_imie" type="text" value="{$dane['user_imie']}" size="50" /></td>
  24. </tr>
  25. <tr>
  26.  <td align="right" width="170"><strong>Nazwisko: </strong></td>
  27.  <td align="left"><input name="user_nazwisko" type="text" value="{$dane['user_nazwisko']}" size="50" /></td>
  28. </tr>
  29. <tr>
  30.  <td align="right" width="170"><strong>Numer KPX: </strong></td>
  31.  <td align="left"><input name="user_kpx" type="text" value="{$dane['user_kpx']}" size="50" maxlength="5" /></td>
  32. </tr>
  33. <tr>
  34.  <td align="right" width="170"><strong>Stanowisko: </strong></td>
  35.  <td align="left"><input name="user_stanowisko" type="text" value="{$dane['user_stanowisko']}" size="50" /></td>
  36. </tr>
  37. <tr>
  38.  <td align="right" width="170"><strong>Numer Telefonu: </strong></td>
  39.  <td align="left"><input name="user_telefon" type="text" value="{$dane['user_telefon']}" size="50" maxlength="10" /></td>
  40. </tr>
  41. <tr>
  42.  <td align="right" width="170"><strong>Komórka Organizacyja: </strong></td>
  43.  <td align="left"><input name="user_organizacja" type="text" value="{$dane['user_organizacja']}" size="50" /></td>
  44. </tr>
  45. <tr>
  46.  <td align="right" width="170"><strong>Grupa U&iquest;ytkowników: </strong></td>
  47.  <td align="left"><select align="left" name='user_grupa' value="{$dane['user_grupa']}" class='textbox'>
  48.    <option value = "101">Test 1</option>
  49.    <option value = "102">Test 2</option>
  50.    <option value = "103">Test 3</option>
  51.  </select></td>
  52. </tr>
  53. <tr>
  54.  <td align="right" width="170"><strong>Poziom Dostepu: </strong></td>
  55.  <td align="left"><select name='user_poziom' value="{$dane['user_poziom']}" class='textbox'>
  56.    <option value = "10">U&iquest;ytkownik</option>
  57.    <option value = "11">Administrator</option>
  58.    <option value = "12">Super Administrator</option>
  59.  </select></td>
  60. </tr>
  61. <tr>
  62.  <td align="right" width="170"><strong>Zablokowany: </strong></td>
  63.  <td align="left"><select name='user_status' class='textbox'>
  64.   <option value="1"
  65. KONIEC;
  66. if({$dane['user_status']} == '1') echo(' selected');
  67. echo <<<KONIEC
  68. Tak</option>
  69.   <option value="0"
  70. KONIEC;
  71. if({$dane['user_status']} == '0') echo(' selected');
  72. echo <<<KONIEC
  73. Nie</option>
  74.  </select></td>
  75. </tr>
  76. <tr>
  77.  <td align="center" colspan="2"><input type="submit" value="Zapisz Zmiany" /></td>
  78. </tr>
  79. </table>
  80. </form>
  81. KONIEC;
  82.  
  83. } else {
  84. echo "<center><img src='../img/head.gif' width='970' height='93' /><center>";
  85. echo "<br><br><br><br><br><br><br><br><br>";
  86. echo "<center><b>Jesteś niezalogowany lub nie masz uprawnień do zawartości tej strony !</b></center></br >";
  87. echo "<center><b>Za chwilę nastąpi przekierowanie...</b></center></br >";
  88. echo "<meta http-equiv='refresh' content='3;URL=../' />";
  89. }
  90. ?>


Btw dziwna ta budowa tego echo <<< KONIEC

Ja albo bym raczej zamykał tagi i otwierał ?> tekst <?

A jeszcze lepiej uzyl szablonu
Arti79
Niestety nie działa, mam błąd:

Kod
Parse error: parse error, unexpected '<' in .../edytuj.php on line 111


Jakbyś rozwiązał budowę tej podstrony po swojemu ?
Kuziu
Zedytowałem kod, teraz powinien działać.

Ja bym to wrzucił w templaty ale pewnie Ci sie spieszy to nie bedziesz teraz tego zmieniał a jak by co to np. smarty

Albo normalnie zamknął tag php po if'ie

  1. <?php if(cos==3){
  2. ?><tr><td>cos tam <?php echo($zmienna); ?>


Brzydko to wygląda
Arti79
Nie wiem jak wstawić Twój powyższy kod do swojej podstrony ;(
Qvazar
według mnie powino być tak

<option value = "1" <? if($dane['user_status'] == '1') echo(' selected>'); ?>Tak</option>
<option value = "0" <? if($dane['user_status'] == '0') echo(' selected>'); ?>Nie</option>
Kuziu
No juz tak pisałem i tak powinno być ale poza echo typu <<< gdyż w nim nie działają inne komendy php poza wyswietlaniem zmiennych
Qvazar
dokładnie
Arti79
A jak wydzielić to poza echo, żeby cały formularz był umieszczony w warunku który sprawdza czy użytkownik jest zalogowany? tzn. formularz zostanie wyświetlony tylko wtedy jak użytkownik jest zalogowany.
Qvazar
cały fotmularz musisz zapisać w podobny sposób
  1. <?php
  2.  
  3. echo "
  4. <form action=\"index.php?str=edytuj&opcja=zmien&user_id=".$dane['user_id']." method=\"post\">
  5. <table align=\"center\" valign=\"center\" border=\"1\">
  6. <tr>
  7. ...itd
  8.  
  9. ";
  10.  
  11. ?>
Guest
Hmmm... Jak dla meni (moge sie mylić), powod jest prosty:
jak masz <option> i w srodku kod php to potem zapomniales o drugim znaku ">"
masz:


<option value = "1" <? if($dane['user_status'] == '1') echo(' selected>'); ?>Tak</option>
<option value = "0" <? if($dane['user_status'] == '0') echo(' selected>'); ?>Nie</option>

a powinno byc:
<option value = "1" <? if($dane['user_status'] == '1') echo(' selected>'); ?>>Tak</option>
<option value = "0" <? if($dane['user_status'] == '0') echo(' selected>'); ?>>Nie</option>

Przed "tak" i "Nie" jeszcze zamkniecie tagu winksmiley.jpg
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.