Autor Zpráva
Anonymní
Profil *
Vždycky jsem si všechno našel, ale teď jsem bezradný a sedím na tom dva dny.

Posílám data z formuláře (kniha návštěv) do souboru insert.php, to kvůli tomu, aby se mi při refresh neodeslal příspěvek znovu.
Data se v pořádku zapíší do databáze. Mám tam ale stránkování, které mi sice ukáže odkazy 1 - n... podle počtu vzkazů, ale když kliknu na jakýkoli odkaz (a v url se správně vypíše poz=5(10)(n)... podle toho na jaký a href kliknu, dole se mi pořád vypíše to samé, tedy prvních pět vzkazů. Kde je chyba????

Odsud proudí data na insert.
forum.php

<table width="100%" cellpadding="4" cellspacing="0" border="0" style="background-color:#e1e1e1;border:1px solid #c0c0c0;">
<tbody>
<tr>
<td align="center">
<form name="form" id="txt" action="./insert.php?poz=0" method="post" onSubmit="return zkontroluj(this)">
<input type="hidden" name="cas" value="<?php echo Date(" d.m.Y, H:i"); ?>" />
<textarea cols="400" rows="6" name="zprava"></textarea><br />
<input id="odeslat" style="padding:4px;width:60px;" type="submit" value="Odešli" />
</form>
</td>
</tr>
</tbody>
</table>
<br />

<?
mysql_connect('localhost', 'něco', 'něco');
mysql_select_db('něco');
$table_name = "kniha"; //jméno tabulky v databázi
$tr_h = "background-color: #EEE8AA;";
$max = "5"; //pocet prispevku, kolik se ma zobrazit na 1 strane
$prispevku = mysql_query("SELECT count(*) FROM $table_name ORDER BY id DESC"); //zjistime, kolik je celkem prispevku
$celkem = mysql_fetch_array($prispevku);
$str = ceil($celkem[0]/$max);//podelime celkovy pocet prispevku poctem prispevku kolik ma byt na strance

echo"<p>Strana:&nbsp;[";
for($i=0;$i<$str;$i++) { //cyklus na vypsani stranek

if(($i*$max)==$poz)echo $i+1; else //pokud jsme na dane strane, nevypisujeme ji jako odkaz, ale jako text

echo "&nbsp;<a href='forum.php?poz=".($i*$max)."'>".($i+1)."</a>&nbsp;";

}
echo "]</p>";

//konec strankovani


$poz=$_POST[poz];
if($poz==""){
$poz=0;
}
$dotaz= "SELECT jmeno, cas, zprava FROM $table_name ORDER BY id DESC LIMIT $poz,$max"; //dotaz k vypsani vsech vzkazu v databazi
$qq = mysql_query($dotaz);
while ($z = MySQL_Fetch_Array($qq)):
echo "<table cellpadding=\"4\" cellspacing=\"0\" border=\"0\" width=\"100%\" id=\"tab1\">
<tbody>
<tr style=\"".$tr_h."\">
<td align=\"left\"><strong>".$z["jmeno"]."</td></strong></td><td align=\"right\">".$z["cas"]."</td></tr>
<tr>
<td colspan=\"2\" style=\"text-align: justify;\">".$z["zprava"]."</td></tr>
</tbody>
</table><br>\n";
endwhile;
?>


A tady je insert, který data po zpracování vrací zpět.
insert.php


<?php
session_start();
?>
<?php
$zprava = $HTTP_POST_VARS['zprava'];
$cas = $HTTP_POST_VARS['cas'];
$jmeno = $HTTP_SESSION_VARS['valid_user'];
$server="localhost"; //umístění serveru s databází
$database="něco"; //jméno připojované databáze
$login="něco"; //login (uživatelské jméno) pro přístup k databázi
$pass="něco"; //heslo k databázi
$table_name="kniha"; //jméno tabulky v databázi


@$spojeni=MySQL_Connect("$server","$login","$pass"); if (!$spojeni): echo "<center><font size=5>Chyba při připojování k serveru... <br><a href=javascript:history.back(-1)>Zpět</a>"; exit; endif;

@$dbase=MySQL_Select_db("$database"); if (!$dbase): echo "<center><font size=5>Chyba při připojování do databáze...<br><a href=javascript:history.back(-1)>Zpět</a>";exit; endif;

@$vyber_db=Mysql_query("select * from $table_name order by ID desc;"); if (!$vyber_db): echo "<center><font size=5>Chyba při načítání databáze...<br><a href=javascript:history.back(-1)>Zpět</a>";exit; endif;

@$pocet_vzkazu=Mysql_num_rows($vyber_db);


$zprava = SubStr($zprava, 0, 1500); //bereme pouze 1500 znaku
$zprava = Trim($zprava); //odstraneni mezer z konce retezce
$zprava = HTMLSpecialChars($zprava); //odstraneni nebezpecnych znaku
$zprava = Str_Replace("\n"," <br /> ", $zprava); //nahrazeni koncu radku na tagy <BR>
$slovo[$y] = Trim($slovo[$y]); //odstraneni mezer na konci slova
$znak = 100; //dlouha slova delit po .. znacich
$slovo = Split("[[:blank:]]+", $zprava); //rozdeleni zpravy na slova
for($y=0;$y<Count($slovo);$y++):

if (Strlen($slovo[$y])<=$znak): //nebudeme delit
if (EregI("^(www\..+\..{2,4}/?.*)", $slovo[$y])): //jedna se odkaz typu www......
$odkaz = EregI_Replace("^(www\..+\..{2,4}/?.*)", "<a href=\"http://\\1\" target=\"_blank\">\\1</a> ", $slovo[$y]);
elseif (EregI("^([fh]{1}[t]{1,2}[p]?[s]?://.+\..{2,4}/?.*)", $slovo[$y]))://jedna se odkaz typu http://.......
$odkaz = EregI_Replace("^([fh]{1}[t]{1,2}[p]?[s]?://.+\..{2,4}/?.*)", "<a href=\"\\1\" target=\"_blank\">\\1</a>\n", $slovo[$y]);
elseif (EregI("^(.+@.+\..{2,4})", $slovo[$y]))://jedna se odkaz typu http://.......
$odkaz = EregI_Replace("^((.+@.+\..{2,4}))", "<a href=\"mailto:\\1\" target=\"_blank\">\\2</a>", $slovo[$y]);
else:
$odkaz = $slovo[$y] . " "; //jedna se o normalni slovo
endif;
$celek .= $odkaz; //spojime vsechny slova opet dohromady
else:
$delit = Ceil(StrLen($slovo[$y])/$znak); //delime dlouhe slovo
for($z=0;$z<$delit;$z++):
$cast = Substr($slovo[$y], $z*$znak, $znak);
$celek = $cast . "<font color='#ff0000'><strong>&nbsp;&nbsp;Použil jste mnoho znaků za sebou - výstraha !!!!!!!</strong></font>"; //na konec jednotlivych casti pridame pomlcku
endfor;
endif;
endfor;

$new_ID=$pocet_vzkazu+1;

$zapis_vzkazu=MySQL_Query("insert into $table_name values ('$new_ID','$jmeno', '$cas' , '$zprava');");
?>
<html><head>
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=forum.php">
</head></html>


Děkuji všem za radu.
error414-
Profil *
Ses blazen jestli si myslis ze to bude nekdo louskat
error414-
Profil *
Pokud ti vypisuje porad prvnich 5 prispevku tak bych se podival na

$poz=$_POST[poz];

if($poz==""){

$poz=0;

}

nebo nekde kolem toho, podivej se jaky dotaz ti odesilas na db.
kdzy tak napis na ICQ 198879309
Anonymní
Profil *
error414-
Děkuji ti, jako jediný jsi mi napsal.
Měl jsi pravdu, bylo to v tom. Stačilo odstranit $poz=$_POST[poz];
a je vše o.k.

pro ostatní, můžu poslat kompletní scripty na knihu návštěv včetně vkládání smajlíků a návodu co a jak s mySQL.

mpark@centrum.cz
Toto téma je uzamčeno. Odpověď nelze zaslat.

0