Avatar billede angelenglen Nybegynder
28. januar 2004 - 16:18 Der er 5 kommentarer og
1 løsning

Opret medlem - hvor er fejlen?

jeg forstår det ikke... jeg syntes jeg tager højde for alt, men alligevel nægter den at udføre den del af scriptet der skriver til databasen... det bliver simpelthen aldrig kørt, og jeg tror jeg har set mig blind på hvorfor... please hjælp mig at finde min fejl!

den includede fil "forbind_til_db.php" laver intet andet end at forbinde til databasen, og er testet og virker.

------------ opretmedlem.php -----------
<?
include('forbind_til_db.php');

$submit        = $_POST['submit'];
$nummer        = addslashes($_POST['nummer']);
$navn        = addslashes($_POST['navn']);
$email        = addslashes($_POST['email']);
$tlf        = addslashes($_POST['tlf']);
$kodeord    = addslashes($_POST['kodeord']);
$kommentar    = addslashes($_POST['kommentar']);
$dato        = time();
$addy        = $REMOTE_ADDR;

if ($submit != "") { // hvis formen er submitted, så behandles data, og skrives til databasen
//følgende 3 linier checker om medlem-nummeret allerede er optaget - hvis det er, sættes variablen $error.
$res = mysql_query("SELECT nummer FROM database_medlemmer WHERE nummer='$nummer'")or die(mysql_error());
if (mysql_num_rows($res) == "1") {
$error = "nummer"; //definerer at problemet ligger i at nummeret er optaget.
}

    //hvis der er sat en fejl-besked, så lad være med at forsøge at skrive til databasen:
if ($error == "") {
mysql_query("INSERT INTO database_medlemmer SET addy='$addy',kommentar='$kommentar',tlf='$tlf',kodeord='$kodeord',nummer='$nummer',navn='$navn',email='$email',dato='$dato'")or die(mysql_error());
}



} else { // hvis der IKKE er submitted, så vis login-formen
?>
<html>
<head>
<title>Opret medlem</title>
</head>
<body bgcolor="#CCCCDD" topmargin="0">

<?// hvis brugeren blev oprettet, skriv det her (men ikke hvis der var fejl)
if (($submit != "") && ($navn != "") && ($error == "")) { ?><font color=green>Medlem: <?=$navn?> oprettet.</font><br> <? } ?>

<?// Hvis der var fejl under oprettelsen, skriv fejl-meddelsen her:
if (($submit != "") && ($error != "") && ($error == "nummer")) { ?><font color=red>Fejl: Medlems-nummer <?=$nummer?> allerede optaget i databasen. Prøv igen.</font><br> <? } ?>

<b><font size=4>Opret medlem</font></b><br><br>

<form method="post" action="<?=$PHP_SELF?>">
<table border=0 cellpadding=5 cellspacing=0>
<tr><td><b>Navn:<font color=red>*</font></b></td>    <td><input type="text"    style="width: 200px;" name="navn"></td></tr>
<tr><td><b>Nummer:<font color=red>*</font></b></td>    <td><input type="text"    style="width: 200px;" name="nummer"></td></tr>
<tr><td><b>Telefon:</b></td>                <td><input type="text"    style="width: 200px;" name="tlf"></td></tr>
<tr><td><b>Email:</b></td>                <td><input type="text"    style="width: 200px;" name="email"></td></tr>
<tr><td><b>Kodeord:</b></td>                <td><input type="password" style="width: 200px;" name="kodeord"></td></tr>
<tr><td vAlign=top><b>Kommentarer:</b></td>        <td><textarea name="kommentar" rows="3" style="width: 200px;"></textarea></td></tr>
<tr><td colspan=2><input name="submit" value="Opret" type="submit" style="width: 100%;"></td></tr>
</table>
</form>

</body>
</html>
<? } ?>
Avatar billede angelenglen Nybegynder
28. januar 2004 - 16:25 #1
hmm har lige rettet en fejl der gjorde at den ENTEN skrev ELLER viste formen... den skal naturligvis kunne gøre begge dele... men den virker fortsat ikke :(

her er den opdaterede kode:
-------------opretmedlem.php ------------
<?
$submit        = $_POST['submit'];
$nummer        = addslashes($_POST['nummer']);
$navn        = addslashes($_POST['navn']);
$email        = addslashes($_POST['email']);
$tlf        = addslashes($_POST['tlf']);
$kodeord    = addslashes($_POST['kodeord']);
$kommentar    = addslashes($_POST['kommentar']);
$dato        = time();
$addy        = $REMOTE_ADDR;

if ($submit != "") { // hvis formen er submitted, så behandles data, og skrives til databasen
include('forbind_til_db.php');
//følgende 3 linier checker om elev-nummeret allerede er optaget - hvis det er, sættes variablen $error.
echo "21";
$res = mysql_query("SELECT nummer FROM elsesminde_opg_elever WHERE nummer='$nummer'")or die(mysql_error());
echo "22";
if (mysql_num_rows($res) == "1") {
echo "23";
$error = "nummer"; //definerer at problemet ligger i at nummeret er optaget.
}
echo "24";
    //hvis der er sat en fejl-besked, så lad være med at forsøge at skrive til databasen:
echo "2";
if ($error == "") {
echo "3";
mysql_query("INSERT INTO elsesminde_opg_elever SET addy='$addy',kommentar='$kommentar',tlf='$tlf',kodeord='$kodeord',nummer='$nummer',navn='$navn',email='$email',dato='$dato'")or die(mysql_error());
}



} // herunder vises selve opret-formen, og eventuelle fejl-beskeder
echo "testing:<hr>\n";
echo "error: " . $error . ".<br>\n";
echo "nummer: " . $nummer . ".<br>\n";
echo "navn: " . $navn . ".<br>\n";
echo "submit: " . $submit . ".<br>\n";
echo "<hr>\n";
?>
<html>
<head>
<title>Opret elev</title>
<style>
BODY     {font-family: Trebuchet MS, Verdana, Arial, Helvetica; color:#000000, size: 14px;}
TD      {font-family: Trebuchet MS, Verdana, Arial, Helvetica; color:#000000, size: 14px;}
INPUT     {font-family: Trebuchet MS, Verdana, Arial, Helvetica; color:#000000, size: 14px;}
A:link {TEXT-DECORATION: none}
A:visited {TEXT-DECORATION: none}
A:active {TEXT-DECORATION: none}
A:hover {TEXT-DECORATION: none; color: #333377;}
</style>
</head>
<body bgcolor="#CCCCDD" topmargin="0">
<? include('adminmenu.php'); //hent menu'en!! ?>

<?// hvis brugeren blev oprettet, skriv det her (men ikke hvis der var fejl)
if (($submit != "") && ($navn != "") && ($error == "")) { ?><font color=green>Elev: <?=$navn?> oprettet.</font><br> <? } ?>

<?// Hvis der var fejl under oprettelsen, skriv fejl-meddelsen her:
if (($submit != "") && ($error != "") && ($error == "nummer")) { ?><font color=red>Fejl: <?=$nummer?> allerede optaget i databasen. Prøv igen.</font><br> <? } ?>

<b><font size=4>Opret elev</font></b><br><br>
<script>
<!--
function valider( frm ) {
    if ( frm.navn.value.length == 0 ) {
        alert( "Husk at skrive et navn" );
        return false;
    }
    if ( frm.navn.value == "Dit navn" ) {
        alert( "Husk at skrive et navn" );
        return false;
    }
    if ( frm.nummer.value.length == 0 ) {
        alert( "Husk at skrive et nummer." );
        return false;
    }
    if ( frm.nummer.value == "Din hilsen" ) {
        alert( "Husk at skrive et nummer." );
        return false;
    }
    return true;  // if all tests were OK.
};
-->
</script>

<form method="post" action="<?=$PHP_SELF?>" onsubmit="return valider( this );">
<table border=0 cellpadding=5 cellspacing=0>
<tr><td><b>Navn:<font color=red>*</font></b></td>    <td><input type="text"    style="width: 200px;" name="navn"></td></tr>
<tr><td><b>Nummer:<font color=red>*</font></b></td>    <td><input type="text"    style="width: 200px;" name="nummer"></td></tr>
<tr><td><b>Telefon:</b></td>                <td><input type="text"    style="width: 200px;" name="tlf"></td></tr>
<tr><td><b>Email:</b></td>                <td><input type="text"    style="width: 200px;" name="email"></td></tr>
<tr><td><b>Kodeord:</b></td>                <td><input type="password" style="width: 200px;" name="kodeord"></td></tr>
<tr><td vAlign=top><b>Kommentarer:</b></td>        <td><textarea name="kommentar" rows="3" style="width: 200px;"></textarea></td></tr>
<tr><td colspan=2><input name="submit" value="Opret" type="submit" style="width: 100%;"></td></tr>
<tr><td colspan=2>Punkter markeret med <font color=red><b>*</b></font> er påkrævet!</td></tr>
</table>
</form>

</body>
</html>
Avatar billede angelenglen Nybegynder
28. januar 2004 - 16:26 #2
lol det var den uforkortede udgave, med en masse extra css gejl i... her er en mere "clean udgave" :






-----------------------
<?
include('forbind_til_db.php');

$submit        = $_POST['submit'];
$nummer        = addslashes($_POST['nummer']);
$navn        = addslashes($_POST['navn']);
$email        = addslashes($_POST['email']);
$tlf        = addslashes($_POST['tlf']);
$kodeord    = addslashes($_POST['kodeord']);
$kommentar    = addslashes($_POST['kommentar']);
$dato        = time();
$addy        = $REMOTE_ADDR;

if ($submit != "") { // hvis formen er submitted, så behandles data, og skrives til databasen
//følgende 3 linier checker om medlem-nummeret allerede er optaget - hvis det er, sættes variablen $error.
$res = mysql_query("SELECT nummer FROM database_medlemmer WHERE nummer='$nummer'")or die(mysql_error());
if (mysql_num_rows($res) == "1") {
$error = "nummer"; //definerer at problemet ligger i at nummeret er optaget.
}

    //hvis der er sat en fejl-besked, så lad være med at forsøge at skrive til databasen:
if ($error == "") {
mysql_query("INSERT INTO database_medlemmer SET addy='$addy',kommentar='$kommentar',tlf='$tlf',kodeord='$kodeord',nummer='$nummer',navn='$navn',email='$email',dato='$dato'")or die(mysql_error());
}



}
?>
<html>
<head>
<title>Opret medlem</title>
</head>
<body bgcolor="#CCCCDD" topmargin="0">
<? include('adminmenu.php'); //hent menu'en!! ?>

<?// hvis brugeren blev oprettet, skriv det her (men ikke hvis der var fejl)
if (($submit != "") && ($navn != "") && ($error == "")) { ?><font color=green>Medlem: <?=$navn?> oprettet.</font><br> <? } ?>

<?// Hvis der var fejl under oprettelsen, skriv fejl-meddelsen her:
if (($submit != "") && ($error != "") && ($error == "nummer")) { ?><font color=red>Fejl: Medlems-nummer <?=$nummer?> allerede optaget i databasen. Prøv igen.</font><br> <? } ?>

<b><font size=4>Opret medlem</font></b><br><br>

<form method="post" action="<?=$PHP_SELF?>">
<table border=0 cellpadding=5 cellspacing=0>
<tr><td><b>Navn:<font color=red>*</font></b></td>    <td><input type="text"    style="width: 200px;" name="navn"></td></tr>
<tr><td><b>Nummer:<font color=red>*</font></b></td>    <td><input type="text"    style="width: 200px;" name="nummer"></td></tr>
<tr><td><b>Telefon:</b></td>                <td><input type="text"    style="width: 200px;" name="tlf"></td></tr>
<tr><td><b>Email:</b></td>                <td><input type="text"    style="width: 200px;" name="email"></td></tr>
<tr><td><b>Kodeord:</b></td>                <td><input type="password" style="width: 200px;" name="kodeord"></td></tr>
<tr><td vAlign=top><b>Kommentarer:</b></td>        <td><textarea name="kommentar" rows="3" style="width: 200px;"></textarea></td></tr>
<tr><td colspan=2><input name="submit" value="Opret" type="submit" style="width: 100%;"></td></tr>
</table>
</form>

</body>
</html>
Avatar billede phpwiz Nybegynder
28. januar 2004 - 16:27 #3
en INSERT skal skrives på denne måde :

INSERT INTO tabel (id,navn,email,adresse) VALUES ('', '$navn', '$email'........

got it ?
Avatar billede angelenglen Nybegynder
28. januar 2004 - 16:29 #4
det andet virker også, jeg har brugt det flere steder uden problemer, problemet er at den del af koden ikke bliver eksekveret, ellers ville jeg modtage en fejl, og jeg får ingen fejl :(
Avatar billede Slettet bruger
28. januar 2004 - 16:47 #5
Prøv at lave din betingelse om til

if ("Opret"==$submit)
Avatar billede angelenglen Nybegynder
09. december 2004 - 15:59 #6
tror jeg fandt en løsning på problemet selv.
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