If-Anweisung Insert wierd nur einmal durchgeführt

andy100

Grünschnabel
Hi
Es soll durch das nachfolgende Cronscript einmal pro Woche eine Berechnung für jeden Spieler durchgeführt werden, wenn in der Tabelle ru_table die ruwoche = Vorwoche keinen Datensatz ausgibt.

Wenn die If Anweisung zutrifft wird nur vom ersten Spieler ein Insert durchgeführt.
Würde mich über Eure Hilfe bei diesem Problem freuen.

Danke

Hier mein Code:
PHP:
	if(@php_sapi_name() != 'cli' && @php_sapi_name() != 'cgi')
	{
		die('This script will only work in the shell.');
	}

	$debugMsg[] = 'cron_rueckstand: Started';
require('include/func.inc.php');	
require('include/adapt.inc.php');
	if($config['last_rueckstand_run'] != date('dmy'))
	{
		$debugMsg[] = '  cron_rueckstand: Ruckstand run started';
		$yesterday=time()-(60*60*24);
	$result2 = $db_sql->sql_query("SELECT
								$lvl_table.*, 
								$user_table.*
								FROM $user_table
								LEFT JOIN $lvl_table ON ($lvl_table.lvlid = $user_table.lvlid)
								WHERE userid >3 AND optid < 2
								GROUP BY userid ORDER BY username ASC");
	while ($wob = $db_sql->fetch_array($result2))
			   {
						
 
			$stamp =time();
			$w = date("W", $stamp);
			$vorwoche = $w - 1;
						
 				
	$debugMsg[] = 'cron_rueckstand: rueckstand Berechnung started';
					
	/* Summe aller Einzahlungen der vorigen Woche je Spieler */
				 
	$result3 = $db_sql->sql_query("SELECT  
 								SUM(eingang) as kassaeingang
								FROM $eingang_table 
								WHERE woche=$vorwoche AND userid = $wob[userid] ");
	
                $rueckstand_vorwoche = $db_sql->fetch_array($result3);
						
						
	result4 = $db_sql->sql_query("SELECT *
								FROM $ru_table
								WHERE ruwoche = $vorwoche");
	$rueckstand_gesamt = $db_sql->fetch_array($result4);
						
	$rueckstand = $db_sql->num_rows($result4);
		  
 /* Berechnung der Differenz zwischen lvl Betrag und Einbezahlten Betrag der vorigen Woche */ 
		  
		  $kdiff = $rueckstand_vorwoche['kassaeingang'] - $wob['lvlb'];
  		  		  
		  
if($rueckstand == 0)
  {

 $db_sql->sql_query("INSERT INTO $ru_table (userid, gildenid, akdate, rubetrag, ruwoche,lvlid) VALUES ('$wob[userid]','$wob[gildenid]', ".$stamp.", '$kdiff','$vorwoche','0')");
}

eval ("\$rwochen_bit .= \"".gettemplate("test_bit")."\";");	
		  }

eval ("\$including = \"".gettemplate("test")."\";");
eval("dooutput(\"".gettemplate("main")."\");");
?>
 
Zuletzt bearbeitet:
Hi,

bitte
Bitte achte auf eine korrekte Grammatik und Rechtschreibung (inkl. Groß-/ Kleinschreibung) und eine sinnvolle, klare Fragestellung bzw. Antwort. Mehr dazu findest Du in unserer Netiquette.

Ich hatte echt Mühe deine Sätze zu verstehen.

Nun zu deinem Problem, wird die while-Schleife mehr mals durchgangen? Printe mal das Array von der Datenbank...

Sehe ich das richtig das es sich um diese If-Anweisung handelt?
PHP:
if($rueckstand == 0)
 {

 $db_sql->sql_query("INSERT INTO $ru_table (userid, gildenid, akdate, rubetrag, ruwoche,lvlid) VALUES ('$wob[userid]','$wob[gildenid]', ".$stamp.", '$kdiff','$vorwoche','0')");
}

Gruß
 
@ne0hype

Danke für Deine Nachfrage

Habe das jetzt so gelöst

PHP:
	if(@php_sapi_name() != 'cli' && @php_sapi_name() != 'cgi')
	{
		die('This script will only work in the shell.');
	}

	$debugMsg[] = 'cron_rueckstand: Started';
require('include/func.inc.php');	
require('include/adapt.inc.php');
	if($config['last_rueckstand_run'] != date('dmy'))
	{
		$debugMsg[] = '  cron_rueckstand: Ruckstand run started';
		$yesterday=time()-(60*60*24);
	
			
 				
			$stamp =time();
			$w = date("W", $stamp);
			$vorwoche = $w - 1;
			$zweiwochen = $w - 2;	
			
	$result4 = $db_sql->sql_query("SELECT *
								FROM $ru_table
								WHERE ruwoche = $vorwoche");
	$rueckstand_gesamt = $db_sql->fetch_array($result4);
						
	$rueckstand = $db_sql->num_rows($result4);
		  
$result1 = $db_sql->sql_query("SELECT userid FROM $user_table WHERE userid >3 AND optid < 2 ");		  
		  
		  $useranzahl = $db_sql->num_rows($result1);
		  
		  if($rueckstand == 0)
		  
		  {
		   for($a=0;$a <$useranzahl; $a++)
		   {
		     
		   $uid = mysql_result($result1,$a, "userid");
		   
	 $result2 = $db_sql->sql_query("SELECT
								$lvl_table.*, 
								$user_table.*
								FROM $user_table
								LEFT JOIN $lvl_table ON ($lvl_table.lvlid = $user_table.lvlid)
								WHERE userid = $uid ");
	
$wob = $db_sql->fetch_array($result2);
		   
		   
	$result3 = $db_sql->sql_query("SELECT  
 								SUM(eingang) as kassaeingang
 								FROM $eingang_table 
								WHERE woche=$vorwoche AND userid = $uid ");
	$rueckstand_vorwoche = $db_sql->fetch_array($result3);
		   
		   
/* Berechnung der Differenz zwischen lvl Betrag und Einbezahlten Betrag der vorigen Woche */ 
		   $kdiff = $rueckstand_vorwoche['kassaeingang'] - $wob['lvlb'];
		   
$db_sql->sql_query("INSERT INTO $ru_table (userid, gildenid, akdate, rubetrag, ruwoche,lvlid) VALUES ('$uid','$wob[gildenid]', ".$stamp.", '$kdiff','$vorwoche','$wob[lvlid]')");	  
		  }
		   
		
		}
		
	
		  
$db_sql->sql_query("UPDATE $set_table SET last_rueckstand_run ='"$stamp."' WHERE styleid='1'");
	
?>
 
Zuletzt bearbeitet:
Zurück