Autor Zpráva
brnak1981
Profil *
Ahoj všem,
snažím se navrhnout si diskuzní fórum a samozřejmě jsem si nějaké stáhnul a zprovoznil,funguje. Dokonce chápu jak to funguje ale co mně vadí a vůbec nevím pod čím hledat příkaz který by mě zbavil hloupé struktury fóra. Nechci aby se po zdařilém přihlášení z hlavní stránky index.php, kde je podmínka ve formuláři method post aktion prihlaseni.php , dostal navštěvník výpis echa na nově otevřené stránce prihlaseni.php nýbž do původního indexu. Nechci pořad skákat opticky na jinou stránku při každém příkazu, je mi jasné že je potřeba kód rozložit do více souborů, ale výsledné echa a výpisy databáze bych rád zobrazoval pořád na jedné stránce index.php. viz facebook. Mohl by mě někdo alespoň navést co mám hledat děkuji moc.
Pro představu používám knihu Luboslav Lacko PHP5 a MySQL5 hotová řešení.
Děkuji
TomasJ
Profil
Na facebooku používají AJAX.
brnak1981
Profil *
Ja se tím snažil vyjádřit o jaký design stránek se snažím, komentování nějakého tématu lidmi, stím že se neztrácím mezi okny. Vše se zobrazuje v jednom , nevím proč bych se měl po přihlášení objevit na jiné stránce kde mi to slavnostně napíše seš přihlášenej. Ja chci aby se ta hláška objevila samozřejmě na té hlavní stránce pod přihlašovacím formulářem a to vůbec netuším jak se to děla. Prosím, už se trápím moc dlouho.
TomasJ
Profil
brnak1981:
Tak za 1. změň u formuláře (přihlašovacího) action na index.php, method je nejspíš post, přidej do něj třeba
<input type="hidden" name="login" value="1">

V index.php vytvoř podmínku
if(isset($_POST['login'])){ /*akce která se má stát při přihlašování (nejspíš include "prihlaseni.php";)*/ }
brnak1981
Profil *
Děkuju ale nevím jestli to dám dohromady, spíš jestli nevíte o nějakém příkladu kde je to řešené k nahlédnutí?
Bertram
Profil
Hlavně si z této ukázky neber příklad je jen demonstrativní.
Ve skutečné aplikaci budeš určitě využívat relace, oddělení kódu, OOP atd.

diskuze.php
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<?php
echo "Cokoliv viditelné vždy<br />";
if (isset($_POST['login']))
  {
    echo "přihlášen uživatel: Franta Vopršálek<br />";
    $prihlasen = TRUE;
  }
else
  {
    $prihlasen = FALSE;
  }
  
if(!$prihlasen)
  {
    echo "<form method='post' action='".$_SERVER['PHP_SELF']."'>";
    echo "<input type='submit' value='přihlásit' name='login' />";
    echo "</form>";
  }
else
  {
    echo "A zobrazení toho co je viditelné pouze přihlášeným<br />";
    echo "<br /><a href='odhlaseni.php'>odhlasit</a>";  
  }
?>


odhlaseni.php
  <?php
$host  = $_SERVER['HTTP_HOST'];
$uri   = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$file = 'diskuze.php';
header("Location: http://$host$uri/$file");
exit;
?>
brnak1981
Profil *
? Tak tohle mi spíš zamotalo hlavu :-(
jenikkozak
Profil
brnak1981:
Uvedený kód sice není ideální, ale jako schéma by posloužit mohl. Co konkrétně ti na tom zamotalo hlavu?
brnak1981
Profil *
no jak pisu nahore jedna se mi o neco trosku jineho ikdyz tohle se tomu blizi, podle me stejny problem musi resit lidi co skladaji treba internetovou seznamku, nebo cokoliv kde chco aby se dynamicky menili casti hlavni stranky podle toho nac se klikne, ja taky nacitam do jedne stranky vsechny ostatni stranky ale nevim jak menit cas menu pri prihlaseni, to je tu popsane ale co nevim hlavne je ten prvni dotaz
panther
Profil
brnak1981:
nevim jak menit cas menu pri prihlaseni
přihlášení se detekuje většinou uloženou sessionou, která nese mj. informaci o tom, který uživatel je přihlášen. Pokud tato sessiona existuje, vypíšeš nějaké menu, pokud ne, vypíšeš jiné... Aneb je to jen jednuduchá podmínka, základ jazyka.
brnak1981
Profil *
Já vím že jsem natvrdlý , už jsem se naučil CSS a něco z PHP ale hodně využívám fragmenty z netu. Taky umím zprovoznit diskuzní fórum ale bohužel bez nějakého názorného příkladu jak zobrazovat vše v jedné stránce to asi nezvládnu. Mám knihu PHP5 a MySQL5 s příklady, ale ani tam jsem nenašel příkaz kterým bych řekl , vše funguje jak má ale ale výsledek akce na souboru treba vypis PHP chci zobrazit na stránce index vte a te oblasti. V souboru treba vypis.php jsou dalsi podminky pro echo a to je problem jak to načíst do toho indexu kdyz on přeskočí na stránku vypis.php. Fakt nevite o něčem co by mě nasměrovalo?Jinak mi funguje co potrebuju.
brnak1981
Profil *
Tak jinak existuje prikaz kterým říkám kam se má echo vypsat? Myslím i to aby se vysledek vypsal do jiného souboru tedy v mém případě do souboru index.php ikdyž se právě to echo v podmínce nachází ve spuštěném souboru vypis.php . Dekuji mooc
panther
Profil
brnak1981:
existuje prikaz kterým říkám kam se má echo vypsat?
echo se vypíše tam, kam ho vložíš. Možná hledáš proměnné.
brnak1981
Profil *
To je prave muj problem , chci neco z promene z jednoho souboru vypsat v jinem souboru.
brnak1981
Profil *
vysledek teto akce chci zapsat
  <?php
    // Je to šéfredaktor?
    if (mysql_result($autoři, 0, "vedouci") !='true')
    {
      $idAutora=mysql_result($autoři, 0, "id_autora");
      $sql=
      "SELECT id_clanku, nazev, datum, autor FROM clanky "
. " WHERE autor='$idAutora' ORDER BY id_clanku DESC LIMIT 0,10";
    }
    else
      $sql=
      "SELECT id_clanku, nazev,datum FROM clanky"
. " ORDER BY id_clanku DESC LIMIT 0,10";

    $výsledek = mysql_query("$sql");
    
    
  ?>
  

  <TABLE width="100%" border="0" cellspacing="2" cellpadding="0">
  <?while($zaznam=mysql_fetch_array($výsledek)){?>
    <TR style="background: cyan">
      <TD>
        <TABLE><TR>
          <TD><?echo $zaznam["nazev"];?></TD>
          <TD width="80">
            <FORM method="post" action="editace_clanku.php">
              <TABLE align="right">
              <TR>
                <TD>
                <DIV align="center">
                   <input type="hidden" name="IDCL"
                          value="<?echo $zaznam["id_clanku"];?>">
                   <input type="submit" name="edituj" value="Edituj">
                </DIV>
                </TD>
              </TR>
              </TABLE>
            </FORM>
          </TD>
          <TD width="80">
            <FORM method="post" action="mazani_clanku.php">
              <TABLE align="right">
                <TR>
                  <TD>
                    <DIV align="center">
                      <INPUT type="hidden" name="IDCL"
                             value="<?echo $zaznam['id_clanku'];?>">
                      <INPUT type="submit" value="Vymazat">
                    </DIV>
                  </TD>
                </TR>
              </TABLE>
            </FORM>
          </TD>
        </TR>
        </TABLE>
      </TD>
    </TR>
  <?}  ?>
  </TABLE>
  
    

    
<?
  mysql_close();
} while (false);


?>


</BODY>

</HTML>

do tohohle souboru

<body>

<HTML>

  






<?php
     require_once "otevridb.inc";
     
 do {
 
	 if (!OtevriDB())  break;

 @$výsledek = mysql_query(
            "SELECT clanky.nazev, autori.login, clanky.datum, clanky.telo 
            
             FROM clanky, autori, rubriky "
             
. "WHERE clanky.autor=autori.id_autora AND "
. "clanky.rubrika=rubriky.id_rubriky");

 
       while($záznam=mysql_Fetch_array($výsledek))
      {
        
        
        $data .= "<table>";
        $data .=  $záznam["nazev"]. "<br />\n";
        $data .=  $záznam["login"]. "\n";
        $data .= $záznam["datum"]. "<br />\n";
        $data .=  $záznam["telo"]."<td widht=100% ></td>\n";
        $data .= "</table>";
       echo $data;
       
    
       
      }
      mysql_close();
    } while (false);
    ?>   
        
   
 




  </body>
brnak1981
Profil *
nikdo nic :-(
okolojdouci
Profil *
brnak1981:
Nikdo nic. Zřejmě neumíš popsat, co chceš.

1. Nepoužívej v názvech proměnných diakritiku
2. Naopak používej diakritiku ve zde psaném textu.
3. Přečti si, jak funguje include. <body> tam nemá co dělat.
4. Snaž se psát trochu jako člověk. Jestli se tobě čte kód s pětiřádkovými dírami dobře, tak fajn, ale myslím, že jsi spíš výjimka.

chci neco z promene z jednoho souboru vypsat v jinem souboru
Konkrétně: Když na jednom místě budeš mít $a = 4 a někde níž (třeba i v includovaném souboru) echo $a, vypíše se 4. Pokud jsi to někde "po cestě" nepřepsal.

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:

0