Autor Zpráva
Venushja
Profil
Zdravim udelal jsem si takovou jednoduchou knihu navstev ale problem je v tom ze kdyz uzivatel prida vzkaz tak se akorad ukaze ten jeho a kdyz nekdo má jinou IP tak se mu ty ostatni nezobrazi jenom ty jeho co vlastne prida... Muzete mi rposim pomoct aby se to i ostatnim lidem zobrazovalo ?
<?
$db_server = "mysql.ic.cz";
$db_login = "xxxxxxx";
$db_password = "xxxx";
$db_name = "xxxxxxxx";
@$spojeni = MySQL_Connect($db_server ,$db_login, $db_password);
@MySQL_Select_DB($db_name);

$bb = MySQL_Query("SELECT * FROM knihanavstev order by id DESC LIMIT 20");
$uu = MySQL_Query("SELECT count(*) FROM knihanavstev");
$tt=MySQL_Fetch_Array($uu);
?>
<center>
<a href="?page=knihanavstev-pridat">Přidat vzkaz</a><br>
<?
if ($_GET["id"]) {

$od = $_GET["id"];}

else {$od = "0";}



$kolik = 5;

$count = mysql_result(mysql_query("SELECT COUNT(*) FROM knihanavstev"), 0);

echo "Strana:";

for($i=0;$i<=ceil($count/$kolik)-1;$i++) {

$kolko= $i*$kolik;

if ($kolko == $od):

echo "<b><font color='maroon'><a href='?page=knihanavstev&id=$kolko'>" . ($i+1) . "</a></font></b> ";




else:

echo "<a href='?page=knihanavstev&id=$kolko'>" . ($i+1) . "</a>";

endif;

}

echo "<br>";

$vyber = mysql_query("SELECT * FROM knihanavstev order by id DESC LIMIT $od, $kolik");
while ($db= MySQL_Fetch_Array($vyber)):

$ip = $_SERVER['REMOTE_ADDR'];
  if($ip=="$db[ip]"){
echo"
<table border='0' bordercolor='white' cellpadding='5' cellspacing='0' width='60%'>
<tr>
<td width='60%'><center><font size='2'><hr>$db[pridal]  ($db[datum]/$db[cas])
<form method='post'>
  <input type='submit' class='input' name='vymaz' value='Vymazat'>
  <input type='hidden' class='input' name='vymaz' value='vymazano'>
  </form>
<br><br>$db[text]</font></center></td>
</tr>
</table>
";
 if($vymaz=="vymazano"){
  MySQL_Query("DELETE FROM `knihanavstev` WHERE `knihanavstev`.`id` = $db[id] LIMIT 1;");
  echo"Mažu Přesměrovávám";
  Header("Location: http://pkde.tym.cz/index.php?page=knihanavstev");
  }elseif ($ip != "$db[ip]"){ 
  echo"
<table border='0' bordercolor='white' cellpadding='5' cellspacing='0' width='60%'>
<tr>
<td width='60%'><center><font size='2'><hr>$db[pridal]  ($db[datum]/$db[cas])
<br><br>$db[text]</font></center></td>
</tr>
</table>
";};};

endwhile;
?>


Dekuji
Venushja
Profil
Tak jsem to s tim Zobrazovanim ostatnim uzivatelum zprovoznil vypada to tedka takhle
  if($ip=="$db[ip]"){
echo"
<table border='0' bordercolor='white' cellpadding='5' cellspacing='0' width='60%'>
<tr>
<td width='50%'><center><font size='2'><hr>$db[pridal]  ($db[datum]/$db[cas])</td>
<td width='10%'><center><font size='2'><br><hr>
<form method='post'>
  <input type='submit' class='input' name='vymaz' value='Vymazat'>
  <input type='hidden' class='input' name='vymaz' value='vymazano'>
  </form>
  </td>
  </tr>
  <tr>
<td width='50%'><center><font size='2'>$db[text]</font></center></td>
</tr>
</table>
";
}elseif ($ip != "$db[ip]"){ 
  echo"
<table border='0' bordercolor='white' cellpadding='5' cellspacing='0' width='60%'>
<tr>
<td width='60%'><center><font size='2'><hr>$db[pridal]  ($db[datum]/$db[cas])
<br><br>$db[text]</font></center></td>
</tr>
</table>
";} 


ale tedka mam ropblem zase v tom ze to nemaze rpispevky a vubec nevim kam toto vlozit :-(
if($vymaz=="vymazano"){
  MySQL_Query("DELETE FROM `knihanavstev` WHERE `knihanavstev`.`id` = $db[id] LIMIT 1;");
  echo"Mažu Přesměrovávám";
  Header("Location: http://pkde.tym.cz/index.php?page=knihanavstev");
  };


Bud mi to smaze ale uplne kompletni tabulku ze tam nezbyde ani 1 zprava nebo to nic nedela :-(
Jan Tvrdík
Profil
Venushja:
Bud mi to smaze ale uplne kompletni tabulku ze tam nezbyde ani 1 zprava nebo to nic nedela :-(
To mi přijde jako blbost, protože je tam LIMIT 1.
Venushja
Profil
Jan Tvrdík
Fakt nekecam kdyz to je ve while tak to smaze vsechno a kdyz to daj minam tak to nefunguje :-(
taky to nechapu proc to smaze vsechyn prispevky je to fakt uz hruza uz 3 dny nemuzu nanic prijit :-(
Jan Tvrdík
Profil
Venushja:
Hlavním problém je ten, že si vůbec neposíláš informaci, který (ID) příspěvek chceš smazat.
Venushja
Profil
a jak to mam udelat ??
SwimX
Profil
Venushja
promiň pokud to nebude ono, nestudoval jsem celé dlouhé kódy, ale předávat si ID můžeš buď pomocí $_GET proměnné
pak ale při mazání by bylo třeba kontrolovat is_numeric($_GET['id']) a je to trochu nebezpečně pokud ti někdo pošle odkaz ty ho otevřeš a budeš přihlášená -> tak někomu smažeš příspěvek

nebo přes echo "<input type='hidden' value='$id' name='mazaci'>"; To si napíšeš ve chvíli když tě to přesměruje na stránku kde potvrzuješ mazání a potom smažeš DELETE ... id = $mazaci;
Venushja
Profil
SwimX
No jo ale me se neukazuje zadna stranka s vymazanim ja to mam primo u toho vzkazu tlacitko vymazat :-( a po kliku se ma vymazat ten vzkaz
SwimX
Profil
Venushja
To nic nemění na mém způsobu ukládání id do hiddnu.
<form method='post'>
  <input type='submit' class='input' name='vymaz' value='Vymazat'>
  <input type='hidden' class='input' name='vymaz' value='vymazano'>
  <input type='hidden' class='input' name='id' value='$db[id]'>
  </form>

...

if($vymaz=="vymazano"){
  MySQL_Query("DELETE FROM `knihanavstev` WHERE `knihanavstev`.`id` = $_POST[id] LIMIT 1;");
  echo"Mažu Přesměrovávám";
  Header("Location: http://pkde.tym.cz/index.php?page=knihanavstev");
  };
Venushja
Profil
SwimX
Mazec ono to funguje :-) Muzes mi torchu popsat jako v cem se to lisi atd.. Nebo ten input udava presny ID co chces mazat a ne vsechno
SwimX
Profil
Venushja
Mazec ono to funguje :-)
:)

Při výpisu své knihy vždycky vypíšeš formulář s tlačítkem smazat. ale nikde nenapíšeš co se má smazat když se ten formulář odešle. Proto si do toho formuláře přidáš input hidden (aby nerušil) a do něj jako value ID příspěvku který zrovna vypisuješ (je to v cyklu takže se postupně vypíšou všechny příspěvky a u každýho formulář s tlačítkem VYMAZAT a skrytym id toho příspěvku)

po odeslání se odešle i ten input hidden, takže v proměnné $_POST['id'] (post proto že formulář má method post a id proto že sme si tak pojmenovali ten input hidden) bude id toho příspěvku u kterýho si odeslal formulář -> můžeš ho vymazat.

Vysvětlování mi zas až tolik nejde je to jasné?

jinak if($vymaz=="vymazano"){
dáváš někde do $vymaz = $_POST['vymaz'] nebo spolíháš na zaplé register_globals?
taky by to šlo napsat elegantněji jako if(isset($_POST['vymaz']{
a pak z formulářů můžeš vyhodit <input type='hidden' class='input' name='vymaz' value='vymazano'>

a další věc co mě zarazila:
echo "...<td width='50%'><center><font size='2'><hr>$db[pridal]  ($db[datum]/$db[cas])</td>...";

($db[datum]/$db[cas]) - to se ti provede? IMHO by to mělo být
echo "...<td width='50%'><center><font size='2'><hr>$db[pridal]  ".($db[datum]/$db[cas])."</td>...";
Venushja
Profil
SwimX
jj v pohode me to vypise
taky by to šlo napsat elegantněji jako if(isset($_POST['vymaz']{
a pak z formulářů můžeš vyhodit <input type='hidden' class='input' name='vymaz' value='vymazano'>
Na takovou uroven php jsem se zatim nedostal :-) :-D
SwimX
Profil
Venushja
jj v pohode me to vypise
ajo, já myslel, že to chceš vydělit, teď mi došlo k čemu to je. :)
DO db se dá ukládat přímo datetime, do jednoho sloupce
Venushja
Profil
SwimX
jj me to zatim vyhovuje takhle :-)

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: