Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Seite automatisch neu laden ohne Parameter [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Seite automatisch neu laden ohne Parameter


 
trashing
13-08-2004, 21:37 
 
Hallo!

Ich habe eine Datenbank, in die andere leute etwas eintragen können. Diese Daten sollen dann freigeschalten werden. Dazu lese ich die temporären Daten aus. Diese lasse ich in einer Tabelle anzeigen und setze in der Tabelle einen Link zum freischalten.

Hier der Link Code:
<a href=\"freischalt.php?freischalt=true&freischaltid=$nummer&frageid=$frage&antwortid=$antwort&zeichenid=$zeichen\">Freischalten</a>

Der Freischalten Code:

if(!empty($_GET['freischalt']) && $_GET['freischalt'])
{
//Freischalten
$freischaltid = $_GET['freischaltid'];
$frageid = $_GET['frageid'];
$antwortid = $_GET['antwortid'];
$zeichenid = $_GET['zeichenid'];
$db->query("DELETE from temporaer WHERE nummer=$freischaltid");
$db->query("insert into final (frage,antwort,zeichen) values ('$frageid','$antwortid','$zeichenid')");
echo 'Der Eintrag wurde freigeschalten!';
}

Nun habe ich das Problem, dass sobald ich reloade die Seite nochmal mit den Parametern abgesendet wird. Und dadurch der Eintrag doppelt ist.

Nun hatte ich mir überlegt, nicht direkt auf die gleiche Datei zu verlinken, sondern den freischalten-Teil in eine extra Datei zu legen, kurz die Meldung zu zeigen und dann die ursprüngliche Seite automatisch wieder anzuzeigen.

Also folgendes Schema:
1. Anzeigen der Einträge
2. Klick beim entsprechenden Eintrag aud "Freischalten"
3. andere Seite öffnet sich schaltet frei und gibt meldung über erfolg
4. automatisch wird nach ca. 3sekunden die Seite 1 aufgerufen mit der tabelle der anderen noch nicht freigeschalteten begriffe

hat jemand eine idee wie man das umsetzt? ist sicher einfach, aber ich bekomm es nicht hin.

Danke Jens

 
MelloPie
13-08-2004, 22:18 
 
also ich wuerde einen header('location ... machen eben ohne parameter...

 
derHund
13-08-2004, 22:19 
 
header ('location: ...)sollte dir helfen ...
Danke Jensaber woher wußtest du vorher, daß ich antworte? ;)

achso, du kannst natürlich in der db auch die entsprechenden spalten unique machen ...

 
trashing
14-08-2004, 10:46 
 
@hund: ich bin schon dankbar, wenn jemand meinen post liest ;)

unique spalten geht leider nicht, da es in jeder spalte zu doppelungen kommen kann - oder kann man zwei spalten kombinieren?

also das soll z.b. gehen:

fisch karpfen
fisch hecht
tier karpfen

bei header() darf ich aber vorher keine ausgabe machen wenn ich das richtig erlesen habe. wie koennte man alternativ eine ausgabe/bestätigung über die freischaltung machen?

habe auch schon mal metarefresh probiert, aber das funktionierte leider nicht richtig, er hat die gleich seite immer wieder geöffnet statt der url im meta refresh?!

habe im forum inzwischen auch gelesen, dass es mit php keinen timer an sich gibt und javascript wollte ich halt aus dem spiel lassen...

und wieder
DANKE
Jens

 
derHund
14-08-2004, 11:20 
 
oder kann man zwei spalten kombinieren?ja, das geht. schau mal im php_my_admin ... 'create an index on ...' oder so heißts ... wie koennte man alternativ eine ausgabe/bestätigung über die freischaltung machen? du könntest auf die bestätigungsseite weiterleiten ...?

 
trashing
14-08-2004, 12:19 
 
danke für die schnelle antwort.

aber ich möchte nach möglichkeit nach dem freischalten möglichst wieder zur freischalttabelle um dort den nächsten freischalten zu können.

im moment mache ich es jetzt erstmal so, dass ich auf der bestätigungsseite einen zurückbutton machen werden, dann muss ich halt klicken

 
derHund
14-08-2004, 12:59 
 
hmm,

wenn du unbedingt eine visuelle bestätigung brauchst, leite per header auf die best.-seite und von dort mittels meta-refresh auf die alte ... :dontknow:

 
oppi
14-08-2004, 14:07 
 
hmm.. mal ein anderer Ansatz:
Du machst zuerst ein Delete dann ein Insert.
Wenn du die Insertquery nur abschickst, wenn das Delete auch etwas gelöscht hat, wird auch bei einem refresh nix doppelt eingetragen.
also zb so:

$db->query("DELETE from temporaer WHERE nummer=$freischaltid");
if (mysql_affected_rows()) $db->query("insert into final (frage,antwort,zeichen) values ('$frageid','$antwortid','$zeichenid')");
else echo "Der Eintrag wurde bereits freigeschaltet.";

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:52 Uhr.