[PHP] While Loop .... unset probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een kort probleem, dat waarschijnlijk erg voor de hand ligt maar goed.
Ik heb een mailing list en onderaan de email die ik verstuur komt een "unsubscript" link.
Het probleem is alleen dat elk volgende email adres dat uit de database wordt gehaald de vorige regel krijg plus de regel die specifiek is voor het emaildres waar de mail naartoe moet.

Ik probeer dus een bericht uit een HTML form te halen ($bericht) en dan een extra regel ($bericht2) toe te voegen per emailadres.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php 
if ($_POST['dolist'] == "yes")
    {
    $db = mysql_pconnect("127.0.0.1","xxxxxxx","xxxxxx") or die ("Error while connection to Database");
    $database = databasename;
    mysql_select_db ("$database");
    $query = (" SELECT * FROM test");
    $results = mysql_query ($query);
    while ($logincheck=mysql_fetch_array($results)) 
            {
            if ($logincheck[MailingList] == "y")
                {
                $message2 .= "\n\nTo Unsubscribe from the mailing-list click the following URL or copy it to you're browser\n";
                $message2 .= "http://www.lemonstudios.net/cgi-bin/unsubscribe.php?Emailadres=$logincheck[Emailadres]&mailing=n\n";
                $message = $message . $message2;
                $from = "sender";
                $sender = "mail@lemonstudios.nl";
                $sendmail = mail($logincheck[Emailadres], $subject, $message, "From: <$from>\n". "Reply-To: <$sender>\n");
                echo "email send to $logincheck[Emailadres]";
                unset ($message2);
                }
            }
    }
?>

<html>
<head>
<title>Welcome to LemonStudios.net</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="../style.css" type="text/css">
</head>

<body bgcolor="#FFFFFF" background="../images/background/lemon_13.jpg" text="#000000">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr> 
    <td width="150" align="left" valign="top" background="../images/background/table1.jpg"> 
      <h1>Administration Menu:</h1>
      <p>&nbsp;</p>
    </td>
    <td align="left" valign="top"> 
      <h2>Mailinglist.</h2>
      <form name="form1" method="post" action="mailinglist.php">
        <p>
          <input name="subject" type="text" id="subject" size="80">
        </p>
        <p>
          <textarea name="message" cols="80" rows="10" id="message"></textarea>
        </p>
        <p>
          <input name="dolist" type="hidden" id="dolist" value="yes">
        </p>
        <p>
          <input type="submit" name="Submit" value="Submit">
        </p>
      </form>
      <p>&nbsp;</p>
      <p>&nbsp;</p>
      </td>
    <td width="60">&nbsp;</td>
  </tr>
</table>
</body>
</html>

[ Voor 21% gewijzigd door Verwijderd op 02-05-2003 13:07 ]


Acties:
  • 0 Henk 'm!

Verwijderd

wat gebeurt er als je de unset weglaat en de eerste $message2 .= vervangt door $message2 = (dus opnieuw waarde toekennen)?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Yep, ook geprobeerd, werkt helaas niet. Dat is wat ik zo raar vond. Ik had dus in eerste instantie dit geprobeerd om weer een lege variabele te maken.

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

Volgens mij is het sowieso handig als je drm's tiplist eens doorleest. ;)
Met name punt 3 en punt 4

Sundown Circus


Acties:
  • 0 Henk 'm!

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 07-11-2023

kvdveer

Z.O.Z.

Bij iedere while maak je $message langer - dat kan niet goed zijn... bedenk goed wat de beginwaarde van je variabelen zijn aan het begin van de loop.

De volgende code zou 't moeten doen.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    while ($logincheck=mysql_fetch_array($results))
    {
        if ($logincheck[MailingList] == "y")
        {
            $message2 = "\n\nTo Unsubscribe from the mailing-list [...]\n";
            $message2 .= "http://www.lemonstudios.net/cgi-[...]\n";
            // $message = $message . $message2;
            $from = "sender";
            $sender = "mail@lemonstudios.nl";
            $sendmail = mail(
                $logincheck['Emailadres'], 
                $subject, 
                $message . $message2,  // message met extra notitie
                "From: <$from>\n". "Reply-To: <$sender>\n");
            echo "email send to $logincheck[Emailadres]";
            unset ($message2);
        }
    }


Dit soort problemen kun je in de toekomst trouwens voorkomen door met error_reporting(E_ALL) te devven. Ik zou het niet adviseren voor release spul, maar om te devven is het zaligmakend.

edit:
Layoutverneuking geminimaliseerd

[ Voor 46% gewijzigd door kvdveer op 02-05-2003 13:25 ]

Localhost, sweet localhost


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanx kvdVeer. Het probleem is idd opgelost.
Alleen zou hier error_reporting niet werken volgens mij, want de code geeft geen error, maar de opmaak was gewoon niet goed.
Ik begrijp alleen nog steeds niet waarom de unset niet zou werken als ik )$bericht = $bericht . $bericht2) voor de mail functie bepaal. Maar goed, ik ga me er weer eens wat verder in verdiepen.

Acties:
  • 0 Henk 'm!

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 07-11-2023

kvdveer

Z.O.Z.

Verwijderd schreef op 02 May 2003 @ 13:31:
Thanx kvdVeer. Het probleem is idd opgelost.
Alleen zou hier error_reporting niet werken volgens mij, want de code geeft geen error, maar de opmaak was gewoon niet goed.
Eerst proberen - dan zeggen dat het niet zou werken.
Je code zou minimaal drie errors geven op error_reporting(E_ALL), precies op de plaatsen waar het fout gaat...
Verwijderd schreef op 02 May 2003 @ 13:31:Ik begrijp alleen nog steeds niet waarom de unset niet zou werken als ik )$bericht = $bericht . $bericht2) voor de mail functie bepaal. Maar goed, ik ga me er weer eens wat verder in verdiepen.
Die unset deed z'n werk... $bericht wordt steeds langer, $bericht2 is netjes leeg - precies zoals je vroeg.

Localhost, sweet localhost


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Okey, ik zal het proberen, maar een ding snap ik dan nog steeds niet.
$bericht blijf het orginele bericht. Dus in de tweede email die verstuurt wordt komt het $bericht niet 2x voor, alleen $bericht2 komt telkens vaker voor.

Ik ga error reporting aan zetten en de script nog wel een keer doornemen.
Ik bedank U voor Uw tijd :)

Acties:
  • 0 Henk 'm!

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 07-11-2023

kvdveer

Z.O.Z.

Verwijderd schreef op 02 May 2003 @ 13:41:
Okey, ik zal het proberen, maar een ding snap ik dan nog steeds niet.
$bericht blijf het orginele bericht. Dus in de tweede email die verstuurt wordt komt het $bericht niet 2x voor, alleen $bericht2 komt telkens vaker voor.

Ik ga error reporting aan zetten en de script nog wel een keer doornemen.
Ik bedank U voor Uw tijd :)
Dat kwam omdat je steeds $bericht2 aan $bericht toevoegde, maar het er niet meer afhaalde. $bericht bleef niet ongewijzigd - zoals je aannam, het werd steeds langer.

En die tijd? Ach - ik moet toch iets doen als ik niet wil studeren... :/ (yep - discipline probleempje)

Localhost, sweet localhost


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nu ik hem nog eens het doorgenomen ben ik er achter hoe simpel het was, en idd de waarde van $bericht blijft natuurlijk gelijk + iedere keer dat hij door de WHILE gaat komt er weer een beetje bij. |:( 8)7 }:O

Weer wat geleerd.
Studeer ze :9
Pagina: 1