27. januar 2004 - 14:33
Der er
18 kommentarer og 1 løsning
vil ikke gemme i DB
Hejsa nogle der kan finde nogle fejl i dette script der gør sådan at jeg ikke kan gemme min mail <? include_once("mysql_funktioner.php"); aabn_forbindelse_og_vaelgdb(); if (!$mode) { ?> <form action="<? print $filename; ?>?mode=on" method="post"> <input type="text" name="mail" size="30"> <SELECT name="valg"><option value="Tilmeld" selected>Tilmeld!<option value="Afmeld">Afmeld</select> <br><input type="submit" value="Submit"> </form> <? } if ($mode == "on") { if ($valg == "Tilmeld") { // $mail // On E-mail er der allerede $res = mysql_query("SELECT * FROM mailliste WHERE mail = '$mail'") or die (mysql_error()); $antal = mysql_num_rows($res); if ($antal == "") { // $ip, $mail, $dato $ip = $REMOTE_ADDR; $tid = date("Y-m-d H:i:s"); mysql_query("INSERT INTO mailliste (id,ip,mail,tid) VALUES ('','$ip','$mail','$tid')") or die (mysql_error()); print "Din E-mail er blevet tilføjet"; } else { print "E-mail adressen er allerede tilføjet"; } } // End of tilmeld if ($valg == "Afmeld") { mysql_query("DELETE FROM mailliste WHERE mail = '$mail'") or die (mysql_error()); print "E-mail adresse afmeldt"; } } // End of valg. ?>
Annonceindlæg fra gavdi
27. januar 2004 - 15:17
#1
Du skal måske if ($_GET['mode'] == "on") { if ($_POST['valg'] == "Tilmeld") { osv. Prøv med testudskrifter at se hvor langt du kommer.
27. januar 2004 - 15:29
#2
Ellers skal du ændre: if ($antal == "") til if ($antal == 0) Da der vil være 0 berørte rækker i det der ingen email adresse eksisterer!
27. januar 2004 - 16:41
#3
nu har jeg prøvet det hele men det virker ikke endnu hvad kan jeg så gøre
27. januar 2004 - 16:45
#4
hmm nu skriver den godt nok "Din E-mail er blevet tilføjet" men den ligger kun tiden og id der ind
27. januar 2004 - 17:04
#5
$REMOTE_ADDR skal være: $_SERVER['REMOTE_ADDR'] $mail skal være: $_POST['mail']
27. januar 2004 - 17:16
#6
Skal $_POST['mail']være i denne mysql_query("INSERT INTO mailliste (id,ip,mail,tid) VALUES ('','$ip','$mail','$tid')") or die (mysql_error()); alsår mysql_query("INSERT INTO mailliste (id,ip,mail,tid) VALUES ('','$ip','$_POST['mail']','$tid')") or die (mysql_error());
27. januar 2004 - 17:21
#7
Du kan bare én gang lave en tildeling, så behøver du ikke ændre i dit script: $mail = $_POST['mail'] f.eks. efter: if ($_GET['mode'] == "on")
27. januar 2004 - 17:29
#8
<?php if ( !isset($_POST['mode']) ) { ?> <form action="<?php print $filename; ?>?mode=on" method="post"> <input type="text" name="mail" size="30" /> <select name="valg"> <option value="Tilmeld" selected="selected">Tilmeld!</option> <option value="Afmeld">Afmeld</option> </select> <br> <input type="submit" value="Submit" /> </form> <?php } if ($_POST['mode'] == "on") { $mail = $_POST['mail']; if ($_POST['valg'] == "Tilmeld") { // $mail // On E-mail er der allerede $res = mysql_query("SELECT * FROM mailliste WHERE mail = '$mail'") or die (mysql_error()); $antal = mysql_num_rows($res); if ($antal == 0) { // $ip, $mail, $dato $ip = $_SERVER['REMOTE_ADDR']; $tid = date("Y-m-d H:i:s"); mysql_query("INSERT INTO mailliste (id,ip,mail,tid) VALUES ('','$ip','$mail','$tid')") or die (mysql_error()); print "Din E-mail er blevet tilføjet"; } else { print "E-mail adressen er allerede tilføjet"; } } // End of tilmeld if ($_POST['valg'] == "Afmeld") { mysql_query("DELETE FROM mailliste WHERE mail = '$mail'") or die (mysql_error()); print "E-mail adresse afmeldt"; } // End of afmeld } // End of valg. Og så forstår jeg ikke at du indsætter en tom streng som dit ID i: INSERT INTO mailliste (id,ip,mail,tid) VALUES ('','$ip','$mail','$tid') ID plejer at være et tal, og i de fleste tilfælde med egenskaben `auto_increment`, så man ikke selv skal tildele sin data ID!
27. januar 2004 - 17:30
#9
Selvfølig $_GET['mode'] som erikjacobsen skrev ;)
27. januar 2004 - 17:38
#10
hmm det er ikke mig der har lavet det såå men sad også og undre mig over det
27. januar 2004 - 19:17
#11
Nu viker den første fil men er der nogle der kan se hvad der ligger af fejl i denne fil <? include_once("mysql_funktioner.php"); aabn_forbindelse_og_vaelgdb(); if ($mode == "send") { if ($action == "on") { $res = mysql_query("SELECT * FROM mailliste") or die (mysql_error()); while ($row = mysql_fetch_array($res)) { $afsender = "miv1@stofanet.dk"; $modtager = $row["mail"]; mail($modtager,$emne,$besked,"From: $afsender \nContent-Type: text/plain;"); } ?>Mail sendt<? exit; } ?><form action="admin.php?mode=send&action=on" method="post"> <table cellpadding="3" cellspacing="0" border="0" width="350"> <tr> <td><font face="helvetica" size="2" color="#000000">Emne: </font></td> <td><input type="text" name="emne" size="30"></td> </tr><tr valign="top"> <td><font face="helvetica" size="2" color="#000000">Besked: </font></td> <td><textarea cols="50" rows="10" name="besked"></textarea></td> </tr><tr> <td colspan="2"><input type="submit" value="SEND"></td> </tr></table></form> <? } if (!$mode) { // Laver oversigt ?> <font face="helvetica" size="2" color="#000000"><b><font size="+1">Oversigt:</b></font><br> Her er en oversigt over, hvilke E-mail adresser der er tilmeldt maillisten. <br> <table cellpadding="1" cellspacing="2" border="0" width="100%" bgcolor="#FFFFFF"> <tr> <td bgcolor="#000000"><center><font face="helvetica" size="2" color="#FFFFFF"><b>#:</B></font></center></td> <td bgcolor="#000000"><center><font face="helvetica" size="2" color="#FFFFFF"><b>ID:</b></font></center></td> <td bgcolor="#000000"><center><font face="helvetica" size="2" color="#FFFFFF"><b>IP: </B></Font></Center></Td> <td bgcolor="#000000"><center><font face="helvetica" size="2" color="#FFFFFF"><b>E-mail: </b></font></center></td> <td bgcolor="black"><center><font face="helvetica" size="2" color="#FFFFFF"><b>Dato & tid</b></font></center></td> </Tr> <? $result = mysql_query("SELECT * FROM mailliste ORDER by tid desc") or die (mysql_error()); $nummer = 1; while (list($id, $mail, $ip, $tid) = mysql_fetch_row($result)) { ?> <tr> <td bgcolor="#EEEEEE"><font face="helvetica" size="2" color="#000000"><? print $nummer; $nummer++;?></font></td> <td bgcolor="#EEEEEE"><font face="helvetica" size="2" color="#000000"><? print $id; ?></font></td> <td bgcolor="#EEEEEE"><font face="helvetica" size="2" color="#000000"><? print $ip; ?></font></td> <td bgcolor="#EEEEEE"><font face="helvetica" size="2" color="#000000"><? print $mail; ?></font></td> <td bgcolor="#EEEEEE"><font face="helvetica" size="2" color="#000000"><? print $tid; ?></font></td> </tr> <? } ?> </table> <? } ?> <br> <a href="admin.php?mode=send">Send Mail til listen</a> <br><br>
27. januar 2004 - 19:20
#12
Det er vel det samme med den måde POST/GET variabler håndteres på!
27. januar 2004 - 19:21
#13
hmm er det noget du kan hjælpe mig lidt men eller bare fortælle hvad jeg skal kigge efter og gøre
27. januar 2004 - 19:33
#14
Hvis du skal bruge en variabel som bliver sendt med gennem adresse-linien: index.php?mode=on Skal du tilgå variabel gennem $_GET arrayet: $_GET['mode'] Hvis form variabler bliver sendt gennem en form ved brug af post metoden, skal de sendte variabler tilgås gennem $POST arrayet: $_POST['emne'] Det er sådan set ideen!
27. januar 2004 - 19:41
#15
Okay men hvad skal jeg så gøre ved sådan en her if ($action == "on") {
27. januar 2004 - 19:43
#16
tager jeg helt fejl med denne if ($_GET['action'] == "on") {
27. januar 2004 - 19:45
#17
Ja, det er korrekt, hvis `action` er en variabel fra adresse linien!
27. januar 2004 - 19:52
#18
Jeps nu virker det hele, kan du ikke ligge et svar tefck og tal for hjælpen
27. januar 2004 - 20:16
#19
Joh da!
Vi tilbyder markedets bedste kurser inden for webudvikling