webForumDet fria alternativet

Hjälp med webshop från internetworld

PHP

8 svar · 539 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Well...
Har testat att använda webbshoppen som finns här, men jag får den inte att fungera riktigt. :(
Det går inte att spara information från lagg_till_produkt.php i databasen. Får inga felmeddelanden när jag klickar på submit-knappen, utan jag blir bara förflyttad till själva inloggningen igen på samma sida.
Kanske det är mina "sessions" som strular!!?

Detta står överst på lagg_till_produkt.php:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/kunder/*****/*****/*****/ebutik/includes.class:97) in /home/kunder/*****/*****/*****/ebutik/lagg_till_produkt.php on line 22

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/kunder/*****/*****/*****/ebutik/includes.class:97) in /home/kunder/*****/*****/*****/ebutik/lagg_till_produkt.php on line 22
Shoppingbutiken\Lägg till produkt

Det är "session_start();" som strular på rad 22, men jag får bara ännu fler fel om jag flyttar "session_start();" överst i koden.

Ja.. även jag vet att det mesta i följande kod är sk. "fulkod", men detta kan man ordna vid ett senare tillfälle. ;)

Lägg till produkt:

<?php 
error_reporting(E_ALL);
include('includes.class');

?>

<?php if(empty($_POST['anv']))
      {
	      $anv = "";
	      $los = "";
	  }
      else
      {
	      $anv = $_POST['anv'];
	      $los = $_POST['los'];
      }
      
      if(empty($_SESSION['admin']))
      {
          $admin = new Administrator($anv, $los);
          $admin = serialize($admin);
          session_start();
          $_SESSION['admin'] = $admin;
           
      }
      else
      {
	      $admin = unserialize($_SESSION['admin']);
	      $admin->check_login();
      }
      
      ?>

<?php if(!empty($_POST['namn']) and !empty($_POST['pris']) and !empty($_POST['beskrivning']))
          new Produkt($_POST['namn'], $_POST['pris'], $_POST['beskrivning']);
          
          ?>
      
	
		<b>Shoppingbutiken\Lägg till produkt</b>
		<hr noshade size="1" color="#000000" width="100%">
		<a href="lagg_till_produkt.php">Lägga till produkt</a> |
		<a href="radera_produkt.php">Radera produkt</a> |
		<a href="bli_kund.php">Bli kund</a> |
		<a href="radera_kund.php">Radera kunduppgifter</a> |
		<a href="handla_produkter.php">Handla produkter</a>
		
		<p/>
		
		<form method="POST" action="lagg_till_produkt.php">
		
			<b>Produktnamn</b><br>
			<input type="text" size="30" name="namn"><p/>
			
			<b>Pris</b><br/>
			<input type="text" size="30" name="pris"><p/>
			
			<b>Beskrivning</b><br/>
			<textarea rows="12" cols="20" name="beskrivning" wordwrap="virtual"></textarea><p/>
			
			<input type="submit" value="Lägg till"><p/>
		
		</form>

Följande klass (från includes.class) används för att spara produkterna i databasen:

<?php // Klassen Produkt lägger till produkter i registret
      
      class Produkt
      {
	      
	      var $namn;
	      var $pris;
	      var $beskrivning;
	      var $id;
	   
	      function Produkt($n, $p, $b) {
		      
		      $this->namn = $n;
		      $this->pris = $p;
		      $this->beskrivning = $b;
		      
		      $namn = $this->namn;
		      $pris = $this->pris;
		      $beskrivning = $this->beskrivning;
		       
	 	      $connection = mysql_connect("localhost", "användare", "lösenord") or die("Kunde inte skapa koppling!");
		      mysql_select_db("min-databas") or die("Kunde inte välja databas");
			  
			  $laggTill = "INSERT INTO shop_produkter (namn, pris, beskrivning) VALUES ('$namn', '$pris', '$beskrivning')";
			  mysql_query($laggTill) or die("Det gick inte att lägga till information!");
			  
			  mysql_close($connection);
			  
			  print("<i>Produkt tillagd i registret!</i><p/>");
		      
	      }
	               
      }
      
      ?>

Tacksam för hjälp med ovanstående. :r

Medlem sedan nov. 20016 480 inlägg
#2

session_start(); bör vara överst. vad får du för fel då?

Medlem sedan juli 20041 271 inlägg
#3

bassebhu skrev:

session_start(); bör vara överst. vad får du för fel då?

Hmm.. det verkar fungera nu.
Jag flyttade session_start(); längst upp i koden som du sa. Tack!

Nu har jag ett litet problem till..

Fatal error: Call to a member function on a non-object in /home/kunder/*****/*****/*****/ebutik/handla_produkter.php on line 74

Får detta när jag ska bekräfta min beställning.

Rad 74:

<?php 
		 $kundvagn->visa_innehall();
		 ?>

Detta är funktionen/klassen:

	      function visa_innehall() 
	      {
		      
		      print("<hr noshade size=1 color=#000000>");
		      print("<i>Du har just i din kundvagn...</i><p/>");
		      print("<table border=0 cellpadding=1 cellspacing=0>");
		      print("<tr>");
		      print("<td width=150><b>Vara</b></td>");
		      print("<td width=50><b>Á-pris</b></td>");
		      print("</tr>");
		      
		      $filnamn = session_id() . ".txt";
		      $summa = 0;
		      
		      if(file_exists($filnamn))
		      {
			      $file = fopen($filnamn, "r");
		          $data = fread($file, filesize($filnamn));
		      		      
		          $varor = explode("*", $data);
		          $langd = count($varor) - 1;
		          		      		      	      
		          for($i=0;$i<$langd;$i++)
		          {
			          $vara = explode(";", $varor[$i]);
			          $vlangd = count($vara);
			      
			          print("<tr>");
			      
			          print("<td>");
			          print(substr($vara[0], 5));
		              print("</td>");
			      
		              print("<td align=right>");
			          print(substr($vara[1], 5) . " kr");
		              print("</td>");
		          
		              $summa += substr($vara[1], 5);
		           
			          print("</tr>");
			      }
		      }
		 	      
		      print("</table>");
		      
		      print("<b>Summa:</b> " . $summa . " kr");
		      
		      print("<p/><form method=POST action=handla_produkter.php>");
		      print("<input type=hidden name=ga_till_kassan value=true>");
		      print("<input type=submit value='Gå till kassan'>");
		      print("</form>");	
		      
		      print("<p/><form method=POST action=handla_produkter.php>");
		      print("<input type=hidden name=tom_kundvagn value=true>");
		      print("<input type=submit value='Töm kundvagnen'>");
		      print("</form>");	      
		      
		  }
Medlem sedan juni 20031 837 inlägg
#4

objektet $kundvagn är förmodligen inte initierat på just den sidan.
kan det vara så att $kundvagn är samma som $_SESSION['kundvagn'] ?
Kolla så ditt webbhotell har register_globals = On i php.ini annars fungerar inte koden.
alternativt kan du ändra $kundvagn till $_SESSION['kundvagn'].

Medlem sedan juli 20041 271 inlägg
#5

The_Hulk skrev:

objektet $kundvagn är förmodligen inte initierat på just den sidan.
kan det vara så att $kundvagn är samma som $_SESSION['kundvagn'] ?
Kolla så ditt webbhotell har register_globals = On i php.ini annars fungerar inte koden.
alternativt kan du ändra $kundvagn till $_SESSION['kundvagn'].

Såhär:

$_SESSION['kundvagn']->visa_innehall();

..eller? :r

Medlem sedan juni 20031 837 inlägg
#6

mmm, har du testat det?

Medlem sedan juli 20041 271 inlägg
#7

The_Hulk skrev:

mmm, har du testat det?

Ja, men jag får samma error meddelande. :(

Medlem sedan jan. 20011 140 inlägg
#8

Jag tycker det mesta verkar bugga, har försökt testa scriptet lite. Men man kan inte byta sida förän något fel dyker upp.

Medlem sedan juni 20031 837 inlägg
#9

Har du testat att kontakta Internet World?

291 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
154 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)