Avatar billede langkiller Nybegynder
21. april 2010 - 18:14 Der er 14 kommentarer og
1 løsning

INSERT INTO fejl ?

Har et problem med min brugeroprettelese form og indsættelse i databasen..

her er Html formen:




<form action=\"indsaet.php\" method=\"post\">

<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">

  <tr><td><font face=\"tahoma\" size=\"2\"><b>Brugernavn: &nbsp;&nbsp;</b> </font></td><td> <input type=\"text\" name=\"brugernavn\"> *</td></tr>

    <tr><td>&nbsp;</td></tr>

  <tr><td><font face=\"tahoma\" size=\"2\"><b>Password:</b> </font></td><td><input type=\"password\" name=\"password\"> *</td><tr>

    <tr><td>&nbsp;</td></tr>

  <tr><td><font face=\"tahoma\" size=\"2\"><b>Gentag password:</b> </font></td><td><input type=\"password\" name=\"gentag\"> *</td><tr>

    <tr><td>&nbsp;</td></tr>

<tr><td><font face=\"tahoma\" size=\"2\"><b>Fornavn:</b> &nbsp;&nbsp; </font></td><td> <input type=\"text\" name=\"fornavn\"> *</td></tr>
     
    <tr><td>&nbsp;</td></tr>

<tr><td><font face=\"tahoma\" size=\"2\"><b>Efternavn:</b> &nbsp;&nbsp; </font></td><td> <input type=\"text\" name=\"efternavn\"> *</td></tr>
     
    <tr><td>&nbsp;</td></tr>

 

<tr><td><font face=\"tahoma\" size=\"2\"><b>Erhvervsdrivende/privatperson:</b> &nbsp;&nbsp;</td>

  <td>
  <select name=\"erhverv\" size=\"1\">
    <option name=\"erhvervsdrivende\">Erhvervsdrivende</option>
    <option name=\"privatperson\">Privatperson</option>
    </select> *
  </td>
</tr>


    <tr><td>&nbsp;</td></tr>

<tr><td><font face=\"tahoma\" size=\"2\"><b>CPR/CVR:</b> &nbsp;&nbsp; </td><td><input type=\"text\" name=\"cpr_cvr\"> *</td></tr>

    <tr><td>&nbsp;</td></tr>

<tr><td><font face=\"tahoma\" size=\"2\"><b>Adresse:</b> &nbsp;&nbsp; </td><td><font face=\"tahoma\" size=\"2\">Gadenavn: &nbsp;<input type=\"text\" name=\"gadenavn\"> * &nbsp;&nbsp;&nbsp; <font face=\"tahoma\" size=\"2\">Gadenr: &nbsp;&nbsp;<input type=\"text\" name=\"gadenr\"> *</td></tr>

          <tr><td>&nbsp;</td></tr>

<tr><td><font face=\"tahoma\" size=\"2\"><b>By:</b> &nbsp;&nbsp; </td><td><font face=\"tahoma\" size=\"2\">Postnr: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"text\" name=\"postnr\"> * &nbsp;&nbsp;&nbsp;<font face=\"tahoma\" size=\"2\"> Bynavn: &nbsp;&nbsp;&nbsp;<input type=\"text\" name=\"by\"> *</td></tr>
     

</table>

<p>
<input type=\"submit\" value=\"Opret bruger\">
</form>



Her er Indsaet.php:


$brugernavn = $_POST["brugernavn"];
$password = $_POST["password"];
$gentag = $_POST["gentag"];

$erhverv = $_POST["erhverv"];
$fornavn = $_POST["fornavn"];
$efternavn = $_POST["efternavn"];
$gadenavn = $_POST["gadenavn"];
$gadenr = $_POST["gadenr"];
$by = $_POST["by"];
$postnr = $_POST["postnr"];
$cpr_cvr = $_POST["cpr_cvr"];

$errorCount = 0;


$tjek = "SELECT brugernavn FROM brugere WHERE brugernavn = '". $_POST['brugernavn']."'";
$resultat = mysql_query($tjek);



if($fornavn == "")
{
    echo "Du skal angive dit fornavn.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($efternavn == "")
{
    echo "Du skal angive dit fornavn.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($erhverv == "")
{
    echo "Du skal angive erhverv.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($gadenavn == "")
{
    echo "Du skal angive dit gadenavn.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($gadenr == "")
{
    echo "Du skal angive dit gade nummer.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($by == "")
{
    echo "Du skal angive din by.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($postnr == "")
{
    echo "Du skal angive dit Postnummer.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($cpr_cvr == "")
{
    echo "Du skal angive dit CPR/CVR nummer.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($brugernavn == "")
{
    echo "Du skal indtaste et brugernavn.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($password == "")
{
    echo "Du skal indtaste et password.<p> <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    $errorCount++;
}
if($gentag == "" || $gentag != $password)
{
    echo "De to passwordfelter skal have ens indhold.<p> <a href=\"java script:history.back(-1)\">Tilbage</a>";
    $errorCount++;
}


if(mysql_num_rows($resultat) == 0)
{

  if($errorCount == 0)
  {

  mysql_connect("xxxxxxx","xxxxx","xxxxxxx");
  mysql_select_db("xxxxxx");

  $password = MD5($password);
  $insert = mysql_query("INSERT INTO brugere (brugernavn,password,erhverv,fornavn,efternavn,gadenavn,gadenr,by,postnr,cpr_cvr) VALUES ('$brugernavn','$password','$erhverv','$fornavn','$efternavn','$gadenavn','$gadenr','$by','$postnr','$cpr_cvr')");

  if(!$insert)
    echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
  else
    echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
  }

}
else
{
echo "brugernavnet er optaget!";
}






Den udskriver min egen fejl medd.

    echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";


????
Avatar billede showsource Seniormester
21. april 2010 - 18:23 #1
by er et reserveret ord i mysql.
Omdøb, eller brug ` omkring navnet: `by`
Avatar billede The_Buzz Novice
21. april 2010 - 18:26 #2
$insert = mysql_query("INSERT INTO brugere (brugernavn,password,erhverv,fornavn,efternavn,gadenavn,gadenr,by,postnr,cpr_cvr) VALUES ('$brugernavn','$password','$erhverv','$fornavn','$efternavn','$gadenavn','$gadenr','$by','$postnr','$cpr_cv') or die (mysql_error ());
Avatar billede The_Buzz Novice
21. april 2010 - 18:26 #3
showsource har ret... Den overså jeg...

or die (mysql_error ()) er en ganske god ide til at få fejl skrevet ud så du kan læse hva man har lavet af fejl...
Avatar billede langkiller Nybegynder
21. april 2010 - 21:26 #4
Det har du sørme også ret i Source ;) Havde slet ikke overvejet den mulighed .

Jo. Plejer også at anvende "or die" efter mine sql sætninger, men den var glemt denne gang .


Source, du smider bare et svar hvis du vil have point. :)
Og hvis nogen af jer gider hjælpe endnu en gang, sidder jeg med et andet mindre problem her:

    if($erhvervsdrivende == "erhvervsdrivende")
    {
    echo "<tr><td><font face=\"tahoma\" size=\"2\">&nbsp;&nbsp;<b>Firmanavn: &nbsp;</b></td><td><font face=\"tahoma\" size=\"2\">" . $userArray["firmanavn"] . "</td></tr>";
    }
    else
    {
    echo "  ";
    }

Altså hvis brugeren er registreret som erhvervsdrivende skal den udskrive noget, men hvis ikke skal den ikke udskrive noget? Den funger ikke rigtig.
Avatar billede showsource Seniormester
21. april 2010 - 21:54 #5
Det er vel
    if($userArray["erhvervsdrivende"] == "erhvervsdrivende")

???
Avatar billede langkiller Nybegynder
21. april 2010 - 22:10 #6
Hov havde ikke fået variablen med i mit spørgsmål.. den er:
  $erhvervsdrivende = ("SELECT erhverv FROM brugere WHERE id='$_SESSION[user_id]'");


Desværre det virkede ikke Source, havde også prøvet at skrive det på den måde selv.. ? nåh ja og feltet der skal henvises hedder erhverv og ikke erhvervsdrivende..

uanset hvad får du selvfølgelig dine point
Avatar billede showsource Seniormester
21. april 2010 - 22:54 #7
$sql = "SELECT erhverv FROM brugere WHERE id = ".$_SESSION["user_id"];

$erhvervsdrivende = mysql_result(mysql_query($sql),0);
Avatar billede langkiller Nybegynder
21. april 2010 - 23:24 #8
$erhvervsdrivende_sql = "SELECT erhverv FROM brugere WHERE id = ".$_SESSION["user_id"];
  $erhvervsdrivende = mysql_result(mysql_query("$erhvervsdrivende_sql"));

??

får fejlmeddelse:

Warning: Wrong parameter count for mysql_result()
Avatar billede showsource Seniormester
21. april 2010 - 23:49 #9
Du glemmer 0 i mysql_result()

$erhvervsdrivende = mysql_result(mysql_query("$erhvervsdrivende_sql"),0);

Hvis nu vi siger at du også vælger id, altså id og erhverv

echo mysql_result(mysql_query($sql),0,0); // id
echo mysql_result(mysql_query($sql),0,01); // erhverv

eller
echo mysql_result(mysql_query($sql),0,0); // id
Avatar billede langkiller Nybegynder
22. april 2010 - 00:04 #10
$erhvervsdrivende_sql = "SELECT erhverv FROM brugere WHERE id = '$_SESSION["user_id"]'";
  $erhvervsdrivende = mysql_result(mysql_query("$erhvervsdrivende_sql"),0);


virker heller ikke.. må have gjort noget andet galt ?



Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING
Avatar billede showsource Seniormester
22. april 2010 - 00:06 #11
Der kom lige en kunde i taxa'en !!!

Du skal ikke ha' anførselstegn

  $erhvervsdrivende = mysql_result(mysql_query($erhvervsdrivende_sql),0);
Avatar billede showsource Seniormester
22. april 2010 - 00:09 #12
mysql_result($sql,0,0)
er første første row og første felt.
Du kan også
mysql_result($sql,0,"erhverv")

mysql_result($sql,1,0)
er andet row, første felt
Avatar billede langkiller Nybegynder
22. april 2010 - 00:34 #13
Ved ikke hvad jeg gør galt .. har aldrig brugt mysql_result før..

arning: Wrong parameter count for mysql_query() in /data/cluster/free1go/p/o/www.postballerup.1go.dk/privat.php on line 14

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /data/cluster/free1go/p/o/www.postballerup.1go.dk/privat.php on line 14


får jeg nu..
Avatar billede showsource Seniormester
22. april 2010 - 01:48 #14
Jeg overså også " i dit eksempel til query
$erhvervsdrivende_sql = "SELECT erhverv FROM brugere WHERE id = '$_SESSION["user_id"]'";

Når du bruger " eller ' i em streng, skal du "hoppe ud" af phpkode:
$erhvervsdrivende_sql = "SELECT erhverv FROM brugere WHERE id = '".$_SESSION["user_id"]."'";

Jeg går ud fra at $_SESSION["user_id"] er et tal ?
$erhvervsdrivende_sql = "SELECT erhverv FROM brugere WHERE id = ".$_SESSION["user_id"];

Når det er et tal skal man faktisk ikke bruge ' i en query.
Og fpr nu at sikre det er et tal:

$erhvervsdrivende_sql = "SELECT erhverv FROM brugere WHERE id = ".(int)$_SESSION["user_id"];


$erhvervsdrivende = mysql_result(mysql_query($erhvervsdrivende_sql),0);

Men, det er måske en ide at tjekke du rent faktisk får et row i din query:

$row = mysql_query($erhvervsdrivende_sql) or die (mysql_error());

if(mysql_num_rows($row) == 1) {
$erhvervsdrivende = mysql_result($row,0);

    if($erhvervsdrivende == "erhvervsdrivende") {
    echo "JUHU";
    }
}
Avatar billede langkiller Nybegynder
25. april 2010 - 23:32 #15
Hey showsource, tak for hjælpen. Fandt dog ud af hvad problemet var.

  if($erhvervsdrivende == "erhvervsdrivende")

  skulle rettes til

  if($erhvervsdrivende == "Erhvervsdrivende")

Altså et stort E i stedet for det lille.. irreterende fejl, men tak fordi du tog dig tid til at hjælpe :)
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