update Datensatz funktioniert nicht...

mad2092

Grünschnabel
Hallo zusammen,

ich hoffe ich bin hier im richtigen Forum gelandet. Bin mir nicht ganz sicher, ob es ein mysql oder php Problem ist?

Ich versuche einen Datensatz anhand einer übergebenen URL Variable zu aktualisieren. Soweit ich den Fehler eingrenzen konnte funktioniert - warum auch immer - mein Update nicht.


Vielleicht hat mir ja jemand einen Tipp? Mein Script sieht so aus:

PHP:
$db_visitors = "ck_forumthread";
$id_forumthread      = $_GET["threadid"]; 
 
mysql_select_db($database_ck_db, $ck_db);
$query_pagecount = sprintf	("SELECT forumthread_viewcount, forumthread_title 
FROM $db_visitors WHERE id_forumthread=$id_forumthread");
  $pagecount = mysql_query($query_pagecount, $ck_db) or die(mysql_error());
  $row_pagecount = mysql_fetch_assoc($pagecount);
  $totalRows_pagecount = mysql_num_rows($pagecount);
	
 $Hits	= $row_pagecount['forumthread_viewcount'];
 $Count = $Hits+1;

if(!isset($id_forumthread)) 
  { 
mysql_query ("UPDATE ".$GLOBALS['db_visitors']." SET forumthread_viewcount=$Count, 
viewcount_time '' WHERE id_forumthread=$id_forumthread ");  
 }

echo $db_visitors;
echo $id_forumthread;
echo $row_pagecount['forumthread_viewcount'];
echo $row_pagecount['forumthread_title'];
echo $totalRows_pagecount;
echo $Count;

Mein Variablen sind alle korrekt vorhanden?
Vielen Dank im Voraus für Eure Hilfe.
Claus
 
Kann es sein, dass ein = fehlt?

PHP:
mysql_query ("UPDATE ".$GLOBALS['db_visitors']." SET forumthread_viewcount=$Count, 
viewcount_time='' WHERE id_forumthread=$id_forumthread ");  
 }

Sonst lass dir mal mysql_error() ausgeben.
 
Auch das = Zeichen bei "viewcount_time='' " ändert nichts.

mysql_error liefert auch nur ein leeres Ergenis zurück. Also kein Syntax-Fehler?

Kann es vielleicht an der Struktur der Tabelle liegen? Ich arbeite mit Mysq l5.0


Die Tabelle hat diesen Aufbau:

Feld Typ Null Standard
id_forumthread int(14) Ja NULL
forumthread_catid int(14) Ja 0
forumthread_status tinyint(1) Ja 1
forumthread_replycount int(14) Ja 0
forumthread_viewcount int(14) Ja 0
viewcount_time timestamp Ja NULL
forumthread_lastreply_time timestamp Ja 0000-00-00 00:00:00
forumthread_lastreply_autor varchar(250) Ja
forumthread_lastreply_autorid int(14) Ja 0
forumthread_uid varchar(32) Ja
forumthread_title varchar(250) Ja
forumthread_autor varchar(250) Ja
forumthread_autorid int(14) Ja 0

Vielen Dank noch einmal.
 
PHP:
mysql_query ("UPDATE ".$GLOBALS['db_visitors']." SET forumthread_viewcount=".$Count.", 
viewcount_time = NULL WHERE id_forumthread=".$id_forumthread);
Die Anführungszeichen, die ich gesetzt habe, sind in diesem Fall irrelevant, wichtig ist das NULL, anstelle von ''.
 
Hallo,

vielen Dank erst einmal. Ich konnte den Fehler jetzt doch genauer Eingrenzen. Dieser liegt doch nicht im Update, sondern in der "if" Abfrage.

PHP:
if(!isset($id_forumthread))  
  {  
mysql_query
--> geht nicht?

Ich habe diese nun mal ganz spartanisch eingbaut:

PHP:
if ($id_forumthread !=0)
--> also wenn die ID in der URL vorhanden ist.

So funktioniert auch der Update. :)

Vielen Dank für Eure Mühe.
Grüße Claus
 
Ähm du hast da was verdreht ;)

!=0 -> Wenn nicht null bzw. wenn es EINEN Wert hat
!isset($id_forumthread) -> Wenn es KEINEN Wert hat

Du hättest demnach einfach das ! am isset wegmachen müssen...
 
Vielen Dank an euch. Ihr habt natürlich beide Recht.

Sowas passiert eben, wenn derjenige der den Code baut - also ich - keine große Ahnung hat. :( Und noch dazu fremden Code als Vorlage nimmt und versucht an seine eigenen Bedürfnisse anzupassen.

Ich hätte da aber noch eine Frage dazu...

Ich habe die Abfrage nun so aufgebaut:

PHP:
if (isset($id_forumthread) && $UID != $row_pagecount['forumthread_uid'] && $Date != $String) 
{ 
mysql_query ("UPDATE ".$GLOBALS['db_visitors']." SET forumthread_viewcount='$Count', 
forumthread_uid='$UID' WHERE id_forumthread='$id_forumthread' ");   

}
else {};

--> prüft ob die URL Variable vorhanden ist und die IP und der Zeitstempel unterschiedlich sind. Nur dann wird der Update durchgeführt.

mit diesen Variablen:

PHP:
$db_visitors = "ck_forumthread";
$id_forumthread      = $_GET["threadid"];
$Hits	= $row_pagecount['forumthread_viewcount'];
$Count = $Hits + 1;
$UID	=	$_SERVER[REMOTE_ADDR];
$Date    = date("Y-m-d H:i");
$String	=	substr($row_pagecount['viewcount_time'],0,16) ;

Mich würde interessieren, wie es möglich ist die Sperre des Updates auf z.B. 30 min. festzulegen? Ich weiß das es geht, schliesslich wird dies ja auch schon auf vielen Seiten genutzt. Ich habe im Moment nur keine Idee wie ich mit dem substring Rechnen kann...

Vielen Dank noch einmal.
 
In dem du mit dem timestamp rechnest.

1 Stamp = 1 Sekunde ;)
30 Minuten = 30 x 60 = 1800

Wenn timestamp(jetzt) - timestamp(eintrag) >=1800 dann Update nicht sperren
 
Zurück