Avatar billede codemanager Nybegynder
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.


?>
Avatar billede erikjacobsen Ekspert
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.
Avatar billede tefcke Nybegynder
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!
Avatar billede codemanager Nybegynder
27. januar 2004 - 16:41 #3
nu har jeg prøvet det hele men det virker ikke endnu hvad kan jeg så gøre
Avatar billede codemanager Nybegynder
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
Avatar billede tefcke Nybegynder
27. januar 2004 - 17:04 #5
$REMOTE_ADDR
skal være:
$_SERVER['REMOTE_ADDR']

$mail
skal være:
$_POST['mail']
Avatar billede codemanager Nybegynder
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());
Avatar billede tefcke Nybegynder
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")
Avatar billede tefcke Nybegynder
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!
Avatar billede tefcke Nybegynder
27. januar 2004 - 17:30 #9
Selvfølig $_GET['mode'] som erikjacobsen skrev ;)
Avatar billede codemanager Nybegynder
27. januar 2004 - 17:38 #10
hmm det er ikke mig der har lavet det såå men sad også og undre mig over det
Avatar billede codemanager Nybegynder
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>
Avatar billede tefcke Nybegynder
27. januar 2004 - 19:20 #12
Det er vel det samme med den måde POST/GET variabler håndteres på!
Avatar billede codemanager Nybegynder
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
Avatar billede tefcke Nybegynder
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!
Avatar billede codemanager Nybegynder
27. januar 2004 - 19:41 #15
Okay men hvad skal jeg så gøre ved sådan en her  if ($action == "on") {
Avatar billede codemanager Nybegynder
27. januar 2004 - 19:43 #16
tager jeg helt fejl med denne if ($_GET['action'] == "on") {
Avatar billede tefcke Nybegynder
27. januar 2004 - 19:45 #17
Ja, det er korrekt, hvis `action` er en variabel fra adresse linien!
Avatar billede codemanager Nybegynder
27. januar 2004 - 19:52 #18
Jeps nu virker det hele, kan du ikke ligge et svar tefck og tal for hjælpen
Avatar billede tefcke Nybegynder
27. januar 2004 - 20:16 #19
Joh da!
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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