Eintrag geändert bild ausgeben in Tabelle

DJmension

Mitglied
Hallo erstmal , einen Recht schönen Abend wünsche ich ,

Ich hab mir ein script gebastelt indem für die User die einen eintrag bearbeitet haben ein Bild für 12 Stunden angezeigt werden soll und für den selben Eintrag für andere User für 144 Minuten ein anderes Bild.
Für die Einträge die nicht in die Zeitspanne rein passen soll ein Weiteres Bild angezeigt werden .
Hier erstmal der Code der Ausgabe der Tabelle :

PHP:
<?
// *************************************** Paging ****************************************
$query  = "SELECT * FROM goldie_s20";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
$anz = mysql_num_rows($result);
//************************************* Paging ende ****************************************
echo '<td align="left" class="uhr">&nbsp;&nbsp;'.$anz.'&nbsp;&nbsp;Goldies</td>';
?>

</tr>
</table>


<table border="2" bordercolor="#007979" cellspacing="0" cellpadding="0" width="95%">
	<tr>
	  <td class="Kopf" align=center>Status</td>
		<td bgcolor="#003333" align=center><a href ="goldie_sort_level.php">Level</a></td>
		<td bgcolor="#003333" align=center><a href ="goldie_sort_name.php">Name</a></td>
		<td bgcolor="#003333" align=center><a href ="goldie_sort_id.php">ID</a></td>
		<td bgcolor="#003333" align=center><a href ="goldie_sort_beute.php">Beute</a></td>
		<td bgcolor="#003333" align=center><a href ="goldie_sort_erwischt.php">erwischt</a></td>
		<td bgcolor="#003333" align=center><a href ="goldie_sort_energie.php">L-Energie</a></td>
		<td bgcolor="#003333" align=center><b><font color="#80FFFF">Datum <img border="0" src="../images/sortup.gif"></font></b></td>
		<td bgcolor="#003333" align=center><b><font color="#80FFFF">Zeit <img border="0" src="../images/sortup.gif"></font></b></td>
		<td <? if($_SESSION['rechte'] == "admin") { echo 'colspan="2" '; }  else  { echo ''; } ?> bgcolor="#003333" align=center><b><font color="#80FFFF">Aktion</font></b></td>
	</tr>

<?php
// **************************** Countdown Part one ***************************************
  $iUserID = $_SESSION["userid"];
	$iAttackable = 3;
// **************************** Countdown Part one ende  *********************************
$i = 0;
// *************************************** Paging ****************************************


// how many rows to show per page
$rowsPerPage = 20;

// by default we show first page
$pageNum = 1;

// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
	$pageNum = $_GET['page'];
}

// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;



 // ************************************ Hier fängt die Herkömmliche abfrage an ************************************************************

$query  = "SELECT * FROM goldie_s20 ORDER BY Jahr DESC, Monat DESC, Tag DESC, Stunde DESC, Minute DESC LIMIT $offset, $rowsPerPage";
$result = mysql_query($query);
$anz = mysql_num_rows($result);
if($anz > 0){


while($row = mysql_fetch_assoc($result)){ 
$iAttackable = 3;
if($i%2==0) { $trcolor = "#003333"; } else { $trcolor = "#005555"; }
// ************************************************  Countdown part two Start
echo '<tr bgcolor="'.$trcolor.'">';

  $sQuery = "SELECT * FROM time_s20 WHERE eintragid = '".$row['IDnum']."' "; 
  $rAttackResult = mysql_query($sQuery); 
  while ($aAttacks = mysql_fetch_assoc($rAttackResult)) { 
  	

  if ( $aAttacks['userid'] == $iUserID && $aAttacks['time'] >= time() )  { $iAttackable = 1; } 
  else if ($aAttacks['timea'] >= time() )  { $iAttackable = 2; } 


if ( $iAttackable == 1 ) { 
	$iAttackgif = "Block.gif";
$countb = (($aAttacks['time'] - time())-3600) ;
$count = date("H:i:s", $countb);
	}
elseif ( $iAttackable == 2 ) {
	$iAttackgif = "Block_d.gif";
$countb = (($aAttacks['timea'] - time())-3600) ;
$count = date("H:i:s", $countb);
	}
elseif ( $iAttackable == 3 ) {
$iAttackgif = "OK.gif";
$count = '';
}
echo '<td align="center"><img border="0" src="../images/'.$iAttackgif.'">'.$count.'</td>';
// ************************************************  Countdown part two ende

echo '<td><font size="2">&nbsp;'.$row['Level'].'</font></td>
<td><font size="2"><a href="'.$link_name_s20.''.$row['Name'].'" target="_blank"><b>&nbsp;'.$row['Name'].'</b></a></font></td>
<td align="center"><font size="2"><a href="'.$link_id_s20.''.$row['IDnum'].'" target="_blank"><b>'.$row['IDnum'].'</b></a></font></td>
<td><font size="2">&nbsp;'.$row['Beute'].'</font></td>
<td><font size="2">&nbsp;'.$row['erwischt'].'</font></td>
<td><font size="2">&nbsp;'.$row['Energie'].'</font></td>
<td align="center"><font size="2">'.$row['Tag'].'.'.$row['Monat'].'.'.$row['Jahr'].'</font></td>
<td align="center"><font size="2">'.$row['Stunde'].':'.$row['Minute'].'</font></td>
<td align=center>
<a href="form_aendern.php?
userid='.$iUserID.'&
id='.$row['id'].'&
Level='.$row['Level'].'&
Name='.$row['Name'].'&
IDnum='.$row['IDnum'].'&
Beute='.$row['Beute'].'&
erwischt='.$row['erwischt'].'&
Energie='.$row['Energie'].'&
Tag='.$row['Tag'].'&
Monat='.$row['Monat'].'&
Jahr='.$row['Jahr'].'&
Stunde='.$row['Stunde'].'&
Minute='.$row['Minute'].'" titel="&Auml;ndern"><img border="0" src="../images/Redo.gif"></a>';


if($_SESSION['rechte'] == "admin")

   {
   echo '</td><td align ="center"><a href="action_del.php?id='.$row['id'].'& IDnum='.$row['id'].'& userid='.$iUserID.'" titel="L&ouml;schen"><font size="2"><img border="0" src="../images/Delete.gif"></font></a>';
   }
   else
   {
   echo '';
   }

echo '</td></tr>';
$i++; 
}}

Mein Problem liegt darin , das wenn ich einen eintrag ändere sind aufeinmal alle einträge mit dem Bild der 12 Stunden Sperre versehen , und das soll so nicht sein.
Verantwortlich hierfür ist sicherlich die IF-Anweisung
PHP:
  $sQuery = "SELECT * FROM time_s20 WHERE eintragid = '".$row['IDnum']."' "; 
  $rAttackResult = mysql_query($sQuery); 
  while ($aAttacks = mysql_fetch_assoc($rAttackResult)) { 
  	

if ( $aAttacks['userid'] == $iUserID && $aAttacks['time'] >= time() )  { $iAttackable = 1; } 
  else if ($aAttacks['timea'] >= time() )  { $iAttackable = 2; } 


if ( $iAttackable == 1 ) { 
	$iAttackgif = "Block.gif";
$countb = (($aAttacks['time'] - time())-3600) ;
$count = date("H:i:s", $countb);
	}
elseif ( $iAttackable == 2 ) {
	$iAttackgif = "Block_d.gif";
$countb = (($aAttacks['timea'] - time())-3600) ;
$count = date("H:i:s", $countb);
	}
elseif ( $iAttackable == 3 ) {
$iAttackgif = "OK.gif";
$count = '';
}
echo '<td align="center"><img border="0" src="../images/'.$iAttackgif.'">'.$count.'</td>';
Oder einfach die Tatsache das ich in die Tabelle "time_s20" einträge drin habe , die Zwangsläufig für diesen Fehler sorgen.

In dieser Tabelle lasse ich die Userid,eintragsid = ( im Eintrag vorhandene nummer die nur einmal in der Tabelle vorkommt ),und die 2 jeweilgen Timestamps einmal time = ( +12 Stunden ) und timea = ( +144 Minuten ) speichern.

Hat jemand eine Idee wie das funktionieren könnte . Das ihr euch ein besseres Bild machen könnt , setze ich auch gleich ein screenshot mit rein wie das jetzt ausschaut.

Der Eintrag mit der ID 44455566 wurde von mir bearbeitet und trägt zu recht das Verbotsschild , die Anderen Einträge haben keinen Passenden gegeneintrag in der Tabelle "time_s20" , wodurch meiner meinung nach immer das Bild Block.gif angezeigt wird. Weil diese Werte ja noch in den Variablen drin sind und nicht ersetzt werden.
Wie mache ich das, das in der whileschleife die zweite whileschleife nur soviele abfragen ausgibt nach der Anzahl der einträge , und wenn keine Passenden Einträge mehr gefunden werden Automatisch Bild OK.gif ausgegeben wird.
 

Anhänge

  • image9.jpg
    image9.jpg
    80,6 KB · Aufrufe: 13
Zuletzt bearbeitet:
Das Ganze ist ein kleines bisschen chaotisch :)

Du hast den $iAttackable = 3 Fall in deinem ersten If nicht berücksichtigt.

PHP:
if (( $aAttacks['userid'] == $iUserID) && ($aAttacks['time'] >= time() ))  { $iAttackable = 1; } 
  else 
    if ($aAttacks['timea'] >= time() )  { $iAttackable = 2; }
      else { $iAttackable = 3; }

Ich persönlich würde das ein klein wenig vereinfachen und nicht zwei mal mit dem ge-IFFE anfangen:

PHP:
if (( $aAttacks['userid'] == $iUserID) && ($aAttacks['time'] >= time() ))  
  { 
    $iAttackable = 1; 
    $iAttackgif = "Block.gif";
    $countb = (($aAttacks['time'] - time())-3600) ;
    $count = date("H:i:s", $countb);
  } 
  else
  if ($aAttacks['timea'] >= time() )  
    { 
      $iAttackable = 2;
      $iAttackgif = "Block_d.gif";
      $countb = (($aAttacks['timea'] - time())-3600) ;
      $count = date("H:i:s", $countb); 
    }
    else 
    { 
      $iAttackable = 3;
      $iAttackgif = "OK.gif";
      $count = '';         
    }
 
Zuletzt bearbeitet:
Ich werde natürlich versuchen , das was du mir Vorschlägst, aber die Variablen ist gesetzt etwas weiter vorher. Siehe :
PHP:
// **************************** Countdown Part one *************************************** 
  $iUserID = $_SESSION["userid"]; 
    $iAttackable = 3; 
// **************************** Countdown Part one ende  *********************************

Ich kenn mich ja nicht großartig aus mit der Sache, aber ich denke das die erscheinende Fehlfunktion daher kommt das in einer Tabelle eben 5 Einträge sind , die ja peer while abgefragt werden.
Jetzt habe ich in dieser while eine weitere while drin. Die aber nur 1 eintrag hat.

Die Tatsache das in der Tabelle jetzt jeder Eintrag mit dem Fall $iAttackable = 1 ausgegeben werden sagt mir , das er mit der ersten while schleife den Richtigen eintrag selektiert , jedoch bei der 2. schleife findet er kein "eintragid = '".$row['IDnum']." mehr, und ändert in dem Fall die Variablen füllung nicht mehr um, weil wo nichts gefunden wird kann ja auch nichts an eine Variable gegeben werden.
Oder sehe ich das Falsch ?

Ich Füge vorsichtshalber nochmal 3 Bilder hinzu die das Ausgabe verhältniss verdeutlichen.

Datenbanktabelle "time_s20" = image10.jpg

Datenbanktabelle "goldie_s20" = image11.jpg

Page ansicht mit den Datenbankeinträgen = image12.jpg

( Der erste eintrag ist ja koreckt mit dem Verbotsschild = Block.gif ) Doch die 4 weiteren sollten eigentlich OK.gif anzeigen.
 

Anhänge

  • image10.jpg
    image10.jpg
    17,9 KB · Aufrufe: 10
  • image11.jpg
    image11.jpg
    37,2 KB · Aufrufe: 9
  • image12.jpg
    image12.jpg
    34,5 KB · Aufrufe: 6
Zurück