25. april 2007 - 15:15Der er
13 kommentarer og 1 løsning
Nyhedsbrev query problem.
Hej Eksperter.
Jeg har et nyhedsbrev system, som jeg ikke helt kan få til at fungere, jeg har 7 forskellige kategorier som man kan sende nyhedsbrevet til, hvor folk så krydser af hvad de kan lide.
Problemet er så med query at jeg ikke ved hvordan jeg skal få den til at sende til dem man krydser af, jeg har prøvet sådan her.
$query ="SELECT * FROM nyhedsbrev where $send_til1='ja' OR $send_til2='ja' OR $send_til3='ja' OR $send_til4='ja' OR $send_til5='ja' OR $send_til6='ja' OR $send_til7='ja' GROUP by email";
Men det giver eks dette resultat. SELECT * FROM nyhedsbrev where privat='ja' OR virksomhed='ja' OR ='ja' OR grafik='ja' OR ='ja' OR ='ja' OR ='ja' GROUP by email
Her er mit script som sender.
elseif (($send_til1) || ($send_til2) || ($send_til3) || ($send_til4) || ($send_til5) || ($send_til6) || ($send_til7)) { $query ="SELECT * FROM nyhedsbrev where $send_til1='ja' OR $send_til2='ja' OR $send_til3='ja' OR $send_til4='ja' OR $send_til5='ja' OR $send_til6='ja' OR $send_til7='ja' GROUP by email"; print ("$query"); $result = mysql_db_query ($database, $query); while($row = mysql_fetch_array($result)){ $id = $row[id]; $email = $row[email]; $navn = $row[navn]; $kat_hent = $row[kat]; $html_start = "<HTML><HEAD><TITLE></TITLE><META http-equiv=Content-Type content=\"html ; charset=iso-8859-1\"></HEAD>"; mail("$email","Nyhedsbrev $hentdato"," $html_start $css $top <font size=4>Galleri Brænderigården nyhedsbrev $hentdato</font><br><br> Kære $navn<br> $indhold $bottom </font></html>","From: $fra_title<$mail_fra>\nContent-type:text/html"); } $mysql_query = "UPDATE nyhedsbrev_indhold SET indhold='$indhold' where kat='$katid'"; mysql_query("$mysql_query"); }
Og her er min form.
<form NAME="forside" ACTION="send.php?katid=<?echo "$kat";?>" METHOD="POST"> <br><br><FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="2">Send kun til mig:<input type="checkbox" name="test_send" value="1" checked="1"> <FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1"><br><b>Fjern denne for at sende til alle på listen.</b></FONT><br><br> <b>Send til:</b> Private:<input type="checkbox" name="send_til1" value="privat"<?if ($kat == "privat") {print ("checked");}?>> Firmaer:<input type="checkbox" name="send_til2" value="virksomhed"<?if ($kat == "virksomhed") {print ("checked");}?>> Maleri:<input type="checkbox" name="send_til3" value="maleri" <?if ($kat == "maleri") {print ("checked");}?>> Grafik:<input type="checkbox" name="send_til4" value="grafik" <?if ($kat == "grafik") {print ("checked");}?>> Skulptur:<input type="checkbox" name="send_til5" value="skulptur" <?if ($kat == "skulptur") {print ("checked");}?>> Museum:<input type="checkbox" name="send_til6" value="museum" <?if ($kat == "museum") {print ("checked");}?>> Kunstforening:<input type="checkbox" name="send_til7" value="kunstforening"<?if ($kat == "kunstforening") {print ("checked");}?>> <input type="hidden" name="send_til"> <FONT FACE="Verdana, Arial, Helvetica, sans-serif" SIZE="1"><br><b>Hvis ingen vælges sendes til alle på listen med mindre at <i> Send kun til mig </i> er valgt</b></FONT><br><br> </FONT> <p><input type="submit" value="Send Nyhedsbrev"></p> </form>
OR betyder jo eller, og virker på den måde, at hvis: a = b eller c = d eller e = e, så vil det i melde TRUE eller sandt. Bliver der genereret en email til hver kategori eller skal emailen bygges op sådan, at hvis brugeren har valgt ja i alle emner, så kommer emailen til at indeholder alle 7 emner?
det skal forståes på denne måde, jeg har 7 kategorier
`id` int(11) NOT NULL auto_increment, `firma` text NOT NULL, `navn` text NOT NULL, `adresse1` text NOT NULL, `adresse2` text NOT NULL, `postby` text NOT NULL, `email` text NOT NULL, `maleri` text NOT NULL, `grafik` text NOT NULL, `skulptur` text NOT NULL, `virksomhed` text NOT NULL, `privat` text NOT NULL, `kunstforening` text NOT NULL, `museum` text NOT NULL, `admin` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=321 ;
Admin skriver så et nyhedsbrev, og vælger hvilke personer / firmaer som skal modtage nyhedsbrevet (altså de 7 kategorier) så den sender i realiteten kun et nyhedsbrev flere gange. Group by email er for at folk ikke modtager 2 mails hvis de har registeret sig på 2 kategorier.
Håber at du forstår ellers skal jeg prøve og uddybe det.
fik vist den forkerte sql fil. Den rigtige kommer her.
CREATE TABLE `nyhedsbrev_indhold` ( `id` int(11) NOT NULL auto_increment, `indhold` text NOT NULL, `kat` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;
i kat feltet står der.
privat virksomhed maleri grafik skulptur museum kunstforening
Den gemmer dem så i indhold i de 7 forskellige kategorier, sådan at man kan hente dem frem igen og rette i dem hvis det skulle blive nødvendigt, altså inden man har sendt dem :-)
Den første sql så da rigtig ud. Den sidste har jo ingen email adresse? Hvis det er den første der er rigtig, så har du vel kun folks emails en gang i tabellen?
Hvis du skyder denne SQL af i phpmyadmin, får du så ikke kun emails en gang:
SELECT * FROM nyhedsbrev where privat='ja' OR virksomhed='ja' OR museum='ja' OR grafik='ja' OR kunstforening='ja' OR skulptur='ja' OR maleri='ja' GROUP by email
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.