Wurm bei Updatescript

puschelchen

Erfahrenes Mitglied
Hallo,
ich hab irgendwo n Fehler im Update-Script eig weis ich genau wo nur das ich die Zeit nicht mehr festhält beim aktualisieren.
PHP:
<html>
<body>
<form action="" method="GET">
<?php
error_reporting(E_ALL);
date_default_timezone_set("Europe/Berlin");
setlocale(LC_TIME,"");
if (isset($_GET) and count($_GET) != 0) {

$dbname = "JPEGChecker-Datenbank";
$tbl="Lizenz";
#$timestamp = time();
$LaufzeitAktiv = date("H-i-s");
mysql_connect('localhost', 'david', 'a') or die  ("Keine Verbindung möglich: ".mysql_error());
mysql_select_db($dbname) or die  ("Keine Verbindung möglich: ".mysql_error());
$sql  = "SELECT * FROM $tbl WHERE `Seriennummer`='".mysql_real_escape_string(@$_GET["dpSrn"])."'  ";
$data="";
$data=array();
if (!empty($_GET['Seriennummer']))    $data[] = "Seriennummer LIKE '%" .mysql_real_escape_string($_GET["Seriennummer"])."%'";
if (!empty($_GET['Lizenz']))    $data[] = "Lizenz LIKE '%" .mysql_real_escape_string($_GET["Lizenz"])."%'";
if (!empty($_GET['Laufzeit']))        $data[] = "Laufzeit LIKE '%" .mysql_real_escape_string(@$_GET["Laufzeit"])."%'";
if (!empty($_GET['LaufzeitAktiv']))    $data[] = "LaufzeitAktiv LIKE '%" .mysql_real_escape_string($_GET["LaufzeitAktiv"])."%'";
if (!empty($_GET['LaufzeitEnde']))    $data[] = "LaufzeitEnde LIKE '%" .mysql_real_escape_string($_GET["LaufzeitEnde"])."%'";
if(count($data) > 0) $sql .= " WHERE " . implode(" AND ", $data);
$result = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($result)==0){

?>
<h1> Die Seriennummer ist nicht vorhanden</h1>
<?php
}
else {
?>
    <table border="2" vertical-align="middle"  class="tablefont">
                                                                              <td style="padding:5px"><b>LaufzeitAktiv</b> </td>
            <td style="padding:5px"><b>LaufzeitEnde</b></td>
            <td style="padding:5px"><b>Verbleibende Stunden </b></td>

        </tr>
<?php
    while($row = mysql_fetch_assoc($result)) {
$LaufzeitEnde=$LaufzeitAktiv+$row['Laufzeit'];


$diff = ($LaufzeitAktiv - $LaufzeitEnde) * 60 * 60;
$stunden = floor($diff / 3600); $diff = $diff % 3600; $minuten = floor($diff / 60); $sekunden = $diff % 60;
$Stunden=abs($stunden);
?>
<tr>
          <td style="padding:5px"><?php if (empty ($row['Lizenz'])) echo "0"; else echo $row['Lizenz'];?></td>
          <td style="padding:5px"><?php  echo (is_null($row['LaufzeitAktiv']) ? "&nbsp;" :$row['LaufzeitAktiv']);?></td>
          <td style="padding:5px"><?php  echo $row['LaufzeitEnde'];?></td>
          <td style="padding:5px"><?php echo $Stunden;?></td>

        </tr>
<?php
mysql_query("UPDATE $tbl SET LaufzeitAktiv = now() WHERE LaufzeitAktiv= '00:00:00'");
if(mysql_num_rows($result)==1){
#if(mysql_affected_rows() == 0){
}
else{
$query ="UPDATE  $tbl SET  LaufzeitAktiv= NOW(), LaufzeitEnde=DATE_ADD(NOW(), INTERVAL {$row['Laufzeit']} HOUR) WHERE Seriennummer='{$_GET['dpSrn']}'" ;
$sql=mysql_query($query) or die ("Fehler in Abfrage ".$query.":<br/>".mysql_errno()." - ".mysql_error());
}
}
}
}
mysql_close();
?>
</form>
</body>
</html>
wie geb ich das nun aus das die Zeit so bleibt :/
ok das Problem is die zeile if(mysql_affected_rows() ==0){
aber wenn datensatz existiert dann aktualisieren er aktualisiert aber nur wenn 1 drin steht
 
Zuletzt bearbeitet:
item: Ist das deutsch was du geschrieben hast? Ich hab ein Wort verstanden
item: Ist diese Code-Formatierung dein Ernst Kein Einrücken innerhalb der {}? Da sind Fehler vorprogrammiert!
item: Was für ein Fehler? Bitte genauer definieren was nicht geht.
item: Nie die DB-Zugangsdaten in einem Forum posten. Auch wenn die DB lokal auf deinem PC ist. Ich habe sie in deinem Beitrag gelöscht
 
sorry ich bin grad sauer und da kann ich mich schlecht artikulieren.
Jedenfalls ich ruf das auf und falls das abgelaufn is muss es neu aktualisiert werden jedoch bleibt die zeit gleich.
sprich ich sag dpsrn=xyz die lief am 26.04.2011 aus und soll heut neu laufen
hab das gefühl mit dpSrn stimmt was nicht.
PHP:
mysql_query("UPDATE $tbl SET LaufzeitAktiv = now() WHERE LaufzeitAktiv= '00:00:00'");
#if(mysql_num_rows($result)==1){
if(mysql_affected_rows() ==0){
}
else{
$query ="UPDATE  $tbl SET  LaufzeitAktiv= NOW(), LaufzeitEnde=DATE_ADD(NOW(), INTERVAL {$row['Laufzeit']} HOUR) WHERE Seriennummer='{$_GET['dpSrn']}'" ;
$sql=mysql_query($query) or die ("Fehler in Abfrage ".$query.":<br/>".mysql_errno()." - ".mysql_error());
echo $query;
das bereitet mir irgendwie bauchweh -.- kein $query wird ausgegebn und auch kein $sql
 
Zuletzt bearbeitet:
Mal ruhig durchatmen. Und dann in aller Ruhe das ganze angehen. (und trotz sauer sein Gross/Kleinschreibung und deutsche Sprache nicht vergessen)

item: im Update prüfst du die Seriennummer auf $_GET['dpSrn']. Im Select aber auf $_GET["Seriennummer"]. Was ist nun die Seriennummer?

item: Dann führst du beim ersten Update einfach mal eine Laufzeit ein, wenn die bisherige Laufzeit auf 0 ist. Das ganze in einer Schleife ohne die Seriennummer zu prüfen. Ist das so gewollt?

Achja, für alle anderen, hier das ganze mal ein wenig lesbarer formatiert, damit man auch erkennt, wo die Schleifen und If's enden
PHP:
<html>
<body>
<form action="" method="GET">
<?php
error_reporting(E_ALL);
date_default_timezone_set("Europe/Berlin");
setlocale(LC_TIME,"");
if (isset($_GET) and count($_GET) != 0) {
	$Host = "localhost";
	$User = "XXXXX";
	$password="XXXXXX";
	$dbname = "XXXXXX";
	$tbl="Lizenz";
	#$timestamp = time();
	$LaufzeitAktiv = date("H-i-s");
	mysql_connect('localhost', 'david', 'a') or die  ("Keine Verbindung möglich: ".mysql_error());
	mysql_select_db($dbname) or die  ("Keine Verbindung möglich: ".mysql_error());
	$sql  = "SELECT * FROM $tbl WHERE `Seriennummer`='".mysql_real_escape_string(@$_GET["dpSrn"])."'  ";
	$data="";
	$data=array();
	if (!empty($_GET['Seriennummer']))    $data[] = "Seriennummer LIKE '%" .mysql_real_escape_string($_GET["Seriennummer"])."%'";
	if (!empty($_GET['Lizenz']))    $data[] = "Lizenz LIKE '%" .mysql_real_escape_string($_GET["Lizenz"])."%'";
	if (!empty($_GET['Laufzeit']))        $data[] = "Laufzeit LIKE '%" .mysql_real_escape_string(@$_GET["Laufzeit"])."%'";
	if (!empty($_GET['LaufzeitAktiv']))    $data[] = "LaufzeitAktiv LIKE '%" .mysql_real_escape_string($_GET["LaufzeitAktiv"])."%'";
	if (!empty($_GET['LaufzeitEnde']))    $data[] = "LaufzeitEnde LIKE '%" .mysql_real_escape_string($_GET["LaufzeitEnde"])."%'";
	if(count($data) > 0) $sql .= " WHERE " . implode(" AND ", $data);
	$result = mysql_query($sql) or die(mysql_error());
	if(mysql_num_rows($result)==0){
		?>
		<h1> Die Seriennummer ist nicht vorhanden</h1>
		<?php
	} else {
		?>
		    <table border="2" vertical-align="middle"  class="tablefont">
		                                                                              <td style="padding:5px"><b>LaufzeitAktiv</b> </td>
		            <td style="padding:5px"><b>LaufzeitEnde</b></td>
		            <td style="padding:5px"><b>Verbleibende Stunden </b></td>

		        </tr>
		<?php
    	while($row = mysql_fetch_assoc($result)) {
			$LaufzeitEnde=$LaufzeitAktiv+$row['Laufzeit'];
			$diff = ($LaufzeitAktiv - $LaufzeitEnde) * 60 * 60;
			$stunden = floor($diff / 3600); $diff = $diff % 3600; $minuten = floor($diff / 60); $sekunden = $diff % 60;
			$Stunden=abs($stunden);
			?>
			<tr>
				<td style="padding:5px"><?php if (empty ($row['Lizenz'])) echo "0"; else echo $row['Lizenz'];?></td>
				<td style="padding:5px"><?php  echo (is_null($row['LaufzeitAktiv']) ? "&nbsp;" :$row['LaufzeitAktiv']);?></td>
				<td style="padding:5px"><?php  echo $row['LaufzeitEnde'];?></td>
				<td style="padding:5px"><?php echo $Stunden;?></td>
			</tr>
			<?php
			mysql_query("UPDATE $tbl SET LaufzeitAktiv = now() WHERE LaufzeitAktiv= '00:00:00'");
			if(mysql_num_rows($result)==1){
				#if(mysql_affected_rows() == 0){
			}else{
				$query ="UPDATE  $tbl SET  LaufzeitAktiv= NOW(), LaufzeitEnde=DATE_ADD(NOW(), INTERVAL {$row['Laufzeit']} HOUR) WHERE Seriennummer='{$_GET['dpSrn']}'" ;
				$sql=mysql_query($query) or die ("Fehler in Abfrage ".$query.":<br/>".mysql_errno()." - ".mysql_error());
			}
		}
	}
}
mysql_close();
?>
</form>
</body>

Nachtrag:
PHP:
            if(mysql_num_rows($result)==1){
                #if(mysql_affected_rows() == 0){
mysql_affect_rows() wäre nach einem Update schon richtig.....
 
ja das zweite seriennummer bei $data muss raus.
ok Fehler gefunden. :)
Fehler liegt bei Where das muste raus
 
Zuletzt bearbeitet:
Was immer du damit auch sagen willst. Aber ich geeh davon aus, dass somit das Problem gelöst ist.
 
Zurück