04. november 2010 - 11:38Der er
15 kommentarer og 2 løsninger
send mail med MySQL data i message...
Jeg har lavet en lille print side, som viser de nuværende bestillinger af sandwich. Disse bestillinger gør det nemt for os at få en bestilling igennem hos Nadias som er vores Sandwich leverandør... Nu ligger landet så sådan at bestillings listen bliver længere og længere i stil med at det bliver mere og mere kendt.
Så vi fik sparket en aftale på benene som gjorde de fik sat en mail addy til rådighed som vi kunne sende vores bestillinger på, da vi er blevet "stor kunde" hos dem og kan få den slags frynsegoder :P
Koden nedenunder er vores print.php side som viser bestillingerne, og har mail koden til hvordan det skal sendes til Nadias...
Men skidtet fungerer ikke :/ Den sender en mail, men den sender ikke inputs fra mysql med i mailen. Nogen der kan se årsagen til dette?
Koden: <?php session_start(); include 'connect.php';
$userid = $_SESSION["userid"]; $q = mysql_query("SELECT * FROM users WHERE user_id='$userid'")or die(mysql_error()); $n = mysql_num_rows($q); $res = mysql_fetch_assoc($q);
if($res["admin"] == 1) { echo 'Nadias bestilling til porthusgade 1. Bestilling lavet d. '; echo date("d/m-Y"); echo '<p />'; $q2 = mysql_query("SELECT * FROM Bestillinger ORDER BY userid2 ASC")or die(mysql_error()); while($r = mysql_fetch_assoc($q2)) { echo '<b>'.$r["userid2"].' - '.$r["Navn"].'</b>: '.$r["Brod"].' med '.$r["Fyld"].' og '.$r["Dressing"].'. Ekstra: '.$r["Ekstra"].'.<br />'; } echo "<br />Antal bestillinger lavet:<br />"; $qlist = mysql_query("SELECT brod, COUNT(Navn) FROM Bestillinger GROUP BY brod")or die(mysql_error()); while($row = mysql_fetch_array($qlist)){ echo "- <b>". $row['COUNT(Navn)'] ." ". $row['brod'] ."</b> i ordre."; echo "<br />"; } if(isset($_POST["print"])) //if "email" is filled out, send email { //send email $to = "deus83@gmail.com"; $subject = "Bestilling til Porthusgade"; $message = '<b>'.$r["userid2"].' - '.$r["Navn"].'</b>: '.$r["Brod"].' med '.$r["Fyld"].' og '.$r["Dressing"].'. Ekstra: '.$r["Ekstra"].'.<br />'; $from = "sendermail@mail.com"; mail($to,$subject,$message); echo "</ p>Mailen er sendt"; } else //hvis der ikke er sendt "print" til $_post skal den vise knappen... { echo '<form method="post" action="' . $_SERVER['php_self'] . '"> <input type="submit" value="Send mail til Nadias" name="print"> </form>'; } } else { echo 'Ingen administrative rettigheder'; } ?>
Og sådan ser mailen så ud når det er man modtager den (beskeden): <b> - </b>: med og . Ekstra: .<br />
for din orientering, jeg sidder selv og boevler med email med bestillinger, saa hvis jeg loeser denne vil det uden tvivl hjaelpe mig selv. Saa jeg gaar i gang. Jeg skal afsted om lidt, saa det varer nok et par timer. Hvis i mellemtiden andre har loesninger saa vil jeg laere af dem ogsaa.
Før jeg ændrer den ser en lille hurtig ordre jeg smed ind, sådan ud (på print siden):
Nadias bestilling til porthusgade 1. Bestilling lavet d. 04/11-2010 1 - Andersson: Chillistykke med pepperoni og rød peber og creme fraiche. Ekstra: Jalapenos. 8 - Kristoffer: Chillistykke med pepperoni og rød peber og creme fraiche. Ekstra: løg jalapenos. 22 - Heine: Grov large med kylling og bacon og karry dressing. Ekstra: -tomat. 24 - Peter D: Chillistykke med pastrami og chili dressing. Ekstra: +pesto +salt & peber. 29 - Martin Søegaard: Grov large med roastbeef og remoulade. Ekstra: Intet valgt. 41 - Jacob Klit: Chillistykke med kylling og bacon og ingen dressing. Ekstra: - dressing og tomat. 46 - Jesper Jokumsen: Chillistykke med hjemmelavet tunsalat og ingen dressing. Ekstra: Intet valgt. 52 - Thomas Pilgaard: Grov large med kylling og bacon og karry dressing. Ekstra: Intet valgt.
Antal bestillinger lavet: - 5 Chillistykke i ordre. - 3 Grov large i ordre.
Efter jeg ændrede koden til det ovenstående, ser det sådan ud: 04/11-2010 Antal bestillinger lavet: - 5 Chillistykke i ordre. - 3 Grov large i ordre
Jeg er med på hvad du mener med at det skal være i en variabel, men kan ikke lige få den vendt til en fungerende løsning...
jkn83, jeg fik det til at virke! splazz, det betyder maaske at jeg ogsaa kan goere fremskridt paa en anden traad, du ved hvilken. jkn83 og splazz, undskyld at jeg misbruger dette spoergsmaal som oevelse paa et lignende men mere kompleks problem jeg selv har.
For test lavede jeg den tabel jeg viser nedenfor og fyldte de data i du viser i $4. Saa omskrev jeg din kode som vist nedenfor. Jeg skipper test for 'admin' og, som foreslaaet i #1 bygger en variabel $message op i stedet for en synlig side.
Saa modtager jeg en email med denne tekst:
Nadias bestilling til porthusgade 1 1 - Andersson: Chili med pepperoni og creme. Ekstra: Jalapenos 8 - Kristoffer: Chili med pepperoni og creme. Ekstra: loeg 22 - Heine: Grov med kylling og karry. Ekstra: tomat 24 - Peter: Chili med pastrami og chili. Ekstra: pesto 29 - Martin: Grov med roastbeef og remoulade. Ekstra: intet 41 - Jacob: Chili med kylling og ingen. Ekstra: dressing 46 - Jesper: Chili med tunsalat og ingen. Ekstra: intet 52 - Thomas: Chili med kylling og karry. Ekstra: intet
Antal bestillinger lavet: - 6 Chili i ordre - 2 Grov i ordre
Der forenkler jeg ogsaa saasom at skippe fed skrift, men den indeholder, tror jeg, de noedvendige informationer.
Her er min kode. Skift email adressen ud med din egen og proev den saa:
<html> <head> <title>jkn83</title> </head> <body> <?php require("connect.php"); $message = ""; $message .= "Nadias bestilling til porthusgade 1 \r\n"; $q2 = mysql_query("SELECT * FROM jkn83 ORDER BY userid2 ASC")or die(mysql_error()); while($r = mysql_fetch_assoc($q2)) { $userid2 = $r['userid2']; $Navn = $r['Navn']; $Brod = $r['Brod']; $Fyld = $r['Fyld']; $Dressing = $r['Dressing']; $Ekstra = $r['Ekstra']; $message .= "$userid2 - $Navn: $Brod med $Fyld og $Dressing. Ekstra: $Ekstra \r\n"; } $message .= "\r\nAntal bestillinger lavet:\r\n"; $qlist = mysql_query("SELECT Brod, COUNT(Navn) AS antal FROM jkn83 GROUP BY brod")or die(mysql_error()); while($row = mysql_fetch_array($qlist)) { $Brod = $row['Brod']; $antal = $row['antal']; $message .= " - $antal $Brod i ordre \r\n"; } if(isset($_POST["print"])) //if "email" is filled out, send email { $to = "christian.jorgensen@skynet.be"; $subject = "Bestilling til Porthusgade 1"; mail($to,$subject,$message); echo "</ p>Mailen er sendt"; } else //hvis der ikke er sendt "print" til $_post skal den vise knappen... { echo "<form method='post' action=''>"; echo "<input type='submit' value='Send mail til Nadias' name='print'>"; echo "</form>"; } ?> </body> </html>
og her er saa tabellen med data:
CREATE TABLE jkn83(userid2 INT, Navn VARCHAR(10), Brod VARCHAR(10), Fyld VARCHAR(10), Dressing VARCHAR(10), Ekstra VARCHAR(10));
INSERT INTO jkn83 VALUES(1, 'Andersson', 'Chili', 'pepperoni', 'creme', 'Jalapenos'); INSERT INTO jkn83 VALUES(8, 'Kristoffer', 'Chili', 'pepperoni', 'creme', 'loeg'); INSERT INTO jkn83 VALUES(22, 'Heine', 'Grov', 'kylling', 'karry', 'tomat'); INSERT INTO jkn83 VALUES(24, 'Peter', 'Chili', 'pastrami', 'chili', 'pesto'); INSERT INTO jkn83 VALUES(29, 'Martin', 'Grov', 'roastbeef', 'remoulade', 'intet'); INSERT INTO jkn83 VALUES(41, 'Jacob', 'Chili', 'kylling', 'ingen', 'dressing'); INSERT INTO jkn83 VALUES(46, 'Jesper', 'Chili', 'tunsalat', 'ingen', 'intet'); INSERT INTO jkn83 VALUES(52, 'Thomas', 'Chili', 'kylling', 'karry', 'intet');
Valgte dog at undlade at lave nyt table :D rettede lidt i den til den passede mit behov og tilføjede så stadig et echo så den viser selve ordren på print.php
Siden bliver brugt som et hurtigt udprint til at lokalisere sandwich og hvem der skulle have hvad... Og eventuelle fejl i ordrene...
@splazz - Måske, sådan er vi jo så forskellige ;) Havde vi alle forstået koden fuldt ud, var der jo ikke en grund til vi sad her :P
har stadig problemer med headers (from), men det må vi tage en anden gang hvis det bliver en kritisk del :)
-> jkn83 - det var nu heller ikke ment sådan, det virkede bare som om at du satte min kodestump ind uden at rette resten og det var nok min fejl at jeg ikke fik forklaret at du skulle rette resten selv :)
men godt christian fik det lavet, så lærte han også lidt :)
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.