Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz a zmienne
Forum PHP.pl > Forum > Przedszkole
BugsBunny
  1. <?php
  2. echo &#092;"
  3. <form action= &#092;"?akcja=edycja2&id=\".$id.\"\" method=\"POST\">
  4. <input type=&#092;"text\" name=\"naglowek_1\" value=\"\".$b['naglowek'].\"\" size=\"77\"><br>
  5. <textarea name=&#092;"tresc_1\" wrap=\"virtual\" cols=\"60\" rows=\"20\">\".$b['tresc'].\"</textarea><br>
  6. <input type=&#092;"submit\" value=\"OK\">
  7. </form>&#092;";
  8. ?>

NO jest formularz który ma edytować dane z Bazy danych. Wyświetla on stare dane zmiennymi $b[''] i wszystko jest pięknie ale.....
Kiedy wcisnę przycisk OK formularz chyba nie przypisuje nowych danych od zmiennych
$tresc_1 i $naglowek_1 przez co po wciśniećiu OK zamiast zmiany danych na nowe w tabeli są usunięte stare tj JAKBY DODAWAŁ PUSTE ZMIENNE

co z tymi zmiennymi questionmark.gifquestionmark.gifquestionmark.gif
nospor
a jak ty odbierasz ten formularz i robisz update?
BugsBunny
  1. <?php
  2. if ($_GET['akcja'] == 'edycja') {
  3. $id = intval($_GET['id']);
  4. include &#092;"dane.php\";
  5. $id_polaczenia = mysql_connect($db_host,$db_user,$db_pass) or die (&#092;"nieudane połącznie z bazą danych\");
  6. $connect = mysql_select_db (&#092;"blog\", $id_polaczenia);
  7. $a = mysql_query(&#092;"SELECT * FROM blog WHERE id='$id'\");
  8. $b = mysql_fetch_array($a)or die (&#092;"błąd\");
  9.  
  10.  
  11. echo &#092;"
  12. <form action= &#092;"?akcja=edycja2&id=\".$id.\"\" method=\"POST\">
  13. <input type=&#092;"text\" name=\"naglowek_1\" value=\"\".$b['naglowek'].\"\" size=\"77\"><br>
  14. <textarea name=&#092;"tresc_1\" wrap=\"virtual\" cols=\"60\" rows=\"20\">\".$b['tresc'].\"</textarea><br>
  15. <input type=&#092;"submit\" value=\"OK\">
  16. </form>&#092;";
  17.  
  18. echo &#092;"$naglowek_1 |i| $tresc_1\";
  19. global $naglowek_1,$tresc_1,$id;
  20. if (isset ($aglowek_1,$tresc_1)){
  21.  
  22.  
  23. $edytuj_1 = &#092;"UPDATE blog SET naglowek='$naglowek_1', tresc='$tresc_1' WHERE id='$id'\";
  24. $edytuj_k = mysql_query($edytuj_1) or die (mysql_error());
  25. echo &#092;"dane zostały pomyślnie zmienione\";
  26. }
  27. ?>


TAK BY TO WYGLĄDAŁO biggrin.gif
nospor
pobierz naglowek i tresc z $_POST. a nie tak jak teraz z powietrza (pewnie masz wylaczone register_globals)
BugsBunny
  1. <?php
  2. echo &#092;"
  3. <form action= &#092;"?akcja=edycja2&id=\".$id.\"\" method=\"POST\">
  4. <input type=&#092;"text\" name=\"naglowek_1\" value=\"\".$b['naglowek'].\"\" size=\"77\"><br>
  5. <textarea name=&#092;"tresc_1\" wrap=\"virtual\" cols=\"60\" rows=\"20\">\".$b['tresc'].\"</textarea><br>
  6. <input type=&#092;"submit\" value=\"OK\">
  7. </form>&#092;";
  8. $_POST['$naglowek_1']= $naglowek_1;
  9. $_POST['tresc_1'] = $tresc_1;
  10.  
  11.  
  12.  
  13.  
  14. $edytuj_1 = &#092;"UPDATE blog SET naglowek='$naglowek_1', tresc='$tresc_1' WHERE id='$id'\";
  15. $edytuj_k = mysql_query($edytuj_1) or die (mysql_error());
  16. echo &#092;"dane zostały pomyślnie zmienione\";
  17. ?>

TAK TO MA BYĆ questionmark.gifquestionmark.gif bo też mi niedziała

niesterty jeszcze się nie znam na tych global, sesiach i $_GET,$_POST
P.S. czym one się różnią
nospor
odwrotnie:
  1. <?php
  2.  
  3. if (!empty($_POST))
  4. {
  5. $naglowek_1=$_POST['$naglowek_1'];
  6. $tresc_1=$_POST['tresc_1'];
  7. //....tutaj update robisz
  8. }
  9.  
  10. ?>
BugsBunny
ja coś problemowy jestem NIC SI NIE ZMIENIA dry.gif
  1. <?php
  2. if ($_GET['akcja'] == 'edycja') {
  3. $id = intval($_GET['id']);
  4. include &#092;"dane.php\";
  5. $id_polaczenia = mysql_connect($db_host,$db_user,$db_pass) or die (&#092;"nieudane połącznie z bazą danych\");
  6. $connect = mysql_select_db (&#092;"blog\", $id_polaczenia);
  7. $a = mysql_query(&#092;"SELECT * FROM blog WHERE id='$id'\");
  8. $b = mysql_fetch_array($a)or die (&#092;"błąd\");
  9.  
  10.  
  11. echo &#092;"
  12. <form action= &#092;"?akcja=edycja2&id=\".$id.\"\" method=\"POST\">
  13. <input type=&#092;"text\" name=\"naglowek_1\" value=\"\".$b['naglowek'].\"\" size=\"77\"><br>
  14. <textarea name=&#092;"tresc_1\" wrap=\"virtual\" cols=\"60\" rows=\"20\">\".$b['tresc'].\"</textarea><br>
  15. <input type=&#092;"submit\" value=\"OK\">
  16. </form>&#092;";
  17. if ($_GET['akcja'] == 'edycja2')
  18. $id = intval($_GET['id']);
  19. if (!empty($_POST))
  20. {
  21. $naglowek_1=$_POST['$naglowek_1'];
  22. $tresc_1=$_POST['tresc_1'];
  23.  
  24.  
  25. $edytuj_1 = &#092;"UPDATE blog SET naglowek='$naglowek_1', tresc='$tresc_1' WHERE id='$id'\";
  26. $edytuj_k = mysql_query($edytuj_1) or die (mysql_error());
  27. echo &#092;"dane zostały pomyślnie zmienione\";
  28. header(&#092;"location: sprawdz.php\");
  29. }
  30. }
  31. ?>


cały kod który edytuje zawartość tabelki aarambo.gif lecz który niespełnia swych powinności blink.gif
nospor
On ci wogole nie wchodzi w update spowodu tego:
if ($_GET['akcja'] == 'edycja') {

ty w tego if'a wkaldasz caly skrypt. A przecież po wyslaniu forumlarza akcja ma wartość edycja2
BugsBunny
nie no to chyba jest dobrze mam mam sobie
  1. <?php
  2. <a href=&#092;"?akcja=edycja&id=\".$id.\"\"> Edytuj </a> 
  3. ?>

i jak go wcisnę do mi się otwiera dopiero forularz ze tego poprzedniego a więc włącza się .

TUTAJ MUSI BYĆ COŚ ŹLE
  1. <?php
  2. if ($_GET['akcja'] == 'edycja2')
  3. $id = intval($_GET['id']);
  4. if (!empty($_POST))
  5. {
  6. $naglowek_1=$_POST['$naglowek_1'];
  7. $tresc_1=$_POST['tresc_1'];
  8. ?>
nospor
ty nie sluchasz tego co mówię, a raczej tego co piszę nei czytasz!!!
Masz if'a na caly ten skrypt że niby akcja ma się równać edycja. No i ok. Ale jak zrobisz submit na formularzu to akcja ci się zmienia na edycja2 i wogole nie wejdze w tego ifa. muszisz np. dodac jeszcze jeden warunek
if ($_GET['akcja'] == 'edycja' || $_GET['akcja'] == 'edycja2') {
BugsBunny
  1. <?php
  2. if ($_GET['akcja'] == 'edycja') {
  3. $id = intval($_GET['id']);
  4. include &#092;"dane.php\";
  5. $id_polaczenia = mysql_connect($db_host,$db_user,$db_pass) or die (&#092;"nieudane połącznie z bazą danych\");
  6. $connect = mysql_select_db (&#092;"blog\", $id_polaczenia);
  7. $a = mysql_query(&#092;"SELECT * FROM blog WHERE id='$id'\");
  8. $b = mysql_fetch_array($a)or die (&#092;"błąd\");
  9.  
  10.  
  11. echo &#092;"
  12. <form action= &#092;"?akcja=edycja2&id=\".$id.\"\" method=\"POST\">
  13. <input type=&#092;"text\" name=\"naglowek_1\" value=\"\".$b['naglowek'].\"\" size=\"77\"><br>
  14. <textarea name=&#092;"tresc_1\" wrap=\"virtual\" cols=\"60\" rows=\"20\">\".$b['tresc'].\"</textarea><br>
  15. <input type=&#092;"submit\" value=\"OK\">
  16. </form>&#092;";
  17. echo &#092;"1\";
  18. if ($_GET['akcja'] == 'edycja2' || $_GET['akcja'] == 'edycja')
  19. $id = intval($_GET['id']);
  20. echo &#092;"2\";
  21.  
  22. echo &#092;"3\";
  23. $naglowek_1=$_POST['$naglowek_1'];
  24. $tresc_1=$_POST['tresc_1'];
  25. echo &#092;"$naglowek_1  i $tresc_1\";
  26.  
  27. $edytuj_1 = &#092;"UPDATE blog SET naglowek='$naglowek_1', tresc='$tresc_1' WHERE id='$id'\";
  28. $edytuj_k = mysql_query($edytuj_1) or die (mysql_error());
  29. echo &#092;"dane zostały pomyślnie zmienione\";
  30.  
  31.  
  32. }
  33. ?>


DODAŁEM ECHO z cyframi żeby widzeć co się wykonuje - no i się wszystko wykonuje 1,2,3 ale z tego | echo "$naglowek_1 i $tresc_1"; | wyświetla tylko | i | angrysmiley.gif
już mnie to zaczyna denerwować - zostało mi tylko to żeby skończyć angrysmiley.gif
L_Devil
Linia 25:

Masz:
  1. <?php
  2. $naglowek_1=$_POST['$naglowek_1'];
  3. ?>


Powinno być:
  1. <?php
  2. $naglowek_1=$_POST['naglowek_1'];
  3. ?>
(bez znaku dolara przed 'naglowek_1')
BugsBunny
I tak wpisywane zmienne do bazy danych są puste ;/
L_Devil
dodaj na końcu
  1. <?php
  2. print_r($_POST);
  3. ?>
i powiedz co napisało.
nospor
stary, ty nie czytasz tego co piszę. masz tu gotowy skrypt bo szalu dostane:
  1. <?php
  2.  
  3. if ($_GET['akcja'] == 'edycja' || $_GET['akcja'] == 'edycja2') {
  4.   $id = intval($_GET['id']);
  5. include &#092;"dane.php\";
  6.   $id_polaczenia = mysql_connect($db_host,$db_user,$db_pass) or die (&#092;"nieudane połącznie z bazą danych\");
  7. $connect = mysql_select_db (&#092;"blog\", $id_polaczenia);
  8. $a = mysql_query(&#092;"SELECT * FROM blog WHERE id='$id'\");
  9. $b = mysql_fetch_array($a)or die (&#092;"błąd\");
  10.  
  11.  
  12. echo &#092;"
  13. <form action= &#092;"?akcja=edycja2&id=\".$id.\"\" method=\"POST\">
  14. <input type=&#092;"text\" name=\"naglowek_1\" value=\"\".$b['naglowek'].\"\" size=\"77\"><br>
  15. <textarea name=&#092;"tresc_1\" wrap=\"virtual\" cols=\"60\" rows=\"20\">\".$b['tresc'].\"</textarea><br>
  16. <input type=&#092;"submit\" value=\"OK\">
  17. </form>&#092;";
  18. echo &#092;"1\";
  19. if ($_GET['akcja'] == 'edycja2')
  20. {
  21.   $id = intval($_GET['id']);
  22.   echo &#092;"2\";
  23.  
  24. echo &#092;"3\";
  25. $naglowek_1=$_POST['naglowek_1'];
  26. $tresc_1=$_POST['tresc_1'];
  27. echo &#092;"$naglowek_1   i $tresc_1\";
  28.  
  29. $edytuj_1 = &#092;"UPDATE  blog  SET naglowek='$naglowek_1', tresc='$tresc_1' WHERE id='$id'\";
  30. $edytuj_k = mysql_query($edytuj_1) or die (mysql_error());
  31. echo &#092;"dane zostały pomyślnie zmienione\";
  32. }
  33.  
  34. }
  35.  
  36. ?>


edit: warunek na akcja2 na poczatku skryptu miales dac a nie w srodku, kiedy do niego nie wchodzi.Przytwoim zapisie wypisywalo ci 123 i bo przed wyslanie mformularza tam wchodzil, ale dane z posta byly puste. po wyslaniu formularza akcja ci sie zmienila i nic ci wtedy nie wyswietlal bo nie wszedl w ten warunek
BugsBunny
NARESZCIE DZIAŁA DZIKI moge kończyć swoją prace smile.gif



---------------------------------------------------------------------------------------------------

a jak chce zrobić żeby po zmianie danych spowtorem przekierowało mnie na strone sprawdz.php a nie sprawdz.php?akcja.....

  1. <?
  2. header (&#092;"location: sprawdz.php\");
  3. ?>

bo to nie działa nie mozę przejść do tego samgo pliku chyba i pokazuje to
Kod
Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\blog2\sprawdz.php:2) in c:\usr\krasnal\www\blog2\sprawdz.php on line 80
nospor
Następnym razem analizuj troche dokladniej co ci mówią. Do kontroli bledów używaj chociażby zwyklego echo prze warunkiem, po warunku. Trochę samodzielności
strife
Cytat(BugsBunny @ 2005-06-07 14:45:28)
Kod
Warning: Cannot modify header information - headers already sent by (output started at c:\usr\krasnal\www\blog2\sprawdz.php:2) in c:\usr\krasnal\www\blog2\sprawdz.php on line 80

Masz w tym pliku jakąś zbędną spację na początku, a nie powinno nic być. Jeśli to nie pomorze to ob_start" title="Zobacz w manualu PHP" target="_manual na początku powinno pomóc...
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.