Odświeżanie strony z zapamiętaną pozycją używając header();

0

Czy jest możliwe odświeżanie strony z zapamiętaną pozycją używając header();?
Po odświeżeniu zawsze wraca na początek, a chciałbym żeby pamiętał pozycje.

używam: header('refresh: 0;');
można przez js, ale wtedy się pyta o ponowne wysłanie danych, czego nie chcę. Tak jak to robi php jest najlpiej.

0

No ale gdzie chcesz wrococ ? Do poprzedniej strony ? do jakiegos parametru wna tej samej www ? Jasniej prosze.

0
hopaj napisał(a):

No ale gdzie chcesz wrococ ? Do poprzedniej strony ? do jakiegos parametru wna tej samej www ? Jasniej prosze.

Mam strone z tabelą, która jest długa, i na każdym wierszu jest przycisk, po kliknięciu tego przycisku zmienia się parametr w tabeli, ale strona idzie do góry, zamiast w to samo miejsce, tak by można było bez ponownego przewijania strony klikać kolejne przciski.

0

poczytaj o "kotwicach"

0

Tak jak napisał przedmówca.

http://webmade.org/porady/kotwice-html.php

Musisz przeslac taki sam parametr jaki potem bedzie odebrany, do tego samego pliku.

0

to jest powiązane z twoim poprzednim tematem Zmiana bez przeładowania strony w PHP
czyli labo kotwice albo wspomniany w tamtym ajax

0
czysteskarpety napisał(a):

to jest powiązane z twoim poprzednim tematem Zmiana bez przeładowania strony w PHP
czyli labo kotwice albo wspomniany w tamtym ajax

Sorki kolego ale wlasnie jestem na zakupach i ciężko jest sie skupic na dwóch rzeczach jednoczesnie.
Tabela jest generowana w php ? Jest to czysty html ? Kopsnij mi tu ze dwa wiersze CALE. Jak nie ogarne tego teraz i nie dostaniesz odpowiedzi do juttra to ci odpowiem. na razie mnie moja goni po sklepach.

Oczywiscie napisz mi konkretnie co Ty z tym robisz.

0
CodeRZ napisał(a):

Czy jest możliwe odświeżanie strony z zapamiętaną pozycją używając header();?
Po odświeżeniu zawsze wraca na początek, a chciałbym żeby pamiętał pozycje.

używam: header('refresh: 0;');
można przez js, ale wtedy się pyta o ponowne wysłanie danych, czego nie chcę. Tak jak to robi php jest najlpiej.

Ogolnie header przenosi Cie na wybrane miejsce. Mozesz dodac parametry.

header("location: " . $_SERVER['SCRIPT_NAME'] . '?parametr=wartosc');

To sie odwoluje do tego samego pliku jaki zostal wywolany z parametrami.Jako wattosc mozesz podstawic kotwice bo:

To jakbys mial fizycznie:

index.php?parametr=wartosc

Teraz majac [znajac kotwice] wstawiasz ja w url:

index.php  // znajac lokalizacje
// lub czytajac z servera
header $_SERVER['SCRIPT_NAME'] . '#kotwica');
0
hopaj napisał(a):
CodeRZ napisał(a):

Czy jest możliwe odświeżanie strony z zapamiętaną pozycją używając header();?
Po odświeżeniu zawsze wraca na początek, a chciałbym żeby pamiętał pozycje.

używam: header('refresh: 0;');
można przez js, ale wtedy się pyta o ponowne wysłanie danych, czego nie chcę. Tak jak to robi php jest najlpiej.

Ogolnie header przenosi Cie na wybrane miejsce. Mozesz dodac parametry.

header("location: " . $_SERVER['SCRIPT_NAME'] . '?parametr=wartosc');

To sie odwoluje do tego samego pliku jaki zostal wywolany z parametrami.

Wszystko cała strona w rar, teraz jeszcze dodałem trochę rekordów i coś się zepsuło.

Wyświetla: "Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\index.php:68) in C:\xampp\htdocs\index.php on line 101"

0
CodeRZ napisał(a):
hopaj napisał(a):
CodeRZ napisał(a):

Czy jest możliwe odświeżanie strony z zapamiętaną pozycją używając header();?
Po odświeżeniu zawsze wraca na początek, a chciałbym żeby pamiętał pozycje.

używam: header('refresh: 0;');
można przez js, ale wtedy się pyta o ponowne wysłanie danych, czego nie chcę. Tak jak to robi php jest najlpiej.

Ogolnie header przenosi Cie na wybrane miejsce. Mozesz dodac parametry.

header("location: " . $_SERVER['SCRIPT_NAME'] . '?parametr=wartosc');

To sie odwoluje do tego samego pliku jaki zostal wywolany z parametrami.

Wszystko cała strona w rar, teraz jeszcze dodałem trochę rekordów i coś się zepsuło.

Wyświetla: "Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\index.php:68) in C:\xampp\htdocs\index.php on line 101"

Buforowanie danych się kłania.

 

<?php
ob_start();
?>
<html>
<head>
// dane
</head>
<body>
// dane
</body>
</html>
<?php
ob_end_flush();
?>
0
<?php
ob_start();
?>
<html>
<head>
<style>
.btn_stan0{
	font-size: 16;
	width: 100%;
	height: 100%;
	background-color: red;
	color: white;
	
}
.btn_stan1{
	font-size: 16;
	width: 100%;
	height: 100%;
	background-color: green;
	color: white;
	
}
</style>

</head>
<body>
<?php 
//Łączenie z bazą danych
$db = new PDO('sqlite:lista.db');
$result = $db->query('SELECT * FROM TestowySerial');

//Infomracje początkowe

// phpinfo();
//nazwa bazy danych
$nazwabazy = $db->query('SELECT name FROM sqlite_master WHERE type = "table"');
$nazwabazy = $nazwabazy->fetch();
echo "Nazwa pliku:<b> $nazwabazy[0]</b></br>";

//ilość rekordów
$statement = $db->query('SELECT COUNT(*) FROM TestowySerial');
$result = $statement->fetch();
$ile = $result[0];
echo "Ilość wpisów w pliku:<b>". $ile."</b>";
echo "</br> </br>";

//koniec poczatkowych informacji
//Tabela rekordów

echo "<center><table border=1 width=75%> ";
echo'<tr style="font-weight:900;"><td>ID</td><td width=2%>S</td><td>Odc</td><td>Seria</td><td>Rok</td><td>Nazwa</td></tr>';
$licznik_tabelowy=0;
 $sql =<<<EOF
      SELECT * from TestowySerial;
EOF;

   $ret = $db->query($sql);
while ($row = $ret->fetch()){
	
	
   //echo "Wykonano ".$licznik_tabelowy." razy.</br>";
   echo "<tr id=$licznik_tabelowy+1><td>". $row['ID']."</td>";
   echo '<td>'; //. $row['stan']; 
   if ($row['stan']==0){
    $btn_stan_znak = '✘'; }
   else{
	$btn_stan_znak = '✔'; }
   echo"<form action='' method='post'><input class='btn_stan".$row['stan']."' type=submit value=$btn_stan_znak name=p$licznik_tabelowy></form></td>";
   echo '<td>nr:' . $row['nr']."</td>";
   echo '<td>sezon ' . $row['sezon']."</td>";
   echo '<td>rok ' . $row['rok']."</td>";
   echo '<td>Nazwa: ' . $row['nazwa']."</td>";
   echo "</tr>";
   $licznik_tabelowy++;
}
//Obsługa przycisków

    /*if(isset($_POST['p0'])){
	$ret = $db->query('SELECT stan FROM TestowySerial WHERE id=1');
	$row = $ret->fetch();
    echo "Przycisk kliknięty!";
	if ($row['stan']==0){
	$db->exec("UPDATE TestowySerial SET stan=1 WHERE ID=1"); }
	else{
	$db->exec("UPDATE TestowySerial SET stan=0 WHERE ID=1"); }
	unset($_POST['p0']);
	//echo'<script src="norefresh.js"></script>  <div id="load"> </div>';
	header('refresh: 0;');	}
    */

for ($x=0; $x<$ile; $x++)
{
	//echo "Tyle razy: ".$x;
	if(isset($_POST['p'.$x])){
	$ret = $db->query('SELECT stan FROM TestowySerial WHERE id='.$x."+1");
	$row = $ret->fetch();
    echo "Przycisk kliknięty!";
	if ($row['stan']==0){
	$db->exec("UPDATE TestowySerial SET stan=1 WHERE ID=$x+1"); }
	else{
	$db->exec("UPDATE TestowySerial SET stan=0 WHERE ID=$x+1"); }
	unset($_POST['p'.$x.'+1']);
	//echo'<script src="norefresh.js"></script>  <div id="load"> </div>';
	header("location:index.php#$x");
	//: 0;");
	//echo"<script>document.location.reload(true)</script>";
	}}






echo "</table></br><hr>";
echo "2018 &copy \n";
//TUTAJ TESTUJEMY KOD

//TUTAJ JUŻ KOŃCZYMY TESTOWANIE
echo "</hr>";
?></body>
</html>
<?php
ob_end_flush();
?>

Zrobiłem kotwice, ale nie działają, dlaczego?
Nie działa ani z ID ani z NAME

0

jakiej kolumny.
Nie mam zamiaru skakac pomiedzy tematami. Dla ścisłości.

0
hopaj napisał(a):

jakiej kolumny.
Nie mam zamiaru skakac pomiedzy tematami. Dla ścisłości.

Zrobiłem, już kotwice, jeszcze tylko dostosować muszę żeby skakało o odpowiednią ilość linii.

Nowy problem malutki na zdj pokazany strzałeczką.

Pod przyciskiem jest miejsce niewykorzystane. Dałem height: 100% nie pomogło. Aktualny dobry kod:

<?php
ob_start();
?>
<html>
<head>
<style>
.btn_stan0{
	font-size: 16;
	width: 100%;
	height: 100%;
	background-color: red;
	color: white;
	
}
.btn_stan1{
	font-size: 16;
	width: 100%;
	height: 100%;
	background-color: green;
	color: white;
	
}
</style>

</head>
<body>
<?php 
//Łączenie z bazą danych
$db = new PDO('sqlite:lista.db');
$result = $db->query('SELECT * FROM TestowySerial');

//Infomracje początkowe

// phpinfo();
//nazwa bazy danych
$nazwabazy = $db->query('SELECT name FROM sqlite_master WHERE type = "table"');
$nazwabazy = $nazwabazy->fetch();
echo "Nazwa pliku:<b> $nazwabazy[0]</b></br>";

//ilość rekordów
$statement = $db->query('SELECT COUNT(*) FROM TestowySerial');
$result = $statement->fetch();
$ile = $result[0];
echo "Ilość wpisów w pliku:<b>". $ile."</b>";
echo "</br> </br>";

//koniec poczatkowych informacji
//Tabela rekordów

echo "<center><table border=1 width=75%> ";
echo'<tr style="font-weight:900;"><td>ID</td><td width=2%>S</td><td>Odc</td><td>Seria</td><td>Rok</td><td>Nazwa</td></tr>';
$licznik_tabelowy=0;
 $sql =<<<EOF
      SELECT * from TestowySerial;
EOF;

   $ret = $db->query($sql);
while ($row = $ret->fetch()){
	
	
   //echo "Wykonano ".$licznik_tabelowy." razy.</br>";
   echo "<tr><td>";
   $licznik_tabelowy++;
   echo"<a name='$licznik_tabelowy'></a>".$row['ID']."</td>";
   $licznik_tabelowy--;
   echo '<td>'; //. $row['stan']; 
   if ($row['stan']==0){
    $btn_stan_znak = '✘'; }
   else{
	$btn_stan_znak = '✔'; }
   echo"<form action='' method='post'><input class='btn_stan".$row['stan']."' type=submit value=$btn_stan_znak name=p$licznik_tabelowy></form></td>";
   echo '<td>nr:' . $row['nr']."</td>";
   echo '<td>sezon ' . $row['sezon']."</td>";
   echo '<td>rok ' . $row['rok']."</td>";
   echo '<td>Nazwa: ' . $row['nazwa']."</td>";
   echo "</tr>";
   $licznik_tabelowy++;
}
//Obsługa przycisków

    /*if(isset($_POST['p0'])){
	$ret = $db->query('SELECT stan FROM TestowySerial WHERE id=1');
	$row = $ret->fetch();
    echo "Przycisk kliknięty!";
	if ($row['stan']==0){
	$db->exec("UPDATE TestowySerial SET stan=1 WHERE ID=1"); }
	else{
	$db->exec("UPDATE TestowySerial SET stan=0 WHERE ID=1"); }
	unset($_POST['p0']);
	//echo'<script src="norefresh.js"></script>  <div id="load"> </div>';
	header('refresh: 0;');	}
    */

for ($x=0; $x<$ile; $x++)
{
	//echo "Tyle razy: ".$x;
	if(isset($_POST['p'.$x])){
	$ret = $db->query('SELECT stan FROM TestowySerial WHERE id='.$x."+1");
	$row = $ret->fetch();
    echo "Przycisk kliknięty!";
	if ($row['stan']==0){
	$db->exec("UPDATE TestowySerial SET stan=1 WHERE ID=$x+1"); }
	else{
	$db->exec("UPDATE TestowySerial SET stan=0 WHERE ID=$x+1"); }
	unset($_POST['p'.$x.'+1']);
	//echo'<script src="norefresh.js"></script>  <div id="load"> </div>';
	header("location:index.php#$x");
	//: 0;");
	//echo"<script>document.location.reload(true)</script>";
	}}






echo "</table></br><hr>";
echo "2018 &copy \n";
//TUTAJ TESTUJEMY KOD

//TUTAJ JUŻ KOŃCZYMY TESTOWANIE
echo "</hr>";
?></body>
</html>
<?php
ob_end_flush();
?>
0
hopaj napisał(a):
CodeRZ napisał(a):
hopaj napisał(a):
CodeRZ napisał(a):

Czy jest możliwe odświeżanie strony z zapamiętaną pozycją używając header();?
Po odświeżeniu zawsze wraca na początek, a chciałbym żeby pamiętał pozycje.

używam: header('refresh: 0;');
można przez js, ale wtedy się pyta o ponowne wysłanie danych, czego nie chcę. Tak jak to robi php jest najlpiej.

Ogolnie header przenosi Cie na wybrane miejsce. Mozesz dodac parametry.

header("location: " . $_SERVER['SCRIPT_NAME'] . '?parametr=wartosc');

To sie odwoluje do tego samego pliku jaki zostal wywolany z parametrami.

Wszystko cała strona w rar, teraz jeszcze dodałem trochę rekordów i coś się zepsuło.

Wyświetla: "Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\index.php:68) in C:\xampp\htdocs\index.php on line 101"

Buforowanie danych się kłania.

 

<?php
ob_start();
?>
<html>
<head>
// dane
</head>
<body>
// dane
</body>
</html>
<?php
ob_end_flush();
?>

To dobrze ze pomoglo :)

1
<form....>

i

</form>

Nalezy umieszczac poza htmlowymi tabelami i tez nie w pętlach.
Poczatek formularza osadz przed

<table>

a koniec czyli </form> poza

</table>

Sprawdz dokladnie w zrodle te komórke z przyciskami. Sprobuj tez usunac formatowanie klasami i te znaki. Daj tam byle co chocby liczbe.

0

@hopaj pomogło, teraz jest na całą komórkę przycisk! Dzięki wielkie!

0

Poprosze o łapkę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1