Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Da się zrobić dwa atrybuty action w jednym formularzu?
Forum PHP.pl > Forum > PHP
Tomasz2801
Witam
Czy da się zrobić dwa atrybuty action i dwa przyciski submit w jednym formularzu? Chcę żeby dane z formularza przechodziły do różnych skryptów php w zależności który przycisk nacisnę
  1. <?php
  2. echo("<form action=wyswietl_zamowienie.php method=post />");
  3.  
  4. echo("<input type= submit value=Generuj_zamówienie>");
  5.  
  6. //echo("<form action=dodaj_do_zamowione.php method=post />");
  7.  
  8. //echo("<input type= submit value=Dodaj_zamówienie>");
  9.  
  10. $j=0;
  11. $i=0;
  12.  
  13. while ($row= mysql_fetch_row($wynik)) {
  14.  
  15. $i++;
  16. echo("<tr>");
  17.  
  18.  
  19. echo("<td>".$row['1']."</td>");
  20. echo("<td>".$row['2']."</td>");
  21. echo("<td>".$row['3']."</td>");
  22. echo("<td>".$row['4']."</td>");
  23. $y = $row['6'];
  24. $x = $row['5'];
  25. if ($x >= $y){
  26. echo("<td>".$row['5']."</td>");
  27. echo("<td> OK min : $y</td>");
  28.  
  29. }
  30. else{
  31. echo("<td bgcolor=red>".$row['5']."</td>");
  32. echo("<td> mało minimum : $y</td>");
  33. }
  34. echo("<td>".$row['7']."</td>");
  35. echo"<td align=center>".'<input type="text" name= "o_ile[]" value=0 size="5" />'."</td>";
  36.  
  37. echo"<input type=hidden name=tab[] value=".$tab[$j]=$row['0']." size=5/>";
  38. $j++;
  39. echo("</tr>");
  40.  
  41. }
  42.  
  43.  
  44. echo("</form>");
  45. mysql_close($mysql_id);
  46.  
  47.  
  48. ?>
nospor
Formularz moze miec tyko jedno action.
Ale w tym skrypcie z action jestes bezproblemu w stanie stwierdzic ktory guzik wcisnieto i dzieki temy wykonac to co ma byc wykonane
Tomasz2801
Ale nie można zrobić dwóch action w ten sposób co poniżej, gdyż obojętnie który przycisk wcisnę wykonuje skrypt wyswietl_zamowienie.php
Nie wiem jak to rozwiązać, w drugim formularzu mam podobny problem, po wpisaniu danych do formularza chciałbym aby w zależności od wciśniętego przycisku przeszedł do wybranego skryptu i dodał lub odjął z bazy podaną ilość.
  1. echo("<form action=wyswietl_zamowienie.php method=post />");
  2.  
  3. echo("<input type= submit value=Generuj_zamówienie>");
  4.  
  5. echo("<form action=dodaj_do_zamowione.php method=post />");
  6.  
  7. echo("<input type= submit value=Dodaj_zamówienie>");

Chyba z 10 lat nie robiłem żadnego projektu, a teraz w pracy potrzebujemy prostą bazę danych, zadeklarowałem się że ją zrobię, już z nią walczę ze dwa tygodnie, prawie mam już gotową ale z tym nie mogę sobie poradzić.
gino
I w czym problem zrobić to tak, jak pisze nospor?
Wstaw dwa submit-y o różnych nazwach a w pliku do którego odwołuje się formularz zbadaj, który został wciśnięty i jaki kod ma się wykonać, np.:
Kod
if($_POST['add_table']) {
//dodaj rekord do bazy
}

if($_POST['sub_table']) {
  //odejmij rekordy czy co tam chcesz
}
trueblue
Możesz użyć atrybutu formaction.
https://kawalekkodu.pl/einstein-w-formie-cz...ormularz-na-dwa
Tomasz2801
Dziękuje bardzo! atrybut formaction załatwił sprawe yahoo.gif
Jeszcze jeden problem. Stworzyłem funkcje do łączenia z bazą w osobnym pliku
  1. <?php
  2.  
  3. // definicja funkcji łaczenia z bazą
  4. function laczeniezbaza()
  5. {
  6. $mysql_id = mysql_connect('localhost', 'root', '');
  7. mysql_select_db('kontur', $mysql_id);
  8.  
  9. }
  10.  
  11. ?>


dołączam ją w innym, łączy mnie z bazą wczytuje dane z bazy ale jest problem z zamknięciem połączenia,wywala błąd : Warning: mysql_close() expects parameter 1 to be resource, null given in C:\WebServ\httpd\kontur3.2\pokaz_tekture.php on line 75

  1. <?php
  2. include("laczeniezbaza.php");
  3. laczeniezbaza();
  4.  
  5. //$mysql_id = mysql_connect('localhost', 'root', '');
  6. //mysql_select_db('kontur', $mysql_id);
  7.  
  8.  
  9. $wynik = mysql_query("SELECT * FROM tektura WHERE id > 0 ORDER BY fala_kolor, dl");
  10.  
  11.  
  12. ?>
  13.  
  14.  
  15. <table border="1" width="85%">
  16. <tr >
  17.  
  18.  
  19. <th width="95">wymiary</th>
  20. <th width="95">klient</th>
  21. <th width="95">fala/kolor</th>
  22. <th width="95">ilość</th>
  23. <th width="95">stan minimalny</th>
  24. <th width="95">zamówione</th>
  25.  
  26. </tr>
  27.  
  28. <?php
  29.  
  30. laczeniezbaza();
  31. $j=0;
  32. $i=0;
  33.  
  34. while ($row= mysql_fetch_row($wynik)) {
  35.  
  36. $i++;
  37. echo("<tr>");
  38.  
  39.  
  40.  
  41. echo("<td>".$row['8']."</td>");
  42. echo("<td>".$row['3']."</td>");
  43. echo("<td>".$row['4']."</td>");
  44.  
  45. $y = $row['6'];
  46. $x = $row['5'];
  47. if ($x >= $y){
  48. echo("<td>".$row['5']."</td>");
  49. echo("<td> OK min : $y</td>");
  50.  
  51. }
  52. else{
  53. echo("<td bgcolor=red>".$row['5']."</td>");
  54. echo("<td> mało minimum : $y</td>");
  55. }
  56. echo("<td>".$row['7']."</td>");
  57.  
  58. $j++;
  59. echo("</tr>");
  60.  
  61. }
  62.  
  63.  
  64. echo("</form>");
  65. mysql_close($mysql_id);
  66.  
  67.  
  68. ?>
  69. <table />
  70.  
gino
skąd niby plik pokaz_tekture.php ma wiedzieć o obiekcie $mysql_id, skoro ten został utworzony wewnątrz funkcji laczeniezbaza() i nie został przez tą funkcję zwrócony?
Poczytaj o zasięgu zmiennych w php.
Mysql został zdeprecjonowany w wersji php 5.5, a usunięty w 7.0. Użyj mysqli albo klasy PDO.
Tomasz2801
Tylko ja się zatrzymałem na php 5, i tak też robię mój projekt, myślałem że tu też da się to jakoś rozwiązać nie zmieniając wszystkiego. Próbowałem zwrócić myslid dodając do funkcji :
  1. return $mysql_id;

ale nic to nie dało.
viking
  1. $mysql_id = laczeniezbaza();
Tomasz2801
Cytat(viking @ 1.05.2021, 15:49:40 ) *
  1. $mysql_id = laczeniezbaza();

Dziękuję bardzo! kolejny raz mi pomogliście, niby proste a ja się z tym tyle męczyłem.
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.