Avatar billede Jeannine Nybegynder
10. februar 2009 - 13:36 Der er 20 kommentarer og
1 løsning

PHP mailto klik til alle e-mail fra databasen. Mailto med loop...

Hej,

Jeg er ved at lave en mulighed for at kunne maile med et klik til alle medlemmer i en database. Dvs. at mailto funktionen kobles sammen med en loop. Dog vil den bare ikke virke... Jeg har prøvet en hel del forskelligt, men nu er jeg løbet mod en mur.

Problemet er, at loopen sætter kommaet, der skal adskille adresserne foran den første e-mail adresse og det gør at klik funktionen ikke virker. ØV :cry:

Har nogen prøvet det og kan hjælpe mig videre?

mysql_select_db($database_dbh, $dbh);
$query_mail = "SELECT DISTINCT email FROM medlemmer WHERE email != '0'";
$mail = mysql_query($query_mail, $dbh) or die(mysql_error());
$row_mail = mysql_fetch_assoc($mail);
$totalRows_mail = mysql_num_rows($mail);

<a href="mailto:<?php do { ?><?php echo $row_mail['email'] . ', '; ?><?php } while ($row_mail = mysql_fetch_assoc($mail)); ?>"><img src="ikoner/ikoner_mail.jpg" alt="Klik for at sende mail til alle.." width="31" height="25"></a>

Håber nogen derude kan og vil hjælpe mig videre.. ;-)
Avatar billede hkb-x Nybegynder
10. februar 2009 - 13:47 #1
sæt din while før loopet: while () {}
Avatar billede bitkid Nybegynder
10. februar 2009 - 13:48 #2
Du kan bruge implode.

$emails = array();
while ($row_mail = mysql_fetch_assoc($mail) {
    $emails[] = $row_mail['email'];
}
<a href="mailto:<? implode(',',$emails); ?>">

Så vil der ikke komme , foran eller bagefter email adresserne.
Avatar billede hkb-x Nybegynder
10. februar 2009 - 13:48 #3
ellers læs dem alle ind i et array og brug implode(',' $email_array)
dobbelt arbejde men pænere kode.
Avatar billede bitkid Nybegynder
10. februar 2009 - 13:49 #4
der mangler en ) i while-sætningen lige før {

Ellers skulle den være der :-)
Avatar billede Jeannine Nybegynder
10. februar 2009 - 13:57 #5
Hejsa, tak for jeres hurtige hjælp!

Dog desværre, det vil den ikke, der kommer ingen e-mail adresser frem. Den åbner mailprogrammet men "to:" feltet er tomt..

Har jeg glemt noget?

<?php $emails = array(); while ($row_mail = mysql_fetch_assoc($mail)) {$emails[] = $row_mail['email'];}?>
<a href="mailto:<?php implode(',',$emails); ?>"><img src="ikoner/ikoner_mail.jpg" alt="Klik for at sende mail til alle.." width="31" height="25"></a>
Avatar billede bitkid Nybegynder
10. februar 2009 - 14:05 #6
hvad bliver resultatet? Altså hvad står der i din html kode?
Avatar billede Jeannine Nybegynder
10. februar 2009 - 14:07 #7
Ingen adresser.. det ser ud til at arrayet er tomt? <a href="mailto:"><img src="ikoner/ikoner_mail.jpg" alt="Klik for at sende mail til alle.."
Avatar billede bitkid Nybegynder
10. februar 2009 - 14:16 #8
prøv at smide en var_dump($emails); efter din while er slut. Altså efter } og se om der overhovedet er noget i arrayet.
Avatar billede Jeannine Nybegynder
10. februar 2009 - 15:25 #9
jeps, det var da :o)
Avatar billede bitkid Nybegynder
10. februar 2009 - 19:09 #10
Hvad indeholder din var_dump så? Du skal naturligvis ikke udskrive email adresserne her :-)

Det skulle gerne se nogenlunde sådan her ud:

array(3) {
  [0]=>
  string(14) "email1@mail.dk"
  [1]=>
  string(14) "email2@mail.dk"
  [2]=>
  string(14) "email3@mail.dk"
}
Avatar billede Jeannine Nybegynder
10. februar 2009 - 19:48 #11
Jeps.. det ser sådan ud som du skriver:

array(174) { [0]=> string(17) "mail@email.dk" [1]=> string(20) "mail@email.dk" osv. og slutter med }
Avatar billede bitkid Nybegynder
10. februar 2009 - 20:01 #12
Måske mangler der en php efter <? lige før implode.

Nogle servere er sat op til at der skal stå <?php for andre er <? nok.
Avatar billede Jeannine Nybegynder
10. februar 2009 - 20:08 #13
Desværre, det har den faktisk..

<?php $emails = array(); while ($row_mail = mysql_fetch_assoc($mail)) {$emails[] = $row_mail['email'];}var_dump($emails);?>
<a href="mailto:<?php implode(',',$emails); ?>"><img src="ikoner/ikoner_mail.jpg" alt="Klik for at sende mail til alle.." width="31" height="25"></a>

Kan det være, at den mangler et eller andet echo kommando, der fortæller det til html delen?
Avatar billede Jeannine Nybegynder
11. februar 2009 - 08:17 #14
Hmmmm, nu fik jeg den til at have alle adresser inde i mailto funktionen.. :o)) Den kunne bare skrives i en variabel, som man senere sætter en echo kommando på.

MEN den virker alligevel ikke, når man klikker på linket, så sker der ikke en dyt..

koden ser sådan ud:
<?php $emails = array(); while ($row_mail = mysql_fetch_assoc($mail)) {$emails[] = $row_mail['email'];}?><?php $alleadresser = implode(', ',$emails); ?> <a href="mailto: <?php echo $alleadresser; ?>"><img src="ikoner/ikoner_mail.jpg" alt="Klik for at sende mail til alle.." width="31" height="25"></a>

Kildekoden ser sådan ud:
<a href="mailto: mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, mail@email.dk, "/ ><img src="ikoner/ikoner_mail.jpg" alt="Klik for at sende mail til alle.." width="31" height="25"></a>
</td>
Avatar billede bitkid Nybegynder
11. februar 2009 - 10:20 #15
ÅHHH... Ja, selvfølgelig skulle der være en echo... hvordan kunne jeg overse det?

Jeg forstår ikke hvordan din html kommer til at se sådan ud. Der burde ikke være et , efter sidste adresse og der burde slet ikke være en / mellem " og >. Jeg må give fortabt på den del.

Du kan sagtens lægge implode tilbage i a href="" delen blot med en echo før den.

<a href="mailto:<?php echo implode(',',$emails); ?>">...
Avatar billede Jeannine Nybegynder
11. februar 2009 - 10:32 #16
Jo, undskyld.. selvfølgelig er der ingen , og / til sidst, det var en tastefejl, da jeg fjernede de rigtige mail adresser ;o)

Men den vil stadigvæk ikke åbne mailprogrammet og der sker ingen ting, når man klikker på linket.. snøft.
Avatar billede bitkid Nybegynder
11. februar 2009 - 10:52 #17
Det burde virke hvis din html ser sådan ud:

<a href="mailto:mail@mail.dk,mail1@mail.dk,mail2@mail.dk">tryk her</a>

jeg er ved at løbe tør for idéer. Åbner dit mailprogram normalt hvis du klikker på en email adresse? (ja, jeg ved det er en dumt spøgsmål, sorry).
Avatar billede Jeannine Nybegynder
11. februar 2009 - 11:02 #18
Næ, det er bestemt ingen dumt spørgsmål. Men ja, det åbner ellers fint. Det åbner endda, når jeg kun har en space i istedet for en mail eller webadresse.
Avatar billede bitkid Nybegynder
11. februar 2009 - 12:49 #19
Der må være et eller andet i dine email adresser der får browseren til at bøvse over det.
Avatar billede Jeannine Nybegynder
11. februar 2009 - 19:27 #20
Jo, det er godt muligt, det kan jeg bare desværre ikke teste. Kan det måske være at a href mailto: kun har et bestemt antal mails, som det kan håndtere som html funktion?

Men jeg synes alligevel at du skulle få dine points, for du har hjulpet mig et godt stykke videre. Det kræver bare at du klikker på svar næste gang du skriver.. ;o)
Avatar billede bitkid Nybegynder
12. februar 2009 - 10:26 #21
Løsningen blev:

$emails = array();
while ($row_mail = mysql_fetch_assoc($mail) {
    $emails[] = $row_mail['email'];
}
<a href="mailto:<? echo implode(',',$emails); ?>">

Håber du finder problemet i lige din kode.
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
Kurser inden for grundlæggende programmering

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