Autor Zpráva
Nobbie
Profil
Zdravím všechny, již asi dva dny se snažím vyřešit možnost, kterou zde uvedu. Jsem v podstatě začátečník a nevím, zda to dělám správně a než jsem zadal dotaz, snažil jsem se googlit a googlit. Jestli někdo řekne, že špatně, tak je to možné, ale to asi proto, že jsem v tom případě nevěděl jak hledat.

Potřebuji mít formulář, kde budu mít dvě tlačítka Akce1 a Akce2. Když kliknu na Akce1, tak se má vypsat echo s input a PHP proměnnou ve value (proměnná je aktuální datum). No a pokud kliknu na Akce2, tak bych potřeboval, aby se Akce1 jedna smazala a nahradilo se to echem Akce2 (opět input s PHP proměnnou s aktuálním datem + 7 dní ve value) a naopak (pokud je první vypsaná Akce2 a kliknu na Akce1, potřebuji, aby se Akce2 vymazala a vypsala se Akce1). Jen podotýkám, že $PHPpromenna není potřeba řešit. Pouze funkce zobrazení inputů.

Asi je možné provést celý příkaz v JS, ale tam jsem totální neznalec, sice jsem se snažil vyřešit to podle spousty příkladů, ale nikdy mi to nefungovalo :(

Pokud se najde někdo, kdo bude ochoten pomoci, budu moc rád, protože jsem opravdu v koncích - (případně i jinou možnost, než mám já - nevím, zda mám vůbec dobrou ideu).

<form>
    
    <INPUT type="submit" name="Akce1" value="Akce1">
    
    <INPUT type="submit" name="Akce2" value="Akce2">
  
    <?php
    $pole = '<input type="text" name="akce1" value="'.$PHPpromenna.'">';
    $pole2 = '<input type="text" name="akce2" value="'.$PHPpromenna.'">';    
    
    isset ($_POST['akce1']) ? $_POST['akce1'] : "";
    if(isset($_POST['akce1'])){
    echo $pole;}
   
    isset ($_POST['akce2']) ? $_POST['akce2'] : "";
    if(isset($_POST['akce2']))  { 
    echo $pole2;} 
    ?>
    
</form>

Momentálně mi to vypíše pouze inputy, ale nesmaže, zkoušel jsem nespočet různých možností a přepsání kódu, ale nevím jak na to. Tady tohle je to, na čem stavím.
Tomáš123
Profil
Nobbie:
Ja to vidím takto:
<?php
  if(isset($_POST['akce1'])) echo $pole1;
  if(isset($_POST['akce2'])) echo $pole2;
?>
Nobbie
Profil
Tomáš123:

Jo, tohle je skvělý zjednodušení kódu, ale bohužel to neřeší to, že pokud kliknu na akci2, že se má smazat akce1 a opačně.
Tomáš123
Profil
Nobbie:
že se má smazat akce1 a opačně
Ako zmazať? Veď server stále generuje novú stránku. Schválne si zmeň metódu na GET, aby si videl v adresnom riadku, ktoré odosielacie tlačítko je práve aktuálne.

Inak, kde sa tie staré hodnoty uchovávajú? V hodnote <input>-u? Nie je problém predsa len v tej premennej, ktorá sa tam vpisuje? Podľa kódu ide stále o rovnakú premennú?
Nobbie
Profil
Tomáš123:

No to je právě to, co si nejsem pořádně jistý, že v PHP jde. Ale jak jsem popisoval:

Když kliknu na submit Akce1 - vypíše se input se svým unikátním "name" a "value" s proměnnou (aktuální datum).
Když kliknu na submit Akce2 - vypíše se opět input se svým unikátním "name" a "value" s jinou proměnnou (aktuální datum + 7 dní).

Já ale potřebuji, aby input Akce1 po kliku na Akci2 zmizel.

Ten kód co teď je, ty inputy zobrazí, ale už nesmaže jeden druhého - pokud jeden z nich již existuje - pokud ne, má vypsat, ale pokud ano, má ten druhý smazat. O to mi právě jde.
Michales
Profil
Řekl bych ze buď chceš načítání pomocí ajaxu, nebo skrýváni a odkrývání textu. Ale možná se také mýlím.
Tomáš123
Profil
Nobbie:
Aha, už chápem. Chceš, aby na začiatku boli dostupné obidve odosielacie tlačítka, ale po odoslaní už iba to, na ktoré sa nekliklo.
<?php
  $pole1 = '<input type="text" name="akce1" value="'.$PHPpromenna.'">';
  $pole2 = '<input type="text" name="akce2" value="'.$PHPpromenna.'">';
  if(empty($_POST['Akce1']) and !empty($_POST['Akce2'])) :?> //Pôvodne sa pracovalo so $_POST['akce1']
<form method="GET" action="">
  <?php echo $pole2 ?>
  <input type="submit" name="Akce1" value="Akce1">
</form>
<?php elseif(empty($_POST['Akce2']) and !empty($_POST['Akce1'])) :?>
<form method="GET" action="">    
  <?php echo $pole1 ?>
  <input type="submit" name="Akce2" value="Akce2">
</form>
<?php else :?>
<form method="GET" action="">    
  <input type="submit" name="Akce1" value="Akce1">
  <input type="submit" name="Akce2" value="Akce2">
</form>
<?php endif ?>
Snáď som sa nikde nepomýlil...

Chyba bola v kombinácii metód POST a GET.
Tomáš123
Profil
Nobbie:
Upravený kód:
<?php
  $pole1 = '<input type="text" name="akce1" value="'.$PHPpromenna.'">';
  $pole2 = '<input type="text" name="akce2" value="'.$PHPpromenna.'">';
  if(empty($_GET['Akce1']) and !empty($_GET['Akce2'])) :?>
<form method="GET" action="">
  <?php echo $pole2 ?>
  <input type="submit" name="Akce1" value="Akce1">
</form>
<?php elseif(empty($_GET['Akce2']) and !empty($_GET['Akce1'])) :?>
<form method="GET" action="">    
  <?php echo $pole1 ?>
  <input type="submit" name="Akce2" value="Akce2">
</form>
<?php else :?>
<form method="GET" action="">    
  <input type="submit" name="Akce1" value="Akce1">
  <input type="submit" name="Akce2" value="Akce2">
</form>
<?php endif ?>
Nobbie
Profil
Tomáš123:

Opravdu moc děkuji za pomoc, ale bohužel to nebylo to co jsem potřeboval. Trošku mě zradili vědomosti základů HTML a pomýšlel jsem na vnořený FORM do FORM. Což samozřejmě nejde a Michales měl pravdu, hledal jsem načítání pomocí AJAXu. Nakonec jsem AJAXový tlačítka s pomocí jQuery použil na jinou funkci (vytvoření/odstranění nového řádku s inputama a jejich číslováním). Stejnou funkci se pokusím nahodit na to, co potřebuji s tím datumem.

Nicméně ti opravdu moc děkuji za pokus mi pomoci. Tvůj příklad jsem použil alespoň na definici, pokud je nějaká hodnota posílaná z jedný stránky na druhou prázdná.

if(empty($_GET['hodnota_id'])) {$hodnota_id = '';} else {$hodnota_id = ($_GET['hodnota_id ']);};

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: