Frage zu einem Formmailer und MySql

concept

Member
ID: 11843
L
21 Februar 2007
12
1
Hallo!

Ich habe mal wieder eine Frage zu einem Script welches ich selbst "gebastelt" habe. Und zwar ist folgendes:
Für eine vereinsinterne Seite möchte ich eine Seite haben, in der man an alle Mitglieder eine Mail schreiben kann - ähnlich wie in einem Newsletter.
Die eMail Adressen der Mitglieder stehen in einer DB. Wie kann ich das Script nun umbauen damit ich es nicht so umständlich machen muss wie hier im Quelltext.

Hier Teil 1:
PHP:
<form action="email_alle_senden.php" method="POST">
  <table width="200" border="0">
    <tr>
      <td valign="top">Betreff:</td>
      <td><input name="betreff" type="text" size="45" /></td>
    </tr>
    <tr>
      <td valign="top">Nachricht: </td>
      <td><textarea name="msg" cols="45" rows="10"></textarea></td>
    </tr>
    <tr>
      <td valign="top"> </td>
      <td><input type="submit" value="eMail senden" /></td>
    </tr>
  </table>
  <p> </p>
</form>

und hier der 2. Teil
PHP:
<?php require_once('../Connections/allg.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_allg, $allg);
$query_mitgleider_mail = "SELECT * FROM mitglieder ORDER BY name ASC";
$mitgleider_mail = mysql_query($query_mitgleider_mail, $allg) or die(mysql_error());
$row_mitgleider_mail = mysql_fetch_assoc($mitgleider_mail);
$totalRows_mitgleider_mail = mysql_num_rows($mitgleider_mail);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
<style type="text/css">
<!--
body,td,th {
	font-family: Georgia, Times New Roman, Times, serif;
	color: #FFFFFF;
}
body {
	background-color: #3399CC;
	margin-left: 50px;
	margin-top: 50px;
}
-->
</style></head>

<body>

  
<p>
<?php
		
 
/* Mitglieder Schleife */
$email = '[email protected]';
$email = '[email protected]';
$email = '[email protected]';
$email = '[email protected]';
$email = '[email protected]';
$email = '[email protected]';
$email = '[email protected]';
$email = '[email protected]';
$email = '[email protected]';


  
$absender = ' - Interne Mail<[email protected]>';

/* Baut Header der Mail zusammen */
$headers .= 'From:' . $absender . "\n";

/* Verschicken der Mail */
mail($email, $_POST["betreff"], $_POST["msg"], $headers) ;

/* Status Ausgabe */
echo "<h4>Die eMail wurde an folgende Mitglieder versendet:</h4>";
echo "<br><br>";
 
?>
</p>
<?php do { ?>
  <p><strong><?php echo $row_mitgleider_mail['name']; ?></strong> | <?php echo $row_mitgleider_mail['email']; ?></p>
  <?php } while ($row_mitgleider_mail = mysql_fetch_assoc($mitgleider_mail)); ?>
  <p> </p>
  </body>
</html>
<?php
mysql_free_result($mitgleider_mail);
?>
 
besten dank

nnn-ja, also danke erst mal für die antwort!
aber ich wollte gern das die email adressen aus der datenbank dort irgentwie rein kommen (wenn das überhaupt geht) damit ich nicht die email adressen doppelt ändern muss (in diesem script und in der datenbank).
denn die mitglieder können ihre daten selbst ändern, ohne das ich es bemerke.
ich hoffe, ich konnte es so besser beschreiben :yes:

oder ist es sinnvoller wenn ich die $email = ''[email protected]'; in einer extra seite generieren lasse? und diese dann include()?

gruß
andy
 
dann musst du den mail(..) befehl in die sql-auslesende while schleife legen und darin den sendeprozess ablaufen lassen. das vorgehen ist also praktisch das selbe.

also in deinem fall di folgende zeile:
PHP:
while ($row_mitgleider_mail = mysql_fetch_assoc($mitgleider_mail))

hast du das schon versucht?