2009-12-04, 16:50
  #1
Medlem
Eight08s avatar
Ska försöka mig på att göra en blogg med databas. Den behöver inte se jättefin ut, utan jag vill bara få det att funka.

Jag får inga error på sidan, men blogginläggen som lagts in visas inte alls.
Det funkar att posta nya blogginlägg med formuläret från create.php, det går alltså in i databasen, men inget visas på sidan sen. Vad är det som är fel?

Skrev fel namn på databasen till en början, så ni vet. den heter alltså blog_databse i mysql också.


I slutändan ska jag kunna se och redigera inläggen, logga in för att göra detta och skriva kommentarer. Men nöjer mig med att ens kunna se inläggen på index sidan överhuvudtaget först. Ja jag är en jäkla nybörjare som har gjort 1000 idiotfel, jag vet tack på förhand.

Index.php:
[PHP]

<html>
<head>
<title>Min blogg</title>
</head>
</html>

<?php

include_once"header.php"; // det här är början på designen på sidan
include_once "scripts/connect.php"; // Skapar kontakt med connect.php
include_once "create.php"; // Skapar kontakt med create.php

$id = 0;
$id2 = 0;
$date = "";
$contents = "";
$author = "";

if (isset($_GET['id'])) {
$id = $_GET['id'];
$sql = mysql_query("SELECT * FROM blog WHERE id='$id'");

while($row = mysql_fetch_array($sql)){

$title = $row["title"]; // förvandlar datan till phpvariabler

$contents = $row["contents"];

$author = $row["author"];

$date = $row["date"];

echo "title: $title ";
}
}

else {


// get five post recently
$result = mysql_query("SELECT * FROM blog");
$txt = "";

// display blogs
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$txt .= "<table class=\"blog\">";

$txt .= "<tr><td class=\"blogtitle\">" . $row["title"] . "</td></tr>";

$txt .= "<tr><td class=\"bloguser_date\">Posted by " . $row["author"] . " date: " . $row["date"] . "</td></tr>";
$txt .= "<tr><td class=\"blogtext\">" . $row["contents"] . "</td></tr>";
//$txt .= "<tr><td><a href=?bid=" . $row["id"] . ">show comment</a></td></tr>";
$txt .= "</table>";
}


mysql_free_result($result);
//@mysql_close();
}

?>
[/PHP]

Connect.php:
[PHP]
<?php

$db_host = "localhost"; //your host Database address

$db_username = "Niklas"; //your account username

$db_pass = "hejhej"; //your account password

$db_name = "blog_databse"; //your database name

@mysql_connect("$db_host","$db_username","$db_pass ") or die ("could not connect to mysql");

@mysql_select_db("$db_name") or die ("no database");

?>
[/PHP]

Create.php:
[PHP]
<?php
include_once"scripts/connect.php"; // Skapar kontakt med databasen

$msg = "";

if (isset($_POST['submit']))
if ($_POST['submit'] == "Skicka"){ // If funktionen upptäcker om formuläret har blivit postat
echo "dddd";
$ptitle = $_POST['title']; // Fångar upp titel, innehåll och författare till inlägget.
$pcontents = $_POST['contents'];
$pauthor = $_POST['author'];
$pdate = date("Y-n-d H:i:s"); // right now in date and time format
echo "ptitle $ptitle pconentents $pcontents pauthor $pauthor <br />";

$sqlcreate = mysql_query("INSERT INTO blog (date, title, contents, author)
VALUES('$pdate', '$ptitle','$pcontents','$pauthor')"); // skickar variablerna till rätt plats, "now" har med datumet att göra

if ($sqlcreate){ // Rapporterar om inlägg har skapats eller om det blev fail.

$msg = "<font color=\"#009900\">Ett nytt inlägg har skapats.</font>";

} else {

$msg = "<font color=\"#FF0000\">Problem med att få kontakt med servern.</font>";

}

}

include_once "header.php"; // Har med header.php längst upp


echo $msg;
?>

</html>
<form action="create.php" method="post">

<input type="text" name="title" value="title"/>

<br />

<br />

<textarea rows="8" name="contents" >Innehåll</textarea>

<br />

<input type="text" name="author" value="Författare"/>

<br />

<br />

<input type="hidden" value="new" />

<input type ="submit" name="submit" value="Skicka" />

</form>
</html>
[/PHP]

[PHP]

namn på databas: blog_databse

Table:blog

Fält i blog:
id
date
title
contents
author

samt några blogginlägg i dessa med id, titel, författare osv.
[/PHP]
__________________
Senast redigerad av Eight08 2009-12-04 kl. 16:53.
Citera
2009-12-04, 17:18
  #2
Medlem
Pingispojkes avatar
Du tar inte hänsyn till SQL injections, vilket är oerhört viktigt. Varje gång du kör en variabel given utav användaren innuti en query är det viktigt att escapa den bland annat

Kör, [PHP]mysql_real_escape_string()[/PHP] på $_GET['id'] i index.php
__________________
Senast redigerad av Pingispojke 2009-12-04 kl. 17:37.
Citera
2009-12-04, 17:20
  #3
Medlem
Protons avatar
[PHP]<html>
<head>
<title>Min blogg</title>
</head>
</html> [/PHP]
Exakt var hade du tänkt att din html-kod skulle skrivas ut? Efter det att du avslutat html-taggen eller?
Citera
2009-12-04, 19:28
  #4
Medlem
Eight08s avatar
Citat:
Ursprungligen postat av Proton
[PHP]<html>
<head>
<title>Min blogg</title>
</head>
</html> [/PHP]
Exakt var hade du tänkt att din html-kod skulle skrivas ut? Efter det att du avslutat html-taggen eller?

Den ger bara sidan ett namn längst upp i webbläsaren, händer inget i själva fönstret. Ska du skriva något så skriv något vettigt?

Pingispojke: Körde mysql_real_escape_string() på $_GET['id'].

Fortfarande ingen skillnad iallafall.
Citera
2009-12-04, 19:55
  #5
Medlem
xmzs avatar
Citat:
Ursprungligen postat av Eight08
Den ger bara sidan ett namn längst upp i webbläsaren, händer inget i själva fönstret. Ska du skriva något så skriv något vettigt?

Ja det är precis det enda som kommer hända. Du lär inte få ut några blogginlägg om du inte flyttar </html> taggen. Eller du kanske gör på ett vettigare sätt?

EDIT: För att klargöra: webläsaren slutar printa ut något efter </html>, därför måste den taggen vara absolut sist.

EDIT2: Ett tips är att lära sig första grundstegen i html innan man ger sig på resten.
__________________
Senast redigerad av xmz 2009-12-04 kl. 20:04.
Citera
2009-12-04, 20:50
  #6
Medlem
Pingispojkes avatar
Citat:
Ursprungligen postat av Eight08
Den ger bara sidan ett namn längst upp i webbläsaren, händer inget i själva fönstret. Ska du skriva något så skriv något vettigt?

Pingispojke: Körde mysql_real_escape_string() på $_GET['id'].

Fortfarande ingen skillnad iallafall.

Jag var kanske inte tillräckligt tydlig. mysql_real_escape_string löser inte ditt problem, utan jag ville bara uppmärksamma dig om SQL injections, vilket är väldigt viktigt att ta hänsyn till.. Men kolla in Protons svar det ligger något i det han säger

edit: Behövs det inte heller en <body></body> tagg?
__________________
Senast redigerad av Pingispojke 2009-12-04 kl. 21:02.
Citera
2009-12-04, 21:53
  #7
Medlem
Eight08s avatar
Citat:
Ursprungligen postat av xmz
Ja det är precis det enda som kommer hända. Du lär inte få ut några blogginlägg om du inte flyttar </html> taggen. Eller du kanske gör på ett vettigare sätt?

EDIT: För att klargöra: webläsaren slutar printa ut något efter </html>, därför måste den taggen vara absolut sist.

EDIT2: Ett tips är att lära sig första grundstegen i html innan man ger sig på resten.

Tyvärr så åkte jag på den här kursen med lovord om att inga förkunskaper behövdes. Därför är läget som det är. Men då vet jag det iallafall tar bort hela html koden så länge.

Pingispojke: Jo jag läste på om mysql_real_escape_string direkt efter att jag postat det inlägget och kom på det då :P

Problemet är fortfarande kvar.
Citera
2009-12-04, 23:21
  #8
Medlem
xmzs avatar
Citat:
Ursprungligen postat av Eight08
Tyvärr så åkte jag på den här kursen med lovord om att inga förkunskaper behövdes. Därför är läget som det är.

Det går att utveckla hur mycket som helst, men ta och ladda hem wordpress och kolla hur den är uppbyggd. Det är hur enkel kod som helst att läsa och man får snabbt koll på hur det bör se ut.

Personligen så föredrar jag att "learn by doing" och det innefattar att snegla på andra koder och "stjäla" strukturen från olika ställen. Nu kan jag ordna till de flesta enklare saker som bloggar och dylikt utan att ha gått någon kurs eller liknande.

Har du inga som helst förkunskaper, så sök på nätet efter det mest grundläggande inom html och ägna en kväll åt det.
Sen går du på CSS och ägnar en kväll eller två åt det. Sen ägnar du ett par kvällar att studera olika PHP-koder.

När du gjort detta så har du tillräckliga kunskaper att läsa kod och plocka prylar och sätta ihop till ditt eget och "learn by doing". Hjulet har uppfunnits hundratals gånger, det behöver inte uppfinnas igen!
Citera
2009-12-05, 00:53
  #9
Medlem
Protons avatar
Du borde prova att slå på felmedelanden i PHP, då kommer tolken att spotta ur sej felmeddelanden om sådana finns, vilket jag gissar på eftersom du får ut en blank sida.

html start å sluttag är ganska vettigt att ha med, bara så du vet vad som är vettigt och inte....

Om du lägger till dessa två raderr högst upp i din index.php(för det ser ut att vara där du vill skriva ut saker), vad händer då?
[PHP]
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL ^ E_NOTICE);
[/PHP]
Då kommer PHP att skriva ut felmeddelanden, kan ju vara värt att prova, eller ligger det inget vett i det heller?
Citera
2009-12-05, 01:54
  #10
Medlem
xmzs avatar
Citat:
Ursprungligen postat av Proton
Då kommer PHP att skriva ut felmeddelanden, kan ju vara värt att prova, eller ligger det inget vett i det heller?

Inte mycket va, i och med att webläsaren slutar läsa koden efter </html> och således inte kommer skriva ut ett enda felmeddelande om php-koden.
Citera
2009-12-05, 01:58
  #11
Medlem
Citat:
Ursprungligen postat av xmz
Inte mycket va, i och med att webläsaren slutar läsa koden efter </html> och således inte kommer skriva ut ett enda felmeddelande om php-koden.

Just nu har han varken start eller sluttagg.
Citera
2009-12-05, 06:43
  #12
Medlem
Eight08s avatar
Jag la till html i början och slut, så nu har jag det.

Wordpress, got it. Ska börja kolla där. Sen css och studera phpkoder, okej.
Tack för att ni försöker lära mig
Citera
  • 1
  • 2

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in