Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PHP array do dwóch funkcji
Forum PHP.pl > Forum > Przedszkole
Ar4ass
Może od początku, mam inputa text z metoda post który pobiera wartość z pola text oraz dwa submity dodaj oraz sprawdź po kliknięciu dodaj ma dodać do array wartość a po kliknięciu sprawdź ma wyświetlić cała tablice z dodanym wierszem. Jakieś pomysły? Próbowałem dwoma funkcjami to nie wiem jak przesłać gotowa tablice do drugiej funkcji :c
markuz
Pokaż kod.
Ar4ass
Aktualnie nie mam bo leżę w łóżku ale głównie chodzi mi o to jak przerzucić gotowa array do drugiej funkcji jak sam byś to zrobił.
markuz
  1. $array = [1, 2, 3];
  2.  
  3. function test($array) {
  4. var_export($array);
  5. }
  6.  
  7. test($array);
Tomplus
A gdzie tutaj jest OOP?
Ar4ass
Mam taki kod:

  1. <?php
  2. $tablica = ["Piesek", "Kotek"];
  3.  
  4. function add(){
  5. global $tablica;
  6.  
  7. $element = $_POST["element"];
  8.  
  9. if($element==NULL){
  10. echo "Wprowadź wartośc.";
  11. }
  12. else{
  13.  
  14. array_push($tablica, $element);
  15.  
  16. echo "Element: '" . $element . "' został dodany do tablicy.<br/><br/>";
  17.  
  18. var_export($tablica);
  19. }
  20. }
  21.  
  22. function check(){
  23. global $tablica;
  24.  
  25. echo "Cała tablica: <br/>";
  26. for($i=0; $i<=count($tablica)-1; $i++){
  27. echo $tablica[$i] . "<br/>";
  28. }
  29. }
  30.  
  31. if(isSet($_POST["check"])){
  32. check();
  33. }
  34.  
  35. if(isSet($_POST["add"])){
  36. add();
  37. }
  38. else{
  39. echo "Wprowadź wartość.";
  40. }
  41. ?>


I chodzi mi o to ze pierwsza funkcja ma dodawać element a druga wyświetlać cała tablice.
leonpro778
Jak napisał poniżej Tomplus - zrób to obiektowo, będzie łatwiej smile.gif

Tak naprawdę to nie za dużo "widać" z tego kodu bo mamy:
- jedną tablicę
- dwie funkcje
i...

I co dalej, jak Ty chcesz wywoływać te funkcje? Może pokaż kod ze swoim formularzem dodawania danych do tej tablicy?
emillo91
Nie wiem czy ty czasem nie mówisz o ponownym przesłaniu tablicy z uzupełnionymi danymi. Jeżeli tak to musisz zadbać o to aby dane zostały w inputach w momencie, gdy będziesz klikać przycisk sprawdź czyli:
  1. <input type='text' name='dane[]' value="<?php echo $_POST['danedotablicy']; ?>" />
Ar4ass
Tak oto mój kod w HTLM nic wiecej jak prosty formularz:

  1. <form action="" method="post">
  2. <input type="text" placeholder="Element" name="element"/><br/>
  3. <input type="submit" value="DODAJ" name="add" id="sprawdz_subbmit"/>
  4. <input type="submit" value="SPRAWDŹ" name="add" id="sprawdz_subbmit"/><br/><br/>
  5. </form>


Moją stronę można zobaczyć tutaj mój skrypt: http://pzsuczen.usermd.net/2015/palka/PHP_tablica.php

chodzi o to, że zamiast tego jednego przycisku na stronie ma być jeszcze drugi z sprawdź jeden ma dodawac element z tablicy z inputa wartość a drugi sprawdzić cała tablicę.
leonpro778
Po pierwsze - musisz rozróżniać w SUBMIT co chcesz zrobić a następnie wykonać odpowiednią metodę/funkcję. Możesz to zrobić przykładowo tak:

  1. <form action="?action=add_element" method="post">
  2. <input type="text" placeholder="Element" name="element"/><br /><br />
  3. <input type="submit" value="DODAJ" /><br /><br />
  4. <input type="submit" formaction="?action=show_array" value="POKAŻ" />
  5. </form>


Po drugie - musisz gdzieś przechowywać swoją tablicę inaczej ZAWSZE będzie ona składała się z piesków i kotów (niezależnie co tam więcej prześlesz). Przechowuj ją sobie w $_SESSION i na niej dokonuj zmian.
Ar4ass
Mam teraz coś takiego:

  1. <div id="p_for">
  2. <form action="" method="post">
  3. <input type="text" placeholder="Element" name="element"/><br/>
  4. <input type="submit" value="DODAJ" name="add" id="sprawdz_subbmit"/>
  5. <input type="submit" value="SPRAWDŹ" name="check" id="sprawdz_subbmit"/>
  6. <input type="submit" value="RESET" name="reset" id="sprawdz_subbmit"/><br/><br/>
  7. </form>
  8. <?php
  9. $tablica = array("Piesek", "Kotek");
  10. $_SESSION["tablica"] = $tablica;
  11.  
  12. function add(){
  13. $element = $_POST["element"];
  14.  
  15. if($element==NULL){
  16. echo "Wprowadź wartośc.";
  17. }
  18. else{
  19. array_push($_SESSION["tablica"], $element);
  20. echo "Element: '" . $element . "' został dodany do tablicy.<br/><br/>";
  21. }
  22. }
  23.  
  24. function check(){
  25. echo "Cała tablica: <br/>";
  26. foreach($_SESSION["tablica"] as $lb => $wartosc){
  27. echo "Element tablicy[" . $lb . "]: " . $wartosc . "<br/>";
  28. }
  29. }
  30.  
  31. function resetowanie(){
  32. print_r (session_status());
  33. }
  34.  
  35. if(isSet($_POST["check"])){
  36. check();
  37. }
  38.  
  39. if(isSet($_POST["add"])){
  40. add();
  41. }
  42.  
  43. if(isSet($_POST["reset"])){
  44. resetowanie();
  45. }
  46. ?>


Jak zrobić by ta sesja działała dawałem session_start();
I mi wywalało błąd: Warning: array_push() expects parameter 1 to be array, null given in D:\xampp\htdocs\ArAs\PHP_tablica.php on line 78
Help ;x

Albo jak byś to inaczej zrobił ;x
nospor
Startujesz gdziekolwiek te sesje?
leonpro778
Cytat(Ar4ass @ 11.04.2018, 13:54:28 ) *
Jak zrobić by ta sesja działała dawałem session_start();
I mi wywalało błąd: Warning: array_push() expects parameter 1 to be array, null given in D:\xampp\htdocs\ArAs\PHP_tablica.php on line 78

Chyba całego kodu nam nie pokazałeś. Błąd jest w linii 78 a takiej linii w Twoim kodzie nie ma. Gdzie wstawiałeś to session_start() ?
Ar4ass
Właśnie chciałem się zapytać o tę sesję gdzie ją zacząć gdzie zaczkończyć lub coś by to w ten sposób działało.

Chodzi mi to ze jak dałem w tej linice to blad wywalalo.
leonpro778
Funkcję session_start() dajesz zawsze przed wysłaniem jakichkolwiek danych na ekran.
Ar4ass
A jak później ją usunąć lub zawartość jej?
leonpro778
unset() - usunięcie $_SESSION
a jak chcesz "wyczyścić" to po prostu - $_SESSION['tablica'] = array()
Ar4ass
Dziękuję naprawiłem i zrobiłem dziękuję wszystkim za chęć do pomocy, podysłam kod jak by ktoś chciał coś jeszcze:

  1. <?php
  2. $_SESSION["tablica"] = array("Piesek", "Kotek");
  3.  
  4. function add(){
  5. $element = $_POST["element"];
  6. if($element==NULL){
  7. echo "Wprowadź wartośc.";
  8. }
  9. else{
  10. array_push($_SESSION["tablica"], $element);
  11.  
  12. echo "Element: '" . $element . "' został dodany do tablicy.<br/><br/>";
  13. }
  14. }
  15.  
  16. function check(){
  17. echo "Cała tablica: <br/>";
  18. foreach($_SESSION["tablica"] as $lb => $wartosc){
  19. echo "Element tablicy[" . $lb . "]: " . $wartosc . "<br/>";
  20. }
  21. }
  22.  
  23. function resetowanie(){
  24. $_SESSION["tablica"] = array("Piesek", "Kotek");
  25. echo "Tablica została zresetowana do wartości domyślnych.";
  26. }
  27.  
  28. if(isSet($_POST["check"])){
  29. check();
  30. }
  31.  
  32. if(isSet($_POST["add"])){
  33. add();
  34. }
  35.  
  36. if(isSet($_POST["reset"])){
  37. resetowanie();
  38. }
  39. ?>


Skrypt można zobaczyć tutaj:
http://pzsuczen.usermd.net/2015/palka/PHP_tablica1.php

Dziękuję <3
leonpro778
Źle jest smile.gif

session_start() daj zaraz po <?php
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.