Jak tworzyć nową zmienna klikając w przycisk

0
   <form action="p2.php" method="post">
    <div>
    <input type="submit" value="Pobierz" name="od_nowa"/>
    </div>
    </form> 

<?php
	session_start();
	$_SESSION["a"]=0;
	
	if (isset($_POST['od_nowa'])) 
{
	$_SESSION["a"]++;
	echo $_SESSION["a"];
}
?>

Chcę aby po kliknięciu w przycisk Pobierz od nowa tworzona była zmienna $_SESSION["a"] , zwiększona jej wartość o jeden i wyświetlona. Czyli po kliknięciu przycisku Pobierz pojawia się 1, potem klikam znowu Pobierz i znowu pod tą jedynka pojawia się nowa 1 i tak za każdym razem po kliknięci przycisku pobierz. Jak coś takiego osiągnąć?

0

Nie zeruj tej zmiennej - przecież za każdym wywołaniem strony - ona zawsze przyjmie 0. Tak samo jak sprawdzasz $_POST['od_nowa'] - tak samo sprawdź zmienną z sesji. Jak jej nie ma to ustaw 0 (a jeszcze lepiej to 1) - a jak zmienna jest to zwiększaj.

0
axelbest napisał(a):

Nie zeruj tej zmiennej - przecież za każdym wywołaniem strony - ona zawsze przyjmie 0. Tak samo jak sprawdzasz $_POST['od_nowa'] - tak samo sprawdź zmienną z sesji. Jak jej nie ma to ustaw 0 (a jeszcze lepiej to 1) - a jak zmienna jest to zwiększaj.

Ale ja chce zeby za każdym wywołaniem strony ona przyjeła 0 potem zwiększyła o jeden i wyświetliła. I jak klikam pobierz to znowu utworzy, znowy zwiększy o jeden, jak klikne np 4x na przycisk pobierz to strona ma wyglądać tak:

Pobierz

1
1
1
1

Chce żeby cały czas dodawało jedynke po kliknięciu w przycisk. Wiem że to bez sensu ale chce coś takiego osiągnąć... Tylko jak?

0

To jeszcze spytam może inaczej - chcesz żeby co kliknięcie w przycisk była zwiększana jakaś tam Twoja zmienna o 1? (Tę zmienną trzymasz w sesji).
Chodzi Ci o takie coś?

<form action="p2.php" method="post">
    <div>
        <input type="submit" value="Pobierz" name="od_nowa"/>
    </div>
</form> 

<?php
session_start();

if (isset($_POST['od_nowa'])) {
    if (isset($_SESSION["a"])) {
        $_SESSION["a"] = 1;
    } else {
        $_SESSION["a"] ++;
    }
    echo $_SESSION["a"];
} else {
    $_SESSION["a"] = 0;
}
?>
0

Chce żeby co kliknięcie tworzona była zmienna sesyjna i przypisane do niej 0, ta zmienna zawsze ma mieć tą samą nazwę tylko tak jakby przechowywała zmienne od nowa

0
axelbest napisał(a):

To jeszcze spytam może inaczej - chcesz żeby co kliknięcie w przycisk była zwiększana jakaś tam Twoja zmienna o 1? (Tę zmienną trzymasz w sesji).
Chodzi Ci o takie coś?

<form action="p2.php" method="post">
    <div>
        <input type="submit" value="Pobierz" name="od_nowa"/>
    </div>
</form> 

<?php
session_start();

if (isset($_POST['od_nowa'])) {
    if (isset($_SESSION["a"])) {
        $_SESSION["a"] = 1;
    } else {
        $_SESSION["a"] ++;
    }
    echo $_SESSION["a"];
} else {
    $_SESSION["a"] = 0;
}
?>

Nie o to, przecież jak klikne w przycisk to tylko raz wyświetli 1

0

Dokładnie tak

0
<?php
session_start();
 
if (isset($_POST['od_nowa'])) {
    if (isset($_SESSION["a"])) {
        $_SESSION["a"] = "1<br>".$_SESSION["a"];
    }
    echo $_SESSION["a"];
} else {
    $_SESSION["a"] = '';
}
?>
0

Hehe @Clarc o tej porze nie kodzimy :D
To raczej tak powinno być

<?php
session_start();

$increment        = isset($_POST['od_nowa']);
$sessionVarExists = isset($_SESSION["a"]);

if (!$sessionVarExists) {
    $_SESSION["a"] = 0;
} else {
    if ($increment) {
        $_SESSION["a"] += 1;
    }
}

if ($sessionVarExists) {
    for ($i = 0; $i < $_SESSION["a"]; $i++) {
        echo "1\n";
        //jeśli ma być w htmlu to echo "1<br/>";
    }
}
0

Zmieniłem wyświetlanie w pętli for tylko....

<form action="p2.php" method="post">
    <div>
        <input type="submit" value="Pobierz" name="od_nowa"/>
    </div>
</form> 
 
<?php
session_start();
 
$increment        = isset($_POST['od_nowa']);
$sessionVarExists = isset($_SESSION["a"]);
 
if (!$sessionVarExists) {
    $_SESSION["a"] = 0;
} else {
    if ($increment) {
        $_SESSION["a"] += 1;
    }
}
 
if ($sessionVarExists) {
    for ($i = 0; $i < $_SESSION["a"]; $i++) {
        echo $_SESSION["a"]. " ";
        //jeśli ma być w htmlu to echo "1<br/>";
    }
}

Ogólnie idea dobra, klikam dodaje się kolejna liczba, ale...
klikne dwa razy powinienem miec:
1
1
klikne 4 razy powinienem miec:
1
1
1
1
W twoim kodzie natomiast jak klikne raz to mam:
1
klikne dwa razy to mam:
2
2
klikne 4 razy to mam
4
4
4
4
powinno z każdym kliknięciem utworzyć nową zmienna o wartości 0 i ją zwiększyć o jeden, w tym kodzie zwiększa o jeden ale każdą zmienną...

0

Przecież w poście napisałem

echo "1\n";
        //jeśli ma być w htmlu to echo "1<br/>";
0

dam echo 1, to przecież wypisuje tekst, i to właśnie o taki efekt mi chodzi, ale ja nie chce wyświetlać tekstu tylko, zawartość zmiennej, chce żeby po kliknięciu utworzyć zmienną, wyzerować i zwiększyć o jeden i wyświetlić a nie na sztywno wyświetlać tekst "1"

0

Jakiś pomysł na kod?
Weźmy jeszcze ten kod na chwile co mamy z tym echo. Powiedzmy że klikne 3x czyli mam:
1
1
1
Otwieram nową karte w przeglądarce z tą samą stroną klikam raz i nagle mam:
1
1
1
1
Jak zrobić żeby po otworzeniu nowego okna przeglądarki od nowa dodawało jedynki ? a nie kontynuowało z poprzedniego okna ?

0

Jeśli opierasz to na sesji, to wszystkie karty i okna danej przeglądarki mają do niej taki sam dostęp. Bez obrazy - ale mam wrażenie, że programować zacząłeś max miesiąc temu.

0
axelbest napisał(a):

Jeśli opierasz to na sesji, to wszystkie karty i okna danej przeglądarki mają do niej taki sam dostęp. Bez obrazy - ale mam wrażenie, że programować zacząłeś max miesiąc temu.

nawet nie, to na czym proponujesz się opierać jak nie na sesji ? ale żeby były to zmienne gobalne

0

Ciężko mi odpowiedzieć - ale powiedz mi dlaczego chcesz inaczej zliczać te kliknięcia na różnych kartach w przeglądarce? Skoro jako użytkownik otworzę tą samą kartę na nowej stronie - to czemu miałbym widzieć coś innego? Wg mnie takie coś co opisujesz - da się zrobić, można by generować jakieś tokeny, przesyłać je w każdym żądaniu (gdy submitujesz forma) i tam zliczasz podane wartości ze zmiennych. No ale.. nadal nie wiem co chcesz tym osiągnąć? Jakie jest realne zastosowanie tego co chcesz zrobić?

0

Realne zastosowanie jest takie, że pobieram pewne dane ze strony poprzez API. Dane te przechowuje w zmiennych sesyjnych, wyświetlam je w postaci tabeli na stronie, jeśli chce pobrać dane od nowa to muszę odświeżyć stronę aby mieć aktualne dane. Jak odświeżę stronę to już nie mam tych poprzednich danych, tylko te aktualne, bo mi się podmieniły. I dlatego wymyśliłem ten przykład z wyświetlaniem jedynek, bo mając rozwiązanie do tego będę miał do tego. Myślałem że jak otworze drugą kartę to będę pobiera dane on nowa, ale jak otworze drugą kartę to te dane co pojawią się na drugiej karcie, pojawią się też na pierwszej karcie(na jednej i drugiej karcie będą te same dane). I na chwile obecną robię tak że uruchamiam 4 różne przeglądarki bo wtedy mi danych nie podmieni. I szukam rozwiązania mojego problemu, najlepiej żeby mi się udało po kliknięciu w przycisk pobierz pobierać od nowa dane na tej samej karcie do tych samych zmiennych tylko od nowa tak jak w tym przykładzie z jedynkami co podałem.

2
asdf42 napisał(a):

Realne zastosowanie jest takie, że pobieram pewne dane ze strony poprzez API. Dane te przechowuje w zmiennych sesyjnych, wyświetlam je w postaci tabeli na stronie, jeśli chce pobrać dane od nowa to muszę odświeżyć stronę aby mieć aktualne dane. Jak odświeżę stronę to już nie mam tych poprzednich danych, tylko te aktualne, bo mi się podmieniły. I dlatego wymyśliłem ten przykład z wyświetlaniem jedynek, bo mając rozwiązanie do tego będę miał do tego. Myślałem że jak otworze drugą kartę to będę pobiera dane on nowa, ale jak otworze drugą kartę to te dane co pojawią się na drugiej karcie, pojawią się też na pierwszej karcie(na jednej i drugiej karcie będą te same dane). I na chwile obecną robię tak że uruchamiam 4 różne przeglądarki bo wtedy mi danych nie podmieni. I szukam rozwiązania mojego problemu, najlepiej żeby mi się udało po kliknięciu w przycisk pobierz pobierać od nowa dane na tej samej karcie do tych samych zmiennych tylko od nowa tak jak w tym przykładzie z jedynkami co podałem.

Już przy tworzeniu tego API prosiłem abyś nie wymyślał sobie dziwnych rzeczy tylko pisał "Jak jest". Tak nikt nie ma jak Ci pomóc, bo ludzie szukają rozwiązania na pojawianie się jedynek.
Opisz wszystko po kolei od razu, a nie kombinujesz. Obecnie chcesz pobierać dane z API odnośnie kryptowalut, zapisywać je gdzieś, a potem wyświetlać na stronie? Tylko po co? To może jak chcesz mieć coś do strony dopisywane to może Ajax i dopisuj wartości do strony. Ajax przerabiałeś zdaje się w innym poście. Możesz te swoje dane o kryptowalutach dodawać linijka po linijce do tabeli przez Ajax. Po co kombinujesz z jakimiś jedynkami i zajmujesz czas ludzi, którzy chcą Ci pomóc się czegoś nauczyć?

0

Po co kombinuje z jakimiś jedynkami? Tak jak pisałem znając rozwiązanie z jedynkami znajdę tez do tego, bo to jest analogiczne ...

0

Powiedz jasno co ma robić Twój system. Chcesz na stronie automatycznie odświeżać dane o tych kryptowalutach i dodwać linijki z danymi na stronie?
Chcesz to gdzieś notować, do jakiejś bazy czy pliku?

Na wszystko jest kilka sposób, być może to co chcesz zrobić da się łatwo zrobić np. jakimś systemowym taskiem, który sam zczyta Ci dane, powiedzmy co minutę.

0

Mój system po kliknięciu w przycisk "Pobierz"ma wyświetlić na stronie akualną daną pobraną z API. Jak kliknę drugi raz to znowu ma wyświetlić aktualną wartość pobraną z API, tyko że ma ją wyświetlić pod spodem pod poprzednią daną a nie ją podmienić.
Przykład, klikam raz:
1.123424
Klikam drugi raz to się wyświetla:
1.123424
1.132342
Klikam trzeci to się wyświetla:
1.123424
1.132342
1.102322

Tą wartość ma pobierać cały czas do tej samej zmiennej, tylko tak jakby od nowa
Tak samo jak przykład z tymi jedynkami bo to jest analogiczne.

0

Odpowiedź jest jedna - ajax i tyle. Zniknie Ci też problem tego co było na innych kartach (no chyba że to ma być aktualizowane na bieżąco na obu kartach)

0

Ktoś ma pomysł na kod w ajax? , może być z tymi jedynkami.

0

Najlepszy kod w ajax - znajdziesz jak wpiszesz w google php ajax sample code. Próbowałeś sam coś poszukać? Czy tylko liczysz na gotowce tutaj?

0

Co musze poznać z ajax aby rozwiązać mój problem?

1

Przez te 20 godzin już byś się tego nauczył czego potrzeba a nie czekał na gotowe. Wiem co mówię bo sam poznawałem ajax od podstaw. Wystarczy google, głowa i trochę chęci.

1 użytkowników online, w tym zalogowanych: 0, gości: 1