Autor Zpráva
JunekCZ
Profil
Dobrý den.
Vytvářím pro svůj web systém novinek, které se mají při kliknutí - číst více - otevřít na stejném souboru.
(Máme např 3 novinky na index.php, přičemž na tu, na kterou klikneme zůstane a ostatní se schovají.)

Mám to ve while, takže se otvírají při - číst více - znovu všechny. Jenže když umístím kód mimo while, začne to kód ignorovat.

Kód:
  $jetu = true;
  $vybervse = "SELECT * FROM novinky";
  $result = mysqli_query($conn, $vybervse);
  if(mysqli_num_rows($result) > 0) {
    while($vypisvse = mysqli_fetch_assoc($result)) {
       if(isset($_POST['nevypisuj'])) {
          echo '
          <div id="novinka"><div id="nadpis">' . $vypisvse['nadpis'] . '</div>
          <div id="zprava">' . $vypisvse['zprava'] . '
            <form action="index.php" method="POST">
              <input type="submit" class="logins name="vypisuj" value="Číst více" style="float: left; width: 40%; margin-top: 20px;" />
            </form>
          </div>
          <div id="user">
            <font color="#A3A3A3">Zveřejnil:</font> ' . $vypisvse['uzivatel'] . '
          </div>
          <br />
          <div id="datum">' . $vypisvse['time'] . '</div>
          </div>';
      } if(isset($_POST['vypisuj'])){
        $vyberjednu = "SELECT * FROM novinky WHERE id='" . $vypisvse['id'] . "'";
        $vyslednice = mysqli_query($conn, $vyberjednu);
        if(mysqli_num_rows($vyslednice) > 0){
          $podleid = mysqli_fetch_assoc($vyslednice);
          echo '
          <div id="novinka">
            <div id="nadpis">' . $podleid['nadpis'] . '</div>
            <div id="zprava">' . $podleid['zprava'] . '
              <form action="index.php" method="POST">
                <input type="submit" class="logins" name="nevypisuj" value="Zpět k novinkám" style="float: left; width: 40%; margin-top: 20px;" />
              </form>
            </div>
            <div id="user"><font color="#A3A3A3">Zveřejnil:</font> ' . $podleid['uzivatel'] . '</div>
            <br />
            <div id="datum">' . $podleid['time'] . '</div>
          </div>';
          $jetu = false;
        }
      } else {
          if($jetu){
          echo '
          <div id="novinka"><div id="nadpis">' . $vypisvse['nadpis'] . '</div>
          <div id="zprava">' . $vypisvse['zprava'] . '
            <form action="index.php" method="POST">
              <input type="submit" class="logins" name="vypisuj" value="Číst více" style="float: left; width: 40%; margin-top: 20px;" />
            </form>
          </div>
          <div id="user">
            <font color="#A3A3A3">Zveřejnil:</font> ' . $vypisvse['uzivatel'] . '
          </div>
          <br />
          <div id="datum">' . $vypisvse['time'] . '</div>
          </div>';
          }
      }
    }
  } else {
    echo 'Někde je chyba';
  }

Předem děkuji za odpověď, JunekCZ
Keeehi
Profil
JunekCZ:
Fuj, to je prasárna. A tím myslím jak kód, tak tak nápad mít 4 různé obsahy na jedné url. Vyhledavače tě za to budou nenávidět, takže ta stránka bude ve výsledku nedohledatelné, nedá se to okazovat a vůbec to bude přinášet spoustu problémů. Opravit a zprovoznit se to samozřejmě dá, ale podporovat tě v tom nebudu.
JunekCZ
Profil
Keeehi:
Nejde mi tu o to, čeho jsou schopni vyhledavače a čeho ne. Mám to dané jako dobrovolný domácí úkol, kde zadání bylo takové, jaké jsem uvedl.

Nevadí tedy. Děkuji za odpověď a pokusím se kód nějak upravit.
Lonanek
Profil
musím souhlasit s Keeehi, nicméně jako domácí úkol (byť asi pan učitel neví co je slušné) napovím.

JunekCZ:
Mám to ve while, takže se otvírají při - číst více - znovu všechny.
Ano to je dáno logikou přístupu.
Nejjednodušší je vytvořit si UML a tam si vše popsat.

testovat existenci proměnné pro výpis jednoho článku =>
existuje => vypsat jen konkrétní a konec
neexistuje => vypsat všechny články a konec.


Takhle to vždy vypíše všechny články ať již zabalené nebo rozbalené.
JunekCZ
Profil
Dobrá tedy. UML Jsem si vytvořil, ovšem nevyřešilo to mou chybu.

Nevěděl by tedy někdo jiné řešení?

Předem děkuji za odpověď JunekCZ.
Lonanek
Profil
Pokud jste si vytvořil diagram ale neupravil podle něj kód, pak to problém nevyřeší.
Nepředpokládáte, že Vám zde někdo domácí úkol napíše?

Řešení jsem Vám naznačil v předchozím příspěvku.
JunekCZ
Profil
Lonanek:
To samozřejmě ne, s kódem jsem si hrál, ovšem jsem dospěl ke stejnému výsledku.
Dát to za while. Tedy jsem znovu na začátku a nevím co mám udělat s jedinou podmínkou, aby kód fungoval tak, jak by měl.
Lonanek
Profil
Např.:
... nacti nastaveni ...
... vypis hlavicku stranky ...
if ($jeden_clanek)
{
  ... vypis jeden clanek ...
} else {
  ... vypis perex vsech clanku ...
}

... vypis paticku stranky ...
Zapomeňte na nějaké před while / za while. Vy potřebujete vyřešit různý výpis podle nějaké vstupní proměnné.
Samozřejmě je vhodné sem také vložit řešení.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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