Avatar billede trajkovski Nybegynder
30. juni 2004 - 23:36 Der er 13 kommentarer og
1 løsning

Fejl i sql?

Hej

Jeg er i gang med at lave et brugersystem. Nu er jeg nået til en brugeropretningsside. Min kode er som følger:
"
<?
session_start();
header("Cache-control: private"); //IE 6 Fix
if(!$_SESSION['brugernavn']){
$msg = "Log ind nedenfor";
header("Location: logind.php?msg=".$msg);
}
if($_SESSION['user_level'] == 4){
echo "Du har været for dum, så du må ikke en skid! Så kan du lære det!!!";
exit();
}

require("../billeder/mysql/mysql-funktioner.php");

$personens_fornavn = $_POST['personens_fornavn'];
$personens_mellemnavn = $_POST['personens_mellemnavn'];
$personens_efternavn = $_POST['personens_efternavn'];
$personens_email = $_POST['personens_email'];
$personens_tlfnr = $_POST['personens_tlfnr'];
$personens_user_level = $_POST['personens_user_level'];

if($personens_user_level < $_SESSION['user_level']){
echo"Du har valgt et user level der er højere end dit eget!<br \> Dette tillades ikke!";
include("opret_bruger.php");
exit();
}

if(!$personens_fornavn || !$personens_efternavn || !$personens_email || $personens_tlfnr){
echo "Du mangler at udfylde alle felterne markeret med *!";
include("opret_bruger.php");
exit();
}

function makeRandomPassword() {
  $salt = "abchefghjkmnpqrstuvwxyz0123456789";
  srand((double)microtime()*1000000);
      $i = 0;
      while ($i <= 7) {
            $num = rand() % 33;
            $tmp = substr($salt, $num, 1);
            $pass = $pass . $tmp;
            $i++;
      }
      return $pass;
}

$personens_password = makeRandomPassword();
$personens_brugernavn = makeRandomPassword();

aabn_forbindelse_og_vaelgdb();
$findes = mysql_query("SELECT * FROM brugere WHERE email='$personens_email'");
$sql = mysql_query("INSERT INTO brugere (brugernavn, fornavn, mellemnavn, efternavn, password, email, tlfnr, user_level, signup_date, oprettet_af) VALUES('$personens_brugernavn', '$personens_fornavn', '$personens_mellemnavn', '$personens_efternavn', '$personens_password', '$personens_email', '$personens_tlfnr', '$personens_user_level', now(), '$_SESSION['brugernavn']')");
luk_forbindelse();

if(mysql_num_rows($findes) > 0){
echo "Der er allerede oprettet en bruger med emailadressen ".$personens_email;
include("opret_bruger.php");
exit();
}

if($sql) {
echo "Der er blevet sendt et brugernavn og password til $personens_email";
} else {
echo "Der opstod en fejl - prøv igen! Hvis fejlen fortsætter kontakt da en admin.";
include("opret_bruger.php");
exit();
}
?>
"

Dette giver følgende fejl: " Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /hsphere/local/home/nicolai/sag.niconet.dk/system/opret_bruger_check.php on line 52 "

Linie 52 er: " $sql = mysql_query("INSERT INTO brugere (brugernavn, fornavn, mellemnavn, efternavn, password, email, tlfnr, user_level, signup_date, oprettet_af) VALUES('$personens_brugernavn', '$personens_fornavn', '$personens_mellemnavn', '$personens_efternavn', '$personens_password', '$personens_email', '$personens_tlfnr', '$personens_user_level', now(), '$_SESSION['brugernavn']')"); "

Jeg kan ikke finde ud af, hvad der er galt med den linie, så nu tilspørger jeg jer.

Håber I kan finde ud af det!

Med venlig hilsen

Nicolai
Avatar billede thesurfer Nybegynder
30. juni 2004 - 23:41 #1
Tal skal, så vidt jeg ved, ikke være omkredset af ' tegn.. disse felter er tal:

$personens_tlfnr = $_POST['personens_tlfnr'];
$personens_user_level = $_POST['personens_user_level'];

Prøv med:

......., '$personens_email', $personens_tlfnr, $personens_user_level, now(), '$_SESSION['brugernavn']')"); "
Avatar billede trajkovski Nybegynder
30. juni 2004 - 23:45 #2
Den giver stadig samme fejl :(
Avatar billede iknowstuff Nybegynder
30. juni 2004 - 23:47 #3
prøv at indsætte et {}-par..

{$_SESSION['brugernavn']}
Avatar billede iknowstuff Nybegynder
30. juni 2004 - 23:48 #4
det er ikke en egentlig sql-fejl, men syntax fejl i php-koden
Avatar billede retep Nybegynder
30. juni 2004 - 23:50 #5
prøv:
$sql = mysql_query("INSERT INTO brugere (brugernavn, fornavn, mellemnavn, efternavn, password, email, tlfnr, user_level, signup_date, oprettet_af) VALUES('$personens_brugernavn', '$personens_fornavn', '$personens_mellemnavn', '$personens_efternavn', '$personens_password', '$personens_email', '$personens_tlfnr', '$personens_user_level', now(), '".$_SESSION['brugernavn']."')");

Den sidste " i linien skal i hvert fald ikke være der!
Avatar billede trajkovski Nybegynder
30. juni 2004 - 23:55 #6
Nå nu kommer den ikke med den fejl mere! Tak!

Der er bare noget andet... Jeg beder den om at skrive "Der er blevet sendt et brugernavn og password til $personens_email" men i stedet for at skrive emailen skriver den personens telefonnummer altså $personens_tlfnr!

Jeg forstår ikke hvorfor! Gør I?
Avatar billede trajkovski Nybegynder
30. juni 2004 - 23:57 #7
Nu hvor det virker ser linien således ud: $sql = mysql_query("INSERT INTO brugere (brugernavn, fornavn, mellemnavn, efternavn, password, email, tlfnr, user_level, signup_date, oprettet_af) VALUES('$personens_brugernavn', '$personens_fornavn', '$personens_mellemnavn', '$personens_efternavn', '$personens_password', '$personens_email', '$personens_tlfnr', '$personens_user_level', now(), '{$_SESSION['brugernavn']}')");
Avatar billede el_morten Nybegynder
01. juli 2004 - 00:01 #8
Jeg kunne forstille mig at det var denne linie den var gal med.... (med bare et gæt)
if(!$personens_fornavn || !$personens_efternavn || !$personens_email || $personens_tlfnr){

Prøv at echo $personens_email før og efter denne sætning og se om det er det samme..
Avatar billede el_morten Nybegynder
01. juli 2004 - 00:04 #9
(med bare et gæt) = (MEN bare et gæt) :D
Avatar billede trajkovski Nybegynder
01. juli 2004 - 00:07 #10
Hehe... Jeg har fundet fejlen!

Havde kaldt de to input felter i formlen for det samme :)
Avatar billede trajkovski Nybegynder
01. juli 2004 - 00:08 #11
iknowstuff eftersom det var din kommentar, der hjalp, må du gerne lige smide et svar, så du kan få dine point :)
Avatar billede iknowstuff Nybegynder
01. juli 2004 - 00:55 #12
det er så i orden :)
Avatar billede retep Nybegynder
01. juli 2004 - 09:03 #13
Øhhh, det var da du fjernede " efter ; at det virkede, var jo der fejlen var? Nå pyt...
Avatar billede iknowstuff Nybegynder
01. juli 2004 - 09:19 #14
han valgte at bruge tuborg-klammerne

uden dem, ville det være nødvendigt at sætte variablen udenfor, som i dit eksempel..
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