Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL][html] aktualizacja listy rozwijanej
Forum PHP.pl > Forum > Przedszkole
szuwar
WItam. Jestem początkujący przy tworzeniu stron, mam więc pewien problem.
Mam listę rozwijaną o nazwie waga, przyjmuje ona wartości od 1 do 150, wartość domyślną(tą co ma być na początku,gdy otwieram stronę) pobiera z bazy mysql, następnie gdy wybieram inną wartość listy, po kliknięciu przycisku np. submit ma nastąpić aktualizacja pola w bazie na wartość którą wybrałem i na liście ma być wyświetlona wartość którą podałem.
Wszystko ładnie pobiera, tworzy listę, ustawia wartość, ale po zmianie wartości listy rozwijanej i klinięciu przycisku w bazie następuje zmiana wartości, ale wartość jaka się pojawia na liście to wartość domyślna ta na początku, gdy kliknę przycisk znowu to wartość wyświetlona na liście zmienia się na tą co wybrałem wcześniej, ale w bazie zmienia się wartość na początkową i tak w kółko.
Obrazując w przykładzie wygląda to tak:
wartość na liście rozwijanej | wartość którą wybrałem
5 7
7 5
5 7
i tak w kółko. Oto część kodu odpowiedzialna za to
Kod
<form action="test.php" method="POST">
<SELECT name="waga">
<?

$query="SELECT * FROM user where username='$username';";
$result=mysql_query($query);
$waga=mysql_result($result,0,"waga");
echo "<option selected>$waga</option>";

$i=0;
while($i<150)
{
echo '<OPTION value="'.$i.'">';
echo "$i";
$i++;
echo "</OPTION>";
}


?>
</SELECT>

<?


if($waga=$_POST['waga']){
$query = "UPDATE user SET waga='$waga' where username='$username';";
mysql_query($query);
echo "test : ";
echo $waga;
}
?>



Może jakiś głupi błąd popełniłem, dopiero się uczę tego wszystkiego.
PanGuzol
  1. <?php
  2. if($waga=$_POST['waga'])
  3. ?>

Ten warunek zawsze bedzie spełniony użyj funkcji isset" title="Zobacz w manualu PHP" target="_manual do sprawdzenia czy zmienna $_POST['waga'] istnieje
szuwar
Nie wiem czy dobrze zrobiłem,ale nadal to samo, kod zmieniłem następująco:

Kod
<form action="test.php" method="POST">
   <SELECT name="waga">
   <?
  
   $query="SELECT * FROM user where username='$username';";
   $result=mysql_query($query);
   $waga=mysql_result($result,0,"waga");
   echo "<option selected>$waga</option>";
  
   $i=0;
   while($i<150)
   {
   echo '<OPTION value="'.$i.'">';
   echo "$i";
   $i++;
   echo "</OPTION>";
   }
  
  
   ?>
   </SELECT>
  
   <?
  
  
   if(isset($_POST['waga'])){
  $waga=[/b][/b][b][b]$_POST['waga'];[/b][/b]
  [b][b] $query = "UPDATE user SET waga='$waga' where username='$username';";
   mysql_query($query);
   echo "test : ";
   echo $waga;
   }
   ?>
PanGuzol
  1. <?
  2.  
  3.  
  4.  if(isset($_POST['waga'])){
  5. $waga=[/b][/b][b][b]$_POST['waga'];[/b][/b]
  6. [b][b] $query = "UPDATE user SET waga='$waga' where username='$username';";
  7.  mysql_query($query);
  8.  echo "test : ";
  9.  echo $waga;
  10.  }
  11.  ?>

Ten blok kodu umieść na samym początku tzn. przed pobraniem danych do formularza.
szuwar
Dzięki, pomogło. Sam męczyłem się z tym ponad 3h sciana.gif

Mam takie jeszcze jedno małe pytanie;), żeby zatwierdzić coś, zaktualizować pole klikam na
Kod
<input type="submit" name="submit" value="submit" />

i wtedy aktualizują sie wszystkie rzeczy na stronie, a gdy będę miał np 10 list rozwijanych i bym chciał żeby do każdej był osobny przycisk? Jest na to jakiś sposób?
PanGuzol
Każda lista jako osobny formularz.
  1. Pierwsza lista
  2. </form>
  3. Druga lista
  4. </form>
  5. trzecia lista
  6. </form>
  7. ...
szuwar
Mam już tak i to nic nie daje, ponieważ i tak mam jeden przycisk i jak go kliknę to wszystkie pola są aktualizowane. Może źle to wytłumaczyłem. Szkielet mojej strony wygląda następująco:
Kod
kod html
<form action="test.php" method="POST">
//lista rozwijana
<SELECT name="p1">
.
.
.
</Select>

</form>

//przechwytywanie tego co wysyła lista

<form action="test.php" method="POST">
//lista rozwijana
<SELECT name="p2">
.
.
.
</Select>

</form>
//przechwytywanie tego co lista wysyła
.
.
.
.
<input type="submit" name="submit" value="submit" />


I jak kliknę submit, to z każdej listy odczytywana jest aktualna pozycja i wysyłana, a chce żeby do każdej listy/formularza był osobny przycisk, który by tylko dla niego działał.
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.