Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Lista wyboru + mysql
Forum PHP.pl > Forum > Przedszkole
starter91php
Witam, mam problem z napisaniem skryptu listy wyboru, w ktorej mozliwosci stanowia rekordy z kolumny 'nazwa' z bazy danych mysql. Wlasciwie to nie wiem nawet jak sie do tego zabrac, zamysl jest taki, ze obok pola wyboru bedzie pole tekstowe, w ktore zostanie wpisana wartosc, ktora ma zastapic ta wybrana z listy w bazie :]
Glowny problem stanowi dla mnie napisanie tej rozwijalnej listy, ofc ;p Znalazlem z 2 przyklady w sieci, ale nie zostalo to tam przedstawione wystarczajaco przejrzyscie.



Any ideas? ; )
zelu
  1. <?php
  2. $query = "SELECT nazwa FROM tabela";
  3. $result = mysql_query($query) or die(mysql_error());
  4.  
  5. echo '<select>\n';
  6. while($row = mysql_fetch_assoc($result))
  7. {
  8.    echo '<option value="costam">'.$row['nazwa'].'</option>\n';
  9. }
  10. echo '</select>\n';
  11. ?>


Oczywiście wcześniej musi być ustanowione połączenie z bazą.

Kod pisany z palca, więc może mieć jakieś błędy, ale idee masz... dalej sam kombinuj :]

Pozdro
starter91php
Jak moge sie odwolac do opcji ktora wybralem w tej liscie? Np jesli wpisalem wartosc w textarea, i ma ona zastapic w bazie SQL wartosc ktora wybralem w tej liscie smile.gif

CODE
mysql_query(""UPDATE `baza` SET `nazwa` = '".$_POST['textarea']."' WHERE `nazwa`='tutaj opcja z listy'");


Nie wiem co wpisac w wiadome miejsce : )))
peter13135
$_POST['costam']

<option value="costam">
starter91php
Wszystko niby ok, ale po wybraniu opcji z listy i wpisaniu zastepczej nazwy w textarea pojawia sie komunikat o udanej operacji, jednak nic w bazie sie nie zmienia :/.
Ponizej kod pola edycji, i "procesu" aktualizacji bazy. Lista tak jak wyzej.

  1. pole edycji:
  2. <?php
  3. function ShowForm($komunikat=""){    
  4.    echo "$komunikat<br>";
  5.    echo "<form action='edytuj.php' method=post>";
  6.    echo "Nazwa: <input type=text name=nazwaedit><br>";
  7.    echo "<input type=hidden value='1' name=sendedit>";
  8.    echo "<input type=submit value='edytuj'>";
  9.    echo "</form>";
  10. }
  11.  
  12. atualizacja rekordu w bazie:
  13.  
  14. if($_POST["sendedit"]==1){
  15.    if(!empty($_POST["nazwaedit"]))
  16. if(mysql_num_rows(mysql_query("select * from `baza` where `nazwa`='".htmlspecialchars($_POST['nazwaedit']."'"))))ShowForm("jest juz taka nazwa");
  17.            else{  
  18.            mysql_query("UPDATE `baza` SET `nazwa` = '".$_POST['nazwaedit']."' WHERE `nazwa`='".$_POST['costam']."'");
  19.            echo "edycja przebiegla ok, przejdz do strony głównej";
  20.            }
  21. }  
  22.    else ShowForm("Sprobuj jeszcze raz!");
  23. ?>
melkorm
odwołujesz się do nazwy select'a a nie value w option.

  1. <?php
  2. $_POST['nazwa_z_selekta'] = 'wybrana wartosc';
  3. ?>
pianta_d
Zobacz jak ja to robię


  1. <?php
  2. echo '<select name=miej>';
  3. $result = mysql_query("SELECT * FROM `miejscowosci` ORDER BY `nazwa_msc` ASC");
  4. while ($row = mysql_fetch_assoc($result)) {
  5. echo '<option value='.$row["id_msc"].'>'.$row["nazwa_msc"].'</option>';
  6. }
  7. echo '</select>';
  8. ?>


Później w dodaniu do bazy

  1. <?php
  2. ("INSERT INTO `osrodki` (`miejscowosc`) VALUES ('".$_POST['miej']."')");
  3. ?>



Podmień sobie i powinno działać

Pozdrawiam
starter91php
Tak to teraz wyglada:
  1. <?php
  2. echo '<select name=nazwaselect>';
  3. $result = mysql_query("SELECT `nazwa` FROM `content`");
  4. while ($row = mysql_fetch_assoc($result)) {
  5. echo '<option value=".$row["id"].">'.$row["nazwa"].'</option>';
  6. }
  7. echo '</select>';
  8. ?>
  9.  
  10. <?php
  11. if($_POST["sendedit"]==1){
  12.    if(!empty($_POST["nazwaedit"]))
  13.    if(mysql_num_rows(mysql_query("select * from `content` where `nazwa`='".htmlspecialchars($_POST['nazwaedit']."'"))))ShowForm("jest juz taki rekord");
  14.            else{    
  15.            mysql_query("UPDATE `content` SET `nazwa` = '".$_POST['nazwaedit']."' WHERE `nazwa`='".$_POST['nazwaselect']."'");
  16.            echo "edycja przebiegla ok, przejdz do <a href='testaa.php'>strony głównej</a>";
  17.            }
  18. }    
  19.    else ShowForm("Sprobuj jeszcze raz!");
  20. ?>


Formularz w ktory wpisuje zastepujaca wartosc ma name "nazwaedit", jak wczesniej przedstawilem :]. Dalej nic sie nie zmienia - rekord w bazie pozostaje bez zmian.

Probowalem tez to zrobic jako 1 formularz:
  1. <?php
  2. function ShowForm($komunikat=""){    
  3.    echo "$komunikat<br>";
  4.    echo "<form action='edytuj.php' method=post>";
  5.    echo "Nazwa: <input type=text name=nazwaedit><br>";
  6.    echo "<input type=hidden value='1' name=sendedit>";
  7.    echo "<select name=nameselect>";
  8.  $result = mysql_query("SELECT `nazwa` FROM `content`");
  9.  while ($row = mysql_fetch_assoc($result)) {
  10.  echo '<option value="costam">'.$row["nazwa"].'</option>';
  11.  }  
  12.  echo '</select>';
  13.    echo "<input type=submit value='edytuj'>";
  14.    echo "</form>";
  15. ?>
melkorm
daj przed tym :

  1. <?php
  2. if($_POST["sendedit"]==1)
  3. ?>


to:

  1. <?php
  2. var_dump($_POST);
  3. ?>


i pokaż nam co wypluło ;]
starter91php
przed dokonaniem edycji: array(0) { }
po edycji: array(2) { ["nazwaedit"]=> string(6) "nazwa2" ["sendedit"]=> string(1) "1" }
"nazwa2" - wpisalem w formularzu ;]


W opcji z "duzym" formularzem:
po edycji: array(3) { ["nazwaedit"]=> string(6) "nazwa2" ["sendedit"]=> string(1) "1" ["nameselect"]=> string(6) "costam" }

ps. moze mam cos nie tak z zapytaniem aktualizacji rekordu? Bo juz wymiekam przy tym :]
melkorm
Wklej caly kod, aktualny, ze wszytkich plików winksmiley.jpg
pianta_d
Witam

Też tak mi się wydaje, dlatego sprawdź jeszcze zamiast

  1. <?php
  2. "select * from `content` where `nazwa`='".htmlspecialchars($_POST['nazwaedit']."'"
  3. ?>


zmień na

  1. <?php
  2. "select * from `content` where `nazwa`=".htmlspecialchars($_POST['nazwaedit'].""
  3. ?>
starter91php
plik edytuj.php

  1. <?php
  2. $host = "localhost";
  3. $user = "user";
  4. $pass = "password";
  5. $db = "baza";
  6.  
  7. $connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
  8.  
  9. mysql_select_db($db) or die ("Unable to select database!");
  10.  
  11. function ShowForm($komunikat=""){    
  12.    echo "$komunikat<br>";
  13.    echo "<form action='edytuj.php' method=post>";
  14.    echo "Nazwa: <input type=text name=nazwaedit><br>";
  15.    echo "<input type=hidden value='1' name=sendedit>";
  16.    echo "<input type=submit value='edytuj'>";
  17.    echo "</form>";
  18. }
  19.  
  20. ?>
  21. <!DOCTYPE html
  22.    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  23.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  24. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  25. <head>
  26.    <title>Edytuj rekord</title>
  27. </head>
  28. <body>
  29. <?php
  30. echo '<select name=nameselect>';
  31. $result = mysql_query("SELECT `nazwa` FROM `content`");
  32. while ($row = mysql_fetch_assoc($result)) {
  33. echo '<option value=".$row["id"].">'.$row["nazwa"].'</option>';
  34. }
  35. echo '</select>';
  36. ?>
  37.  
  38. <?php
  39. var_dump($_POST);
  40. if($_POST["sendedit"]==1){
  41.    if(!empty($_POST["nazwaedit"]))
  42.    if(mysql_num_rows(mysql_query("select * from `content` where `nazwa`='".htmlspecialchars($_POST['nazwaedit']."'"))))ShowForm("jest juz taki rekord");
  43.            else{    
  44.            mysql_query("UPDATE `content` SET `nazwa` = '".$_POST['nazwaedit']."' WHERE `nazwa`='".$_POST['nameselect']."'");
  45.            echo "edycja przebiegla ok, przejdz do <a href='testaa.php'>strony głównej</a>";
  46.            }
  47. }    
  48.    else ShowForm("Sprobuj jeszcze raz!");
  49. ?>
  50.  
  51.  
  52. </body>
  53. </html>
zelu
  1. <?php
  2. echo '<select name=nameselect>';
  3. ?>


na

  1. <?php
  2. echo '<select name="nameselect">';
  3. ?>


  1. <?php
  2. mysql_query("UPDATE `content` SET `nazwa` = '".$_POST['nazwaedit']."' WHERE `nazwa`='".$_POST['nameselect']."'");
  3. ?>


na

  1. <?php
  2. mysql_query("UPDATE `content` SET `nazwa` = '".$_POST['nazwaedit']."' WHERE id=".$_POST['nameselect'].);
  3. ?>



A poza tym masz trochę bałaganu w tym kodzie winksmiley.jpg

i po co jest ta linijka?

  1. <?php
  2. if(!empty($_POST["nazwaedit"]))
  3. ?>
starter91php
Kod po Twoich modyfikacjach:
  1. <?php
  2. $host = "localhost";
  3. $user = "";
  4. $pass = "";
  5. $db = "";
  6.  
  7. $connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
  8.  
  9. mysql_select_db($db) or die ("Unable to select database!");
  10.  
  11. function ShowForm($komunikat=""){    
  12.   echo "$komunikat<br>";
  13.   echo "<form action='edytuj2.php' method=post>";
  14.   echo "Nazwa: <input type=text name=nazwaedit><br>";
  15.   echo "<input type=hidden value='1' name=sendedit>";
  16.   echo "<input type=submit value='edytuj'>";
  17.   echo "</form>";
  18. }
  19.  
  20. ?>
  21. <!DOCTYPE html
  22.   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  23.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  24. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  25. <head>
  26.   <title>Edytuj rekord</title>
  27. </head>
  28. <body>
  29. <?php
  30. echo '<select name="nameselect">';
  31. $result = mysql_query("SELECT `nazwa` FROM `content`");
  32. while ($row = mysql_fetch_assoc($result)) {
  33. echo '<option value=".$row["id"].">'.$row["nazwa"].'</option>';
  34. }
  35. echo '</select>';
  36. ?>
  37.  
  38. <?php
  39. var_dump($_POST);
  40. if($_POST['sendedit']==1){
  41.   if(!empty($_POST['nazwaedit']))
  42.   if(mysql_num_rows(mysql_query("select * from `content` where `nazwa`='".htmlspecialchars($_POST['nazwaedit']."'"))))ShowForm("jest juz taki rekord");
  43.           else{    
  44.           mysql_query("UPDATE `content` SET `nazwa` = '".$_POST['nazwaedit']."' WHERE id='".$_POST['nameselect']."'");
  45.           echo "edycja przebiegla ok, przejdz do <a href='testaa.php'>strony głównej</a>";
  46.           }
  47. }    
  48.   else ShowForm("Sprobuj jeszcze raz!");
  49. ?>
  50.  
  51.  
  52. </body>
  53. </html>



czemu tak?
  1. <?php
  2. id='".$_POST['nameselect']."'
  3. ?>


Ta linijka to dlatego, zeby trzeba bylo cos w textarea wpisac :]

ps. oczywiscie dalej nichuja :]
zelu
  1. <?php
  2. $host = "";
  3. $user = "";
  4. $pass = "";
  5. $db = "";
  6.  
  7. $connection = mysql_connect($host, $user, $pass) or die ("Unable to connect!");
  8.  
  9. mysql_select_db($db) or die ("Unable to select database!");
  10.  
  11. function ShowForm($komunikat=""){    
  12.    echo $komunikat."<br />";
  13.    echo '<form action="test.php" method="post">';
  14.    echo '<select name="nameselect">';
  15.    $result = mysql_query("SELECT id, nazwa FROM `content`") or die(mysql_error());
  16.    while ($row = mysql_fetch_assoc($result))
  17.    {
  18.        echo '<option value="'.$row["id"].'">'.$row["nazwa"].'</option>';
  19.    }
  20.    echo '</select>';
  21.    echo '<br />';
  22.    echo 'Nazwa: <input type="text" name="nazwaedit" /><br />';
  23.    echo '<input type="hidden" value="1" name="sendedit" />';
  24.    echo '<input type="submit" value="edytuj" />';
  25.    echo '</form>';
  26. }
  27.  
  28. ?>
  29. <!DOCTYPE html
  30.  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  31.  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  32. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  33. <head>
  34.  <title>Edytuj rekord</title>
  35. </head>
  36. <body>
  37. <?php
  38.  
  39. ?>
  40.  
  41. <?php
  42. //var_dump($_POST);
  43. if($_POST['sendedit']==1)
  44. {
  45.    
  46.      
  47.    if(mysql_num_rows(mysql_query("select * from `content` where `nazwa`='".htmlspecialchars($_POST['nazwaedit']."'"))))
  48.        ShowForm("jest juz taki rekord");
  49.    else
  50.    {
  51.        mysql_query("UPDATE `content` SET `nazwa` = '".$_POST['nazwaedit']."' WHERE id=".$_POST['nameselect']) or die(mysql_error());
  52.        echo "edycja przebiegla ok, przejdz do <a href='test.php'>strony głównej</a>";
  53.    }
  54. }    
  55. else
  56.    ShowForm("Sprobuj jeszcze raz!");
  57.  
  58. ?>
  59.  
  60.  
  61. </body>
  62. </html>


EDIT kodu.

Miałeś w złym miejscu wstawione wyświetlanie selecta... Select musi być w obrębie formularza żeby działał winksmiley.jpg Teraz już wszystko śmiga
starter91php
Masz u mnie flaszke ; )
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.