Gå til innhold

Automatisk opprette egen "side", istedenfor tabell (php)


Anbefalte innlegg

Hei Hei

Jeg driver for tiden å lærer meg PHP, jeg får til uten noe problem å lage tabeller, og hente frem info i disse (mysql), men hvordan kan jeg automatisk lage en egen side?

La meg forklare nærmere. F.eks på finn.no kommer det opp mange resultater, dersom man trykker på en av disse resultatene kommer det opp en egen side for dette resultatet, med mer informasjon osv.

Hvordan kan jeg få til det samme? Hva heter dette? Jeg klarer ikke finne noe nyttig på google.

 

:)

Lenke til kommentar
Videoannonse
Annonse

Er mange måter å gjøre dette på. Med én php-fil kan du gjøre det f.eks. slik:

<?php
if($page==1)
{
 echo "Du er på side 1";
}
elseif($page==2)
{
 echo "Du er på side 2";
}
else
{
 echo "Bø!";
}

 

Kall filen for test.php og prosjektet for minside.

Prøv å gå til http://localhost/minside/test.php

Prøv å gå til http://localhost/minside/test.php?page=1

Prøv å gå til http://localhost/minside/test.php?page=2

 

Ellers foreslår jeg å gå gjennom noen php-tutorials og/eller bok.

Lenke til kommentar

Jeg driver som sagt å lærer, så har lest litt tutorials, men jeg liker best å prøve å feile. :) Nå etter noen timers prøving, og med utgangspunkt i koden fra denne siden, har jeg klart det. Jeg har fått til slik at man kan skrive inn og legge inn bilder via CKedit, også postes det automatisk til en side som tar utgangspunkt i template jeg har for resten av siden. I morgen skal jeg få lagt til mulighet til å legge inn kategorier og annet snacks, for å lære meg videre.

Lenke til kommentar

Hei igjen :)

Nå har jeg sittet i rundt ni timer, uten å komme lengre....

Jeg får som jeg skrev i går til å poste mot databasen, og opprette nye filer ved hjelp av koden jeg linket til. Problemet er at jeg ikke får langt til flere "kategorier" inn i databasen, jeg får de inn i selve siden dog...jeg har prøvd mye med dato, når jeg trykker submit så kommer dato og alt riktig inn på den nye siden, men i databasen vises ikke datoen i det hele tatt, og i tillegg så skrives ikke ting inn i databasen etter kategoriene "overskrift" "beskjed" osv, nei de legger seg hulter til bulter...slik at overskrift blir skrevet til "beskjed" i databasen, og "beskjed" (=hoved innhold) legger seg i Dato kategorien, og url adressa legger seg i "annet".

 

Det er åpenbart noe galt med koden, men nå etter utrolig mye forsøk og googling så klarer ikke mine utrente øyne å se hvor feilen ligger. Så nå snur jeg meg vekk fra pcen, og vender mot kjøkkenet for en stund, og håper noen her inne klarer å hjelpe meg med å se feilen

 

 

 

Det er nok her feilen ligger..jeg har prøvd å copy paste, og bare bytte ut med dato, men da vises ingen ting. Jeg har også prøvd å skrive det helt på nytt, med "min" egen formulering fra w3schools osv, i tillegg har jeg copy pasta fra andre koder jeg har skrevet før, som jeg vet fungerer, og bare bytta ut det som må byttes ut, men ingen ting virker :(

 

 mysql_query('INSERT into matoppskrift (`overskrift`,`beskjed`,`dato`,`url`)
	VALUES("","'.mysql_real_escape_string(html_entity_decode($_POST['overskrift'])).'",
	"'.mysql_real_escape_string(html_entity_decode($_POST['beskjed'])).'",
	"'.$pagename.'")');

 

<?php
$template = <<<EOD
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
		 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />



		    <link href="../style.css" rel="stylesheet" type="text/css" title="default"/>

  <link rel="icon" type="image/png" href="../icon.png" />

		 <title><!--overskrift--></title>

    </head>
    <body>





 <?php
 include('../meny.php');
 ?>


		  <div id="hoved"> 




   <div  id="tekstforside1">

<!--beskjed-->
<!--dato-->

							    <?php
 include('../server.php');
 ?>








</div> 
</div>


<?php include('../footer.php');
?>

    </body>
</html>
EOD;

//handle the posted form

if(isset($_POST['overskrift'])&&isset($_POST['beskjed'])&&isset($_POST['dato'])){
   //replace the areas of the template with the posted values



   $page = str_replace('<!--overskrift-->',html_entity_decode($_POST['overskrift']),$template);
   $page = str_replace('<!--beskjed-->',html_entity_decode($_POST['beskjed']),$page);
    $page = str_replace('<!--dato-->',html_entity_decode($_POST['dato']),$page);
   //create a name for the new page
   $pagename = ($_POST['overskrift']).'.php';
  include('server.php');
   //check if page already exists
   $result = mysql_query('SELECT url from matoppskrift WHERE url="'.mysql_real_escape_string($pagename).'"');
   if(mysql_num_rows($result)>=1){
    $notice = '<p>Page already created <b>./oppskrifter/'.$pagename.'</b></p>';
   }else{

    //inset new page into db





    mysql_query('INSERT into matoppskrift (`overskrift`,`beskjed`,`dato`,`url`)
    VALUES("","'.mysql_real_escape_string(html_entity_decode($_POST['overskrift'])).'",
    "'.mysql_real_escape_string(html_entity_decode($_POST['beskjed'])).'",
    "'.$pagename.'")');




    //put the created content to file
    file_put_contents('./oppskrifter/'.$pagename,$page);
    //make a notice to show the user
    $notice = '<p>New Page created <b>./oppskrifter/'.$pagename.'</b></p>';
   }
}
?>

   <script src="../ckeditor/ckeditor.js"></script>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Language" content="en-gb">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Make page example</title>
</head>
<body>
<?php
//if the notice is set then display it
if(isset($notice)){echo $notice;} ?>

<form method="POST" action="">
 <p>URL navn:<input type="text" name="url" size="32"></p>
 <p>Overskrift:<input type="text" name="overskrift" size="32"></p>
 <p>beskjed:</p>
 <p><textarea rows="30" name="beskjed" cols="100"></textarea></p>

   <script>
   CKEDITOR.replace( 'beskjed' );
</script>

 <input type="text" name="dato"  value="<?php date_default_timezone_set('Europe/Oslo');
echo date("d/m/Y H:i:s");  ?>" ></input>
   <p><input type="submit" value="Submit"></p>
</form>

</body>
</html>

Endret av chri-ot
Lenke til kommentar
  • 4 uker senere...

Du har ett par feil i den sql spørringen din. Jeg fikset opp i feilene dine (tror jeg?), du kan prøve med denne her:

 

mysql_query("INSERT INTO matoppskrift (`overskrift`,`beskjed`,`dato`,`url`)
			VALUES("'.$overskrift.'",
			"'.$beskjed.'", "",
			"'.$pagename.'")");

Endret av KRIZx
  • Liker 1
Lenke til kommentar

Du har ett par feil i den sql spørringen din. Jeg fikset opp i feilene dine (tror jeg?), du kan prøve med denne her:

 

mysql_query("INSERT INTO matoppskrift (`overskrift`,`beskjed`,`dato`,`url`)
			VALUES("'.$overskrift.'",
			"'.$beskjed.'", "",
			"'.$pagename.'")");

 

Tusen takk, skal prøve etterpå! Jeg sitter på mobilen nå. :)

Lenke til kommentar

Tusen takk, skal prøve etterpå! Jeg sitter på mobilen nå. :)

 

Jeg tror jeg så igjennom koden litt fort å gæli, men du kan prøve det jeg skrev over her. Hvis ikke kan du prøve dette:

 

mysql_query('INSERT INTO matoppskrift (`overskrift`,`beskjed`,`dato`,`url`)
		VALUES("'.mysql_real_escape_string(html_entity_decode($_POST['overskrift'])).'",
		"'.mysql_real_escape_string(html_entity_decode($_POST['beskjed'])).'", "", "'.$pagename.'")');

Endret av KRIZx
  • Liker 1
Lenke til kommentar

Måtte nesten dra frem pcen å prøve med en gang, jeg hadde egentlig gitt opp hele greia, men jeg har veldig lyst til å få det til :p

 

Desverre fungerte det ikke, den siste jeg la inn var "kaffe", og den oppførte seg på samme måte som alt annet tull jeg har skrevet inn. :(

 

Jeg tror jeg så igjennom koden litt fort å gæli, men du kan prøve det jeg skrev over her. Hvis ikke kan du prøve dette:

 

mysql_query('INSERT INTO matoppskrift (`overskrift`,`beskjed`,`dato`,`url`)
		VALUES("'.mysql_real_escape_string(html_entity_decode($_POST['overskrift'])).'",
		"'.mysql_real_escape_string(html_entity_decode($_POST['beskjed'])).'", "", "'.$pagename.'")');

Så ikke at du skrev det, skal teste det nå, takk :)

post-154306-0-59051900-1375002447_thumb.png

Lenke til kommentar

Jeg tror jeg så igjennom koden litt fort å gæli, men du kan prøve det jeg skrev over her. Hvis ikke kan du prøve dette:

 

mysql_query('INSERT INTO matoppskrift (`overskrift`,`beskjed`,`dato`,`url`)
		VALUES("'.mysql_real_escape_string(html_entity_decode($_POST['overskrift'])).'",
		"'.mysql_real_escape_string(html_entity_decode($_POST['beskjed'])).'", "", "'.$pagename.'")');

 

Det fungerte helt toppers! Nå trenger jeg bare å få lagt til dato så fungerer endelig koden. Skulle ønske det gikk ann å gi mer en +1 :xmas:

Lenke til kommentar

For å legge til dato har jeg gjort slik:

 

mysql_query('INSERT INTO matoppskrift (`overskrift`,`beskjed`,`dato`,`url`)
					VALUES("'.mysql_real_escape_string(html_entity_decode($_POST['overskrift'])).'",

					"'.mysql_real_escape_string(html_entity_decode($_POST['beskjed'])).'",
					 "'.mysql_real_escape_string$_POST['dato']).'",  "", "'.$pagename.'")');

 

Men det fungerer ikke, siden blir bare hvit, så noe må være galt med koden. Jeg klarer ikke se det..Hva kan det være?

Lenke til kommentar

For å legge til dato har jeg gjort slik:

 

mysql_query('INSERT INTO matoppskrift (`overskrift`,`beskjed`,`dato`,`url`)
					VALUES("'.mysql_real_escape_string(html_entity_decode($_POST['overskrift'])).'",

					"'.mysql_real_escape_string(html_entity_decode($_POST['beskjed'])).'",
					 "'.mysql_real_escape_string$_POST['dato']).'",  "", "'.$pagename.'")');

 

Men det fungerer ikke, siden blir bare hvit, så noe må være galt med koden. Jeg klarer ikke se det..Hva kan det være?

 

Du mangler en ( og har en "", for mye.

Prøv dette: http://pastebin.com/i7JpCyqc

 

Anbefaler og skru på feil-rapportering øverst i koden din (se nedenfor), og bruk en editor med syntax-highlighting, f.eks netbeans :)

ini_set('display_errors', 1);
error_reporting(E_ALL);

  • Liker 1
Lenke til kommentar




 <?php
 include('../meny.php');
 ?>

					  <div id="hoved">




<div  id="tekstforside1">
<!--beskjed-->
<!--dato-->

																<?php
 include('../server.php');
 ?>





</div>
</div>



<?php include('../footer.php'); ?>



<?php

//handle the posted form
if(isset($_POST['overskrift'])&&isset($_POST['beskjed'])&&isset($_POST['dato'])){
//replace the areas of the template with the posted values



$page = str_replace('<!--overskrift-->',html_entity_decode($_POST['overskrift']),$template);
$page = str_replace('<!--beskjed-->',html_entity_decode($_POST['beskjed']),$page);
		$page = str_replace('<!--dato-->',html_entity_decode($_POST['dato']),$page);
//create a name for the new page
$pagename = ($_POST['overskrift']).'.php';
  include('server.php');
//check if page already exists
$result = mysql_query('SELECT url from matoppskrift WHERE url="'.mysql_real_escape_string($pagename).'"');
if(mysql_num_rows($result)>=1){
		$notice = '<p>Page already created <b>./oppskrifter/'.$pagename.'</b></p>';
}else{

		//inset new page into db





		mysql_query('INSERT into matoppskrift (`overskrift`,`beskjed`,`dato`,`url`)
		VALUES("","'.mysql_real_escape_string(html_entity_decode($_POST['overskrift'])).'",
		"'.mysql_real_escape_string(html_entity_decode($_POST['beskjed'])).'",
		"'.$pagename.'")');




		//put the created content to file
		file_put_contents('./oppskrifter/'.$pagename,$page);
		//make a notice to show the user
		$notice = '<p>New Page created <b>./oppskrifter/'.$pagename.'</b></p>';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <link href="../style.css" rel="stylesheet" type="text/css" title="default"/>

	  <link rel="icon" type="image/png" href="../icon.png" />
<meta http-equiv="Content-Language" content="en-gb">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <script src="../ckeditor/ckeditor.js"></script>
<title>Make page example</title>
</head>
<body>
<?php
//if the notice is set then display it
if(isset($notice)){echo $notice;} ?>
<form method="POST" action="">
 <p>URL navn:<input type="text" name="url" size="32"></p>
 <p>Overskrift:<input type="text" name="overskrift" size="32"></p>
 <p>beskjed:</p>
 <p><textarea rows="30" name="beskjed" cols="100"></textarea></p>

<script>
CKEDITOR.replace( 'beskjed' );
</script>

 <input type="text" name="dato"  value="<?php date_default_timezone_set('Europe/Oslo');
echo date("d/m/Y H:i:s");  ?>" ></input>
<p><input type="submit" value="Submit"></p>
</form>
</body>
</html>

 

Prøv dette :)

Endret av KRIZx
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...