einen Wert in eine andere Tabelle übergeben

mvoigt

Mitglied
Hallo, ich habe folgedes problem.ich möchte das alle User mit dem eintrag "away=1" einen eintrag in die Tabeller interessen mit mailnow=1 haben.

habe folgedes gemacht aber da wird immer nur 1 user genommen

PHP:
$db=mysql_fetch_array(mysql_query("SELECT * FROM `user` WHERE `away`='1'"));
mysql_query("UPDATE interessen SET mailnow='1' WHERE username='$db[username]'");

wie mache ich es das alle away=1 nun auch in interessen mailnow=1 bekommen

greets mvoigt
 
Hallo!

Das liegt daran, dass durch die Query

PHP:
UPDATE interessen SET mailnow='1' WHERE username='$db[username]'

Nur der erste Eintrag im array $db an die Funktion übergeben wird.
Wenn du das so wie bisher machen möchtest, müsstest du die Query in eine Schleife packen:

PHP:
foreach ( $db AS $v )
    mysql_query("UPDATE interessen SET mailnow='1' WHERE username='$db[username]'");

Allerdings ist das eine schlechte (weil sehr aufwändige) Lösung.
Das kann man so viel einfacher lösen:

PHP:
mysql_query ('UPDATE interessen, user SET mailnow =1 WHERE user.away =1 AND interessen.username = user.username');

Dadurch fällt auch gleich die erste SELECT-Query weg. Das wird jetzt alles in einer einzigen Query erledigt.
 
hmm irgendwie klappt deine lösung nicht.

es bekommen immer noch alle eine Mail die in der Tabelle user die Spalte away=1 haben :(

ich mach mal das komplette Script hier rein und hoffe das einer ne Lösung für mein Problem hat
PHP:
session_start();
include('save.php');
include("../config.inc.php");
if($save==0){ include('error.inc.php'); }else{
	if(($step==1) && ($id)){


		include('../db.php');

		$mailtext="
                Dies ist eine Werbeemail, aber kein Spam,
		Klicken Sie hier, um Ihren Verdienst abzuholen!";

		?>
		Mails werden verschickt - Bitte warten<br>
		Bei Server-Aufall und Fehlern bitte F5 drücken



		<?PHP
		$mail=mysql_fetch_array(mysql_query("SELECT * FROM `buchungen` WHERE `status`='1' AND `id`='$id'"));



 mysql_query ('UPDATE interessen, user SET mailnow =1 WHERE user.away =1 AND interessen.username = user.username'); 

		
		//echo "1 Abfrage startet<hr>";
		If($mail[interesse]==0){
			$query = "SELECT * FROM interessen WHERE mailnow='0'  ORDER by RAND() LIMIT $mail[anzahl]";
			$result = mysql_query($query);


		}else{
			$int="i".($mail[interesse]+1);
			$query = "SELECT * FROM interessen WHERE mailnow='0' AND `$int`=1  ORDER by RAND() LIMIT $mail[anzahl]";
			$result = mysql_query($query) or die(mysql_error());
		}



		$num = mysql_num_rows($result);
		echo "<hr>$num";
		for ($i = 0; $i < $num; $i++){
			$row = mysql_fetch_array($result);

			$SQL="SELECT * FROM user WHERE username='".$row["username"]."';";
			$SQL2="UPDATE user SET `empfangen`=`empfangen`+1 WHERE username='".$row["username"]."';";
            mysql_query($SQL2);
            echo mysql_error();
			$email=mysql_fetch_array(mysql_query($SQL));

			 $SQL="INSERT INTO mail_$id (id, username, zeit, url, minusmail) VALUES ('$id', '$email[username]', '$mail[zeit]', '$mail[url]','$mail[minusmail]');";
			mysql_query($SQL);
			$datum=time();
			"<br><hr>m";
			$SQL="INSERT INTO history (id, username, zeit,datum,  url, head) VALUES ('$id', '".$email["username"]."', '$mail[zeit]','$datum',  '$mail[url]', '$mail[head]');";
			mysql_query($SQL);
	       // echo mysql_error();

			$text="$mail[text]

			$mailtext
			 http://www.Geldteufel.com/Actros/mails.php?username=$email[username]&id=$id";
			
			mail("$email[email]", "$mail[head] (Paidmail)", "$text","From: $dienstemail\r\n");


			flush();
			mysql_query("UPDATE user SET mailnow='1' WHERE username='$email[username]'");
			mysql_query("UPDATE buchungen SET versendet=versendet+'1' WHERE id='$id'");
		}
		mysql_query("UPDATE interessen SET mailnow='0'");

		$mail=mysql_fetch_array(mysql_query("SELECT * FROM buchungen WHERE status='1' AND id='$id'"));
		echo "alle Mails verschickt";


	}
}

greets mvoigt
 
Hiho,
versuch mal diese SQL-Abfrage:
Code:
UPDATE interessen, user SET interessen.mailnow =1 WHERE (user.away =1) AND (interessen.username = user.username)
Gibt er dir denn keine Fehlermeldung aus?

mfg
 
1. Setz du auch immer wieder alles auf 0 zurück, oder bekommt jetzt jeder eine Mail, weil jeder noch die Altlast drinstehen hat?
2. Wie fragst du die DB ab, an welche User ne Mail geschrieben wird? Könnte da noch evtl. ein Fehler auftreten?
 
Zurück