Avatar billede kappel Nybegynder
10. marts 2004 - 17:37 Der er 24 kommentarer og
1 løsning

Sende mail ud fra mysql tabel

Hej

I en tabel har jeg spilleroplysninger, bl.a. id, navn og email.

Jeg vil fra en form sende en mail ud til alle der har en email adresse i tabellen, hvordan klarer jeg den?

id int(11) NOT NULL auto_increment,
navn varchar(30) default NULL,
email varchar(30) default NULL,

/kappel
Avatar billede googolplex Novice
10. marts 2004 - 18:18 #1
Noget lignende dette:

$sql = 'SELECT * FROM tabel';
$resultat = mysql_query($sql);
while ($raekke = mysql_fetch_array($resultat))
{
    mail($raekke['email'], 'Emne', 'Besked');
}
Avatar billede googolplex Novice
10. marts 2004 - 18:19 #2
Du skal selvfølgelig også huske at åbne/lukke for databaseforbindelsen.
Avatar billede kappel Nybegynder
10. marts 2004 - 19:09 #3
Hvordan får man den til at skrive "mailen er sendt"?

åbne/lukke er det include(connect.php) og så mysql(close); ?
Avatar billede googolplex Novice
10. marts 2004 - 20:44 #4
mysql_connect($server, $bruger, $kodeord);
mysql_select_db($database);
$sql = 'SELECT * FROM tabel';
$resultat = mysql_query($sql);
while ($raekke = mysql_fetch_array($resultat))
{
    mail($raekke['email'], 'Emne', 'Besked');
    echo 'Der er sendt en mail til <b>' . $raekke['navn'] . '</b><br />';
}
mysql_close();
Avatar billede kappel Nybegynder
10. marts 2004 - 21:12 #5
Jeg bruger:

<?
include('include.php');
$sql = mysql_query("SELECT * FROM spillere");
$resultat = mysql_query($sql);
while ($raekke = mysql_fetch_array($resultat))
{
    mail($raekke['email'], 'Emne', 'Besked');
    echo 'Der er sendt en mail til <b>' . $raekke['navn'] . '</b><br />';
}
mysql_close();
?>

hvor include.php:
<?php
$server = 'localhost';
$username = '';
$password = '';
$database = '';
$db = mysql_connect($server, $username, $password) or die(mysql_error("Cannot connect to database"));
?>

Den melder fejl:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/kappels.net/kappels.net/httpd.www/super6/kamp/add.php on line 225

add.php er en side hvor tildelte brugere kan opdatere db mht spilleroplysniger.

Jeg har den øverste stykke kode i bunden af add.php, hvis du skal bruge add.php så sig til.

linie 225 er: while ($raekke = mysql_fetch_array($resultat))

/kappel
Avatar billede googolplex Novice
10. marts 2004 - 21:31 #6
Du mangler:

mysql_select_db($database);
Avatar billede kappel Nybegynder
10. marts 2004 - 21:40 #7
Den begynder at sende til alle fra min dropdown boks, den skriver;
mail er sendt til MIKKEL .... (2 sek. efter)
Mail er sendt til MADS ... (2 sek. efter)
osv.

her er add.php (i en forenklet udgave, jeg har fjernet en <form> hvori der er inkluderet en tabel, det er ikke til at få overblik over og det væsensligste er vel også <? koden ?> i starten):

<?php
    require('tjeklogin.php');
?>
<html>
<head>
<title>Opdater spillerdata</title>
</head>
<body>

<div align="center">
<h1 style=" color: 33aacc;"><php echo $_GET['spiller'];?></h1>
<?php
if($_GET['status'] == 'done') echo"Databasen er opdateret for spilleren: <h2><b>{$_GET['spiller']}</b></h2>";
?>

<?php
include('include.php');
$res = mysql_query("select * from spillere where navn='".$_GET['spiller']."'");
$row = mysql_fetch_assoc($res);
$out = "<table><tr>";
        $out .= "<th>Spiller</th><th>kampe_dbu</th><th>maal_dbu</th><th>kampe_friendly</th><th>maal_friendly</th><th>gule</th><th>roede</th><th>stemmer</th><th>kampensspiller</th><th>ol</th></tr><tr>";
        $out .= "<td>".$row['navn']."</td><td>".$row['kampe_dbu']."</td><td>".$row['maal_dbu']."</td><td>".$row['kampe_friendly']."</td><td>".$row['maal_friendly']."</td><td>".$row['gule']."</td><td>".$row['roede']."</td><td>".$row['stemmer']."</td><td>".$row['kampensspiller']."</td><td>".$row['ol']."</td>";
        $out .= "</tr></table>";
        echo $out;
?>
</div>
<br>
<div align="left"><b>Status:</b> <?php echo $_SESSION['Status']; ?><br />
<div class="overskrift">
Opdater data for seneste kamp</div>
</div><br />
<br>

<?php

require 'include.php'; // Forbindelse til database
$res = mysql_query("select navn from spillere");
$opt = "<select name='navn' size='1'>";
while ($row = mysql_fetch_row($res)) {
    $opt .= "<option value='".$row[0]."'>".$row[0]."</option>";
}
$opt .= "</select>";
?>


</p>



<h4>Udsend mail til alle spillere:</h4>
<?
include('include.php');
mysql_select_db($database);
$sql ='SELECT * FROM spillere';
$resultat = mysql_query($sql);
while ($raekke = mysql_fetch_array($resultat))
{
    mail($raekke['email'], 'Emne', 'Besked');
    echo 'Der er sendt en mail til <b>' . $raekke['navn'] . '</b><br />';
}
mysql_close();
?>
</body>
</html>
Avatar billede googolplex Novice
11. marts 2004 - 00:56 #8
'Den begynder at sende til alle fra min dropdown boks, den skriver;
mail er sendt til MIKKEL .... (2 sek. efter)
Mail er sendt til MADS ... (2 sek. efter)
osv.'

Jeg troede det var det du ville have den til ?

Jeg er ikke sikker på, hvad du mener, sender den ikke mail ud til hele listen nu ?
Avatar billede kappel Nybegynder
11. marts 2004 - 09:54 #9
jo en af gangen, men jeg får jo ingen mulighed for at skrive noget, mailen der sendes er bare tom.
Avatar billede googolplex Novice
11. marts 2004 - 11:48 #10
Jeg er slet ikke med på hvad det er du vil ?!

De mails du udsender, står der ikke 'Emne' som emne og 'Besked' i mailen ?
Avatar billede kappel Nybegynder
11. marts 2004 - 11:53 #11
undskyld hvis jeg forvirrer dig.

Jo, der står emne og besked, men jeg skal da kunne skrive en besked til dem!
Avatar billede googolplex Novice
11. marts 2004 - 11:58 #12
Ok, men så skal du bare skifte 'Emne' og 'Besked' ud :-)

evt. således:

<h4>Udsend mail til alle spillere:</h4>
<?
include('include.php');
mysql_select_db($database);
$emne = 'Dit emne';
$besked = 'Din besked';
$sql ='SELECT * FROM spillere';
$resultat = mysql_query($sql);
while ($raekke = mysql_fetch_array($resultat))
{
    mail($raekke['email'], $emne, $besked);
    echo 'Der er sendt en mail til <b>' . $raekke['navn'] . '</b><br />';
}
mysql_close();
?>
Avatar billede kappel Nybegynder
11. marts 2004 - 12:10 #13
hvordan skal formen så se ud?
den sender jo stadig til alle, der skal være en send knap
Avatar billede kappel Nybegynder
11. marts 2004 - 12:38 #14
det er påtænkt at være et nyhedsbrev
Avatar billede googolplex Novice
11. marts 2004 - 12:39 #15
Ville du ikke sende til alle ? Det er da det dit spørgsmål går på ?
Avatar billede kappel Nybegynder
11. marts 2004 - 12:45 #16
he, jeg prøver lige at forklare forfra, det er nemlig slet ikke så indviklet

Jeg tænkte at nu hvor jeg har email adresserne til alle spillere er der ingen grund til at de skal tilmelde sig et nyhedsbrev, da jeg bare kan sende en mail ud til alle spillere.

Dvs.
1. en boks hvor jeg skriver emne
2. en boks hvor jeg skriver en besked
3. submit knap der gør at den sender 'emne' og 'besked' til alle email from spillere

så vi er tær på, jeg mangler bare 1 og 2.

Er du med nu?
Avatar billede googolplex Novice
11. marts 2004 - 14:54 #17
Ja, kigger lige på det senere :)
Avatar billede kappel Nybegynder
12. marts 2004 - 23:13 #18
har du fået kigget på det?
Avatar billede googolplex Novice
12. marts 2004 - 23:20 #19
Nej desværre, kigger på det hurtigts muligt, har lidt travlt sorry :(
Avatar billede googolplex Novice
12. marts 2004 - 23:20 #20
Ok, kigger på det i aften, det ser simpelt ud.
Avatar billede kappel Nybegynder
12. marts 2004 - 23:35 #21
super
Avatar billede googolplex Novice
13. marts 2004 - 00:52 #22
<html>
<head>
<title>Mailingliste Formular</title>
</head>
<body>

<?php

if (isset($_POST['send']))
{
    $besked = $_POST['besked'];
    $emne = $_POST['emne'];
    include('include.php');
    mysql_select_db($database);
    $sql ='SELECT * FROM spillere';
    $resultat = mysql_query($sql);
    while ($raekke = mysql_fetch_array($resultat))
    {
        mail($raekke['email'], $emne, $besked);
    }
    mysql_close();
    echo 'Der er sendt en mail til listen';
}
else
{

?>

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
Emne:<br />
<input type="text" name="emne" /><br />
Besked:<br />
<textarea name="besked" rows="5" cols="30"></textarea><br />
<input type="submit" value="Send Mail" name="send" />
<input type="reset" name="Nulstil formular" />
</form>

<?php
}
?>

</body>
</html>
Avatar billede kappel Nybegynder
13. marts 2004 - 10:32 #23
Det virker, alletiders.

Kan man lave en test funktion så den der skriver meddelsen kan sige:
"send en test" og så kommer der boks hvor man kan skrive den email adresse som man sidder ved?

Håber du forstår

Mvh Kappel
Avatar billede googolplex Novice
13. marts 2004 - 11:29 #24
Dette er utestet. Hvis du indtaster en test e-mail sendes beskeden dertil, ellers til listen. Formen er konstant synlig for ikke at slette det du indtaster.

<html>
<head>
<title>Mailingliste Formular</title>
</head>
<body>

<?php

if (isset($_POST['send']))
{
    $besked = $_POST['besked'];
    $emne = $_POST['emne'];
    $testemail = $_POST['testemail'];
    if (isset($testemail) && '' != $testemail)
    {
        mail($testemail, $emne, $besked);
        echo '<p>Der er sendt en e-mail til <b>test</b> adressen</p>';
    }
    else
    {
        include('include.php');
        mysql_select_db($database);
        $sql ='SELECT * FROM spillere';
        $resultat = mysql_query($sql);
        while ($raekke = mysql_fetch_array($resultat))
        {
            mail($raekke['email'], $emne, $besked);
        }
        mysql_close();
        echo '<p>Der er sendt en e-mail til <b>hele</b> listen</p>';
    }
}

?>

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
Testemail:<br >
<input type="text" name="testemail" /><br />
Emne:<br />
<input type="text" name="emne" value="<?php $_POST['emne']; ?>" /><br />
Besked:<br />
<textarea name="besked" rows="5" cols="30"><?php $_POST['besked']; ?></textarea><br />
<input type="submit" value="Send Mail" name="send" />
<input type="reset" name="Nulstil formular" />
</form>
</body>
</html>
Avatar billede kappel Nybegynder
14. marts 2004 - 14:54 #25
Jeg tror det virker, jeg har testet det og mener det virker :-)

mange tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester