online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon jackdanielz vom 14.08.2019, 00:20 Options

datensatz löschen

Hi , undzwar s schreibe ich eine onlineliste für mitglieder , update der db geht , und das schreiben auch , leider löscht er mir den datensatz nicht :

kann mir jemand helfen? ich finde den fehler einfach nicht


Antwort schreiben

Antwort 1 von jackdanielz vom 14.08.2019, 00:21 Options


$timestamp=time();

$datum = date("d.m.Y",$timestamp);

$uhrzeit = date("H:i",$timestamp);



$tabellenname="onlineliste";

$sql="SELECT * FROM $tabellenname ORDER BY ID DESC";

$result=mysql_query($sql,$conn);



$anzahl=mysql_num_rows($result);



  for($i=0;$i<$anzahl;$i++)

  {

    $ergebnis[$i]=mysql_fetch_array($result);

  }





for($i=0;$i<$anzahl;$i++)

{

if($ergebnis[$i]['timestamp']+300 < $timestamp)

{

$sql="DELETE FROM onlineliste WHERE nickname=".$ergebnis[$i]['nickname']."";

$result=mysql_query($sql,$conn);

}

}



if($_COOKIE['user'])

{



$neueruser=$_COOKIE['user'];



for($i=0;$i<$anzahl;$i++)

{

if($ergebnis[$i]['nickname']==$neueruser)

{

$meld=$neueruser;

$id=$ergebnis[$i]['ID'];

}

}



if($meld)

{

$sql="UPDATE onlineliste SET zeit='".$uhrzeit."' WHERE ID=".$id;

$result=mysql_query($sql,$conn);

}



if(!$meld)

{

$sql="INSERT INTO $tabellenname (nickname, zeit, timestamp) values ( '".mysql_real_escape_string($neueruser,$conn)."', '".$uhrzeit."', ".$timestamp.")";

$result=mysql_query($sql,$conn);

}

}



for($i=0;$i<=count($ergebnis);$i++)

{

echo $ergebnis[$i]['nickname']." - ".$ergebnis[$i]['zeit']."<br>";

}

?>

Antwort 2 von jackdanielz vom 14.08.2019, 00:37 Options

sorry das war der alte code , das ist der neue :

<?php
require('db_verbindung.php');

$timestamp=time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);

$tabellenname="onlineliste";
$sql="SELECT * FROM $tabellenname ORDER BY ID DESC";
$result=mysql_query($sql,$conn);

$anzahl=mysql_num_rows($result);

  for($i=0;$i<$anzahl;$i++)
  {
    $ergebnis[$i]=mysql_fetch_array($result);
  }

if($_COOKIE['user'])
{

$neueruser=$_COOKIE['user'];

for($i=0;$i<$anzahl;$i++)
{
if($ergebnis[$i]['nickname']==$neueruser)
{
$meld=$neueruser;
$id=$ergebnis[$i]['ID'];
}
}

if($meld)
{
$sql="UPDATE onlineliste SET zeit='".$uhrzeit."' WHERE ID=".$id;
$result=mysql_query($sql,$conn);
}

$blub=$ergebnis[$i]['timestamp']+300;

for($i=0;$i<$anzahl;$i++)
{
if($blub < $timestamp)
{
$sql="DELETE FROM onlineliste WHERE ID=".$id;
$result=mysql_query($sql,$conn);
}
}


if(!$meld)
{
$sql="INSERT INTO $tabellenname (nickname, zeit, timestamp) values ( '".mysql_real_escape_string($neueruser,$conn)."', '".$uhrzeit."', ".$timestamp.")";
$result=mysql_query($sql,$conn);
}
}

for($i=0;$i<=count($ergebnis);$i++)
{
echo $ergebnis[$i]['nickname']." - ".$ergebnis[$i]['zeit']."<br>";
}
?>

Antwort 3 von Woo vom 14.08.2019, 08:22 Options

Moin,

sieht eg. richtig aus.
Mach am besten mal einen
echo $sql;
und gib das mal in phpMyadmin als SQL Befehl ein, dann kriegst du evtl. auch eine Fehlermeldung.

Antwort 4 von ClemBra vom 14.08.2019, 19:09 Options


for($i=0;$i<$anzahl;$i++)
{
if($blub < $timestamp)
{
$sql="DELETE FROM onlineliste WHERE ID=".$id;
$result=mysql_query($sql,$conn);
}
}

Alleine dieser bereich ist Schwachsinn, da in der Schleife nichts gemacht wird, als nur x mal hintereinander die gleiche ID, nämlich die des aktuellen Users, gelöscht wird.

schreib doch folgendes über deinen code

$timeout=300;
$sql="DELETE FROM `" . $tabellenname . "` WHERE `timestamp`<" . (time() - $timeout);
$result = mysql_query($sql);
if (!$result) {
echo "Datenbankfehler: " . mysql_error();
}

Es ist wesentlich schneller die Datenbank die Sortierarbeit machen zu lassen, als dies von PHP erledigen zu lassen.
Nebenbei, warum speicherst du die "Zeit" als normalen Text in die Datenbank ab??
In solchen Fällen speicher ich einmal einen Timestamp wenn der jenige User online ging und bei jedem Seitenabruf aktualisiere ich diesen.

Gruß Clemens

Ähnliche Themen

Automatisch aktualisieren
Mrfivejunior  29.07.2007 - 113 Hits - 10 Antworten

Excel: Doubletten löschen
stroti  03.08.2007 - 98 Hits - 3 Antworten

autowert -5213664899 Fehler
wasa  19.11.2007 - 77 Hits - 5 Antworten

Datensatz duplizieren
Turion64  15.11.2007 - 165 Hits - 1 Antwort

Abfangen eines nicht markierten Datensatzes im Listenfeld
Jack1109  21.11.2007 - 123 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026