Just nu i M3-nätverket
Gå till innehåll

Problem med att skriva till dababas


Ante_prod

Rekommendera Poster

Vet inte om det blev rätt forum nu, men är det fel så får ni gärna flytta inlägget.

 

Jag har problem med min PHP sida.

Tanken är att man skall få fylla i ett formulär där man skriver in lite data om reparationer man gjort på en verkstad.

Detta skall sedan lagras i en databas (MySQL).

Men problemet är att när man klickar på "Lägg till" knappen så får jag felmeddelande att det inte kunde läggas till.

Sidan är byggd från IDG´s exempel på Databaser i PHP del 1.

Kör man "add.php" som finns att ladda ner därifrån så fungerar det hur fint som helst, men alltså inte med min sida.

Jag har skivit tabellen i PhpMyAdmin precis som fälten i sidan är, men det fungerar alltså inte. Någon som har några förslag på vad som är fel?

Koden ser ut så här.

 


<html>

<head>

	<title>Registrera ny reparation</title>

</head>

<body>    
<FONT FACE="Verdana">

<FONT SIZE=6><B>Registrera ny reparation</B></FONT>
<BR><BR><BR>
<DIV ALIGN=left><B><FONT SIZE=4>Allmän information</FONT></B></DIV>
<form method="POST" action="rep.[color="#0000ff"]php[/color]">

<B>Datum: </B><INPUT TYPE="text" NAME="datu" SIZE=10 MAXLENGTH=10> (ex. 2005-10-27)

<BR><BR>
<TABLE BORDER=0>
  <TR>
    <TD>Bolag</TD>
    <TD>Inv.nr</TD>
    <TD>Reg.nr</TD>
    <TD>Bolagsnamn (om det inte finns i listan)</TD>
  </TR>
  <TR>
    <TD><SELECT NAME="abol">
  <OPTION VALUE="1"> 1
  <OPTION VALUE="2"> 2
  <OPTION VALUE="3"> 3
  <OPTION VALUE="4"> 4
  <OPTION VALUE="5"> 5
  <OPTION VALUE="6"> 6
</SELECT></TD>
    <TD><INPUT TYPE="text" NAME="ainv" SIZE=4 MAXLENGTH=4></TD>
    <TD><INPUT TYPE="text" NAME="areg" SIZE=7 MAXLENGTH=7></TD>
    <TD><INPUT TYPE="text" NAME="abob" SIZE=34 MAXLENGTH=40></TD>
  </TR>
</TABLE>
<BR>
<B>Information om fordonet</B>
<TABLE BORDER=0>
  <TR>
    <TD>Typ</TD>
    <TD>Fabrikat</TD>
    <TD>Modell</TD>
    <TD>Kaross</TD>
    <TD>Årsmod.</TD>
  </TR>
  <TR>
    <TD><SELECT NAME="bfor">
  <OPTION VALUE="Buss"> Buss
  <OPTION VALUE="Lastbil"> Lastbil
  <OPTION VALUE="Bil"> Bil
  <OPTION VALUE="Vagn"> Vagn
  <OPTION VALUE="Husvagn"> Husvagn
  <OPTION VALUE="Annat"> Annat
</SELECT></TD>
    <TD><INPUT TYPE="text" NAME="bfab" SIZE=20 MAXLENGTH=40></TD>
    <TD><INPUT TYPE="text" NAME="bmod" SIZE=20 MAXLENGTH=40></TD>
    <TD><INPUT TYPE="text" NAME="bkar" SIZE=20 MAXLENGTH=40></TD>
    <TD><INPUT TYPE="text" NAME="bars" SIZE=4 MAXLENGTH=4></TD>
  </TR>
</TABLE>
<BR>
<FONT SIZE=4><B>Information om felet</B></FONT>
<BR><BR>
<B>Beskriv felet kortfattat</B>
<BR>
<TEXTAREA NAME="cfel" COLS=40 ROWS=5>
</TEXTAREA>
<BR><BR>
<B>Vilka delar byttes</B>
<BR>
<TEXTAREA NAME="cdel" COLS=40 ROWS=5>
</TEXTAREA>
(ex. 2 st. drivremmar [radbrytning] 3 st. lampor)<BR>
<FONT SIZE=4>Vem?</FONT>
<BR><BR>
<B>Vem utförde jobbet?</B>
<BR>
<SELECT NAME="dvut">
  <OPTION VALUE="?"> --- Välj ---
  <OPTION VALUE="1"> 1
  <OPTION VALUE="2"> 2
  <OPTION VALUE="3"> 3
  <OPTION VALUE="4"> 4
  <OPTION VALUE="5"> 5
  <OPTION VALUE="6"> 6
  <OPTION VALUE="7"> 7
</SELECT>
<INPUT TYPE="text" NAME="dvub" SIZE=20 MAXLENGTH=20> (fylls i om annan är valt i förg. ruta)

<BR><BR>
<B>Vem registrerade jobbet?</B>
<BR>
<SELECT NAME="dvre">
  <OPTION VALUE="?"> --- Välj ---
  <OPTION VALUE="1"> 1
  <OPTION VALUE="2"> 2
  <OPTION VALUE="3"> 3
  <OPTION VALUE="4"> 4
  <OPTION VALUE="5"> 5
  <OPTION VALUE="6"> 6
  <OPTION VALUE="7"> 7
</SELECT>
<INPUT TYPE="text" NAME="dvrb" SIZE=20 MAXLENGTH=20> (fylls i om annan är valt i förg. ruta)
<BR><BR>
     	<input type="submit" size="30" value="Lägg till!"><p/>

     </form>

	<?[color="#0000ff"]php[/color] [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['datu']))
		 $datu = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['abol']))   
	         $abol = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['ainv']))   
	         $ainv = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['areg']))
	         $areg = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['abob']))
	         $abob = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['bfor']))
	         $bfor = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['bfab']))
	         $bfab = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['bmod']))
	         $bmod = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['bkar']))
	         $baross = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['bars']))
	         $bars = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['cfel']))
	         $cfel = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['cdel']))
	         $cdel = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['dvut']))
	         $dvut = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['dvub']))
	         $dvub = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['dvre']))
	         $dvre = "not set";
	      [color="#0000ff"]if[/color]([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['dvrb']))
	         $dvrb = "not set";

		  [color="#0000ff"]if[/color](![color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST['datu']))
		  {
			  $datu   = [color="#0000ff"]$[/color]_POST['datu'];
			  $abol   = [color="#0000ff"]$[/color]_POST['abol'];
			  $ainv    = [color="#0000ff"]$[/color]_POST['ainv'];
			  $areg     = [color="#0000ff"]$[/color]_POST['areg'];
			  $abob     = [color="#0000ff"]$[/color]_POST['abob'];
			  $bfor     = [color="#0000ff"]$[/color]_POST['bfor'];
			  $bfab     = [color="#0000ff"]$[/color]_POST['bfab'];
			  $bmod     = [color="#0000ff"]$[/color]_POST['bmod'];
			  $bkar     = [color="#0000ff"]$[/color]_POST['bkar'];
			  $bars     = [color="#0000ff"]$[/color]_POST['bars'];
			  $cfel     = [color="#0000ff"]$[/color]_POST['cfel'];
			  $cdel     = [color="#0000ff"]$[/color]_POST['cdel'];
			  $dvut     = [color="#0000ff"]$[/color]_POST['dvut'];
			  $dvub     = [color="#0000ff"]$[/color]_POST['dvub'];
			  $dvre     = [color="#0000ff"]$[/color]_POST['dvre'];
			  $dvrb     = [color="#0000ff"]$[/color]_POST['dvrb'];
			  $connection = [color="#ff0000"]mysql_connect[/color]("localhost", "användarnamn", "lösenord") [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]("Kunde inte skapa koppling!");

		  	  [color="#ff0000"]mysql_select_db[/color]("databas") [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]("Kunde inte välja databas");

		   	  $laggTill = "INSERT INTO tabell (datu, abol, ainv, areg, abob, afor, bfab, bmod, bkar, bars, cfel, cdel, dvut, dvub, dvre, dvrb) VALUES ('$datu', '$abol', '$ainv', '$areg', '$abob', '$bfor', '$bfab', '$bmod', '$bkar', '$bars', '$cfel', '$cdel', '$dvut', '$dvub', '$dvre', '$dvrb')";
		  	  [color="#ff0000"]mysql_query[/color]($laggTill) [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]("Det gick inte att lägga till information!");

		      [color="#ff0000"]mysql_close[/color]($connection);

		      [color="#0000ff"]print[/color]("Information lades framgångsrikt till i databasen!");
		      [color="#0000ff"]print[/color]("<hr noshade size=1 color=[color="#006400"]#000000>");[/color]
	      } 


     ?>

</body>

</html>

 

Länk till kommentar
Dela på andra webbplatser

Detta: Det gick inte att lägga till information.

Här är koden som genererar felmeddelandet när det blir fel (tror jag)

 

[color="#ff0000"]mysql_query[/color]($laggTill) [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]("Det gick inte att lägga till information!");

 

/Ante

 

Länk till kommentar
Dela på andra webbplatser

Urk, det där ser gräsligt ut. Lär dom verkligen ut sånt på IDG? ;)

 

Iaf, om du skriver ut mysql_error, Så får du åtminstone nån ledtråd om vad som gick fel. Testa att även skriva ut SQL-frågan:

[color="#ff0000"]mysql_query[/color]($laggTill) [color="#0000ff"]or[/color] [color="#0000ff"]die[/color]("$laggTill<p>" . [color="#ff0000"]mysql_error[/color]());

 

Jag skulle åtminstone lägga de olika fältnamnen i en array:

$fields = [color="#0000ff"]array[/color]('datu', 'abol', 'ainv','areg', [color="#006400"]/* osv... */[/color]);

Då kan du göra saker som:

[color="#0000ff"]foreach[/color] ($fields [color="#0000ff"]as[/color] $f)
{
  [color="#0000ff"]if[/color] ([color="#0000ff"]empty[/color]([color="#0000ff"]$[/color]_POST[$f])) 
  {
     $data[$f] = "not set";
  }
    [color="#0000ff"]else[/color]
  {
    /* Du måste ansluta till db:n med mysql_connect() innan du använder   
      mysql_[color="#0000ff"]real[/color]_escape_[color="#0000ff"]string[/color]() */
    $data[$f] = mysql_[color="#0000ff"]real[/color]_escape_[color="#0000ff"]string[/color]([color="#0000ff"]$[/color]_POST[$f]);
  }
}
$lagg_till = "INSERT INTO <din tabell>(" . [color="#ff0000"]implode[/color](',', $fields) . ") VALUES('" .
[color="#ff0000"]implode[/color]("','", $data) . "')";

Att direkt stoppa in värden från ett formulär till en SQL-fråga är livsfarligt och inbjuder SQL-injektioner: http://se.php.net/manual/en/security.database.sql-injection.php

 

Länk till kommentar
Dela på andra webbplatser

Tackar så mycket för hjälpen.

Jag är ganska nyinsatt på PHP och vet inte riktigt var och hur jag ska sätta in den där koden.

Kan du hjälpa mig på något sätt?

Skriva hela koden (väldigt jobbigt, jag vet) eller bara visa var det ska in och var de olika sakerna ska stå.

De vore jätteschysst

 

/Ante

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...