Avatar billede kane Juniormester
05. december 2016 - 10:29 Der er 11 kommentarer

loop i php

Hej
Jeg er ved at lave en "send en mail med indhold fra en database (mysql)

Den virker, men ikke rigtigt, mit problem er at hvis der er flere rækker til den person der skal have mailen, sender den 1 mail pr række.
Jeg skal have alle række i samme mail
Hvordan får jeg et loop in i min fecth?

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   
          $sql = 'min select (den er lang)';
          $q = $pdo->prepare($sql);
        $q->bindValue(':username', $username);
        $q->execute();   
        $q->setFetchMode(PDO::FETCH_ASSOC);         
                  ?>
                  <?php while ($r = $q->fetch()): ?>

$modtager = ''.$r['email'].''; //Hvem skal have mailen?           
$emne = 'Du har følgende opgaver på xxxxx '; //Emnefeltet
$besked = ''.$B_id.' '.$sal.' '.$side.''.$r['job_art'].' ';
$headers  = "MIME-Version: 0' . \r\n";
$headers .= "Content-Type: text/plain; charset=utf-8\r\n";
$header = "from:xxx@xxx.dk";

mail($modtager, $emne, $besked, $header); //Send!!
?>
  <?php endwhile; ?>
Avatar billede expnet Seniormester
05. december 2016 - 11:10 #1
Vi er nød til at se din sql dump, for hvis du loop'er din afsender bliver det et problem hvis der flere linjer, man hvis det kun er tekst (besked) du vil loop så er det noget i retning af det her

så skal hente dine afsender på anden måde

<?php
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = 'min select (den er lang)';
$q = $pdo->prepare($sql);
$q->bindValue(':username', $username);
$q->execute();
$q->setFetchMode(PDO::FETCH_ASSOC);
$besked = '';
while ($r = $q->fetch()):
    $besked .= '' . $B_id . ' ' . $sal . ' ' . $side . '' . $r['job_art'] . ' ';
endwhile;

    $modtager = '' . $r['email'] . ''; //Hvem skal have mailen?           
    $emne = 'Du har følgende opgaver på xxxxx '; //Emnefeltet
    $headers = "MIME-Version: 0' . \r\n";
    $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
    $header = "from:xxx@xxx.dk";
    mail($modtager, $emne, $besked, $header); //Send!!
?>
Avatar billede kane Juniormester
05. december 2016 - 11:15 #2
det skulle jeg ikke gøre, jeg laver en inner join i min select, mailen ligger kun 1 sted

$sql = 'SELECT opgaver.O_id, opgaver.K_id, opgaver.B_id, opgaver.nummer, opgaver.sal,opgaver.job_art, opgaver.side, opgaver.username, users.username, users.email from opgaver JOIN users on opgaver.username = users.username where users.username = :username';
Avatar billede expnet Seniormester
05. december 2016 - 11:32 #3
tjek lige som den ikke printer email med ud flere gange

while ($r = $q->fetch()):
  print_r($r);
endwhile;
Avatar billede kane Juniormester
05. december 2016 - 11:46 #4
det gjorde den sku

Array ( [O_id] => 16 [K_id] => 9 [B_id] => 1 [nummer] => 1 [sal] => 7 [job_art] => test [side] => 1 [username] => admin [email] => xx@xxx.dk ) Array ( [O_id] => 17 [K_id] => 676 [B_id] => 2 [nummer] => 33 [sal] => 4 [job_art] => test [side] => 1 [username] => admin [email] => xx@xxx.dk )
Avatar billede expnet Seniormester
05. december 2016 - 16:26 #5
[UD TESTET]

prøv det her

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql1 = 'DIN USER SQL_STRING';
$q1 = $pdo->prepare($sql1);
$q1->bindValue(':username', $username);
$q1->execute();
$q1->setFetchMode(PDO::FETCH_ASSOC);
$user = $q1->fetch();

$sql2 = 'DIN OPGAVE SQL_STRING';
$q2 = $pdo->prepare($sql2);
$q2->bindValue(':username', $user['username']);
$q2->execute();
$q2->setFetchMode(PDO::FETCH_ASSOC);
       
$besked = '';
while ($task = $q2->fetch()):
    $besked .= '' . $task['B_id'] . ' ' . $task['sal'] . ' ' . $task['side'] . '' . $task['job_art'] . ' ';
endwhile;

    $modtager = '' . $user['email'] . ''; //Hvem skal have mailen?           
    $emne = 'Du har følgende opgaver på xxxxx '; //Emnefeltet
    $headers = "MIME-Version: 0' . \r\n";
    $headers .= "Content-Type: text/plain; charset=utf-8\r\n";
    $header = "from: xxx@xxx.dk";
    mail($modtager, $emne, $besked, $header); //Send!!
Avatar billede kane Juniormester
05. december 2016 - 17:44 #6
den giver ingen fejl, men den sender ikke noget.
Avatar billede kane Juniormester
05. december 2016 - 18:16 #7
så kom der sku noget, men øv nu virker mine values ikke mere.

Da jeg har flere bygninger, etager, sider og meget andet, bruger jeg et tal, bygning 1, 2, 3 , 4 og skriver dem ud på siden, hvor de skal bruges.

Nu virker de ikke i mailen

if ($r["B_id"] == '1'){   
    $B_id =  'HV';
    }
    else if ($r["B_id"] == '2'){   
    $B_id =  'ÅP-2';
    }
    else if ($r["B_id"] == '3'){   
    $B_id =  'ÅP-3';
    }
    else if ($r["B_id"] == '4'){   
    $B_id =  'ÅP-4';

Har prøvet med  if ($task["B_id"] == '1'){   
    $B_id =  'HV';
    }
men det virker ikke
Avatar billede expnet Seniormester
05. december 2016 - 18:23 #8
$user['felt her']
Avatar billede kane Juniormester
05. december 2016 - 18:27 #9
hmmm den forstår jeg ikke?

if ($user["B_id"] == '1'){   
    $B_id =  'HV'; ?
Avatar billede expnet Seniormester
05. december 2016 - 19:15 #10
Virker det ikke?
Avatar billede kane Juniormester
05. december 2016 - 19:37 #11
nej, den skriver

1 7 1test 2 4 1test

Der skulle stå  HV 7 sal Th test, ÅP-2 4sal th test
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

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