/ Forside/ Teknologi / Udvikling / PHP / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Nyheds system
Fra : Kokane
Vist : 986 gange
50 point
Dato : 15-05-07 20:13

Jeg er ved at lave et nyheds system til denne side: www.dengulefar.dk Jeg har bruget dette PHP-script: http://www.phpuniverset.dk/show_source.phtml?script_id=139

Jeg kan ikke få filen nyhed.vis.php til at forbinde med databasen, er der nogen der kan se hvad der er galt? Der er ingen problemer med tilfoej.nyhed.php.

Koden til nyhed.vis.php er her:

<?
$db_host = "localhost";
$db_username = "dengulefar_dk";
$db_password = "X";
$db = "dengulefar_dk";
?>
<html><style type="text/css">
<!--
body,td,th {
   font-family: Arial, Helvetica, sans-serif;
   font-size: 11px;
   color: #999999;
}
body {
   background-color: #000000;
   margin-left: 0px;
   margin-top: 0px;
   margin-right: 0px;
   margin-bottom: 0px;
}
a {
   font-size: 11px;
   color: #999999;
}
a:link {
   text-decoration: none;
}
a:visited {
   text-decoration: none;
   color: #999999;
}
a:hover {
   text-decoration: underline;
   color: #999999;
}
a:active {
   text-decoration: none;
   color: #999999;
}
-->
</style>
<body>
<p>
<?
$db = mysql_connect($db_host, $db_username, $db_password);
mysql_select_db("nyheder", $db);

$foresp = mysql_query("SELECT * FROM nyheder ORDER BY dato DESC LIMIT 0,2") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){

echo "<b>" .$data["overskrift"]. "<b> -";
echo date("j/n - Y", $data["dato"]);
echo "<br>" .$data["tekst"]. "<br><br>";
}
?>
</p>
<p><a href="nyhed.tilfoej.php" target="iframe">Tilf&oslash;j nyhed</a> </p>
</body>
</html>

Venlig hilsen

Kokane

 
 
Kommentar
Fra : ostemanden


Dato : 16-05-07 08:17

Du skal lige sørge for disse værdier er fyldt ud:
$db_host
$db_username
$db_password

I denne streng:
$db = mysql_connect($db_host, $db_username, $db_password);

Det er værdier som er nødvendige for at du kan komme i kontakt med din database.

Kommentar
Fra : præceptor


Dato : 16-05-07 11:45

Det forvirrer jo lidt, at du dels oplyser:

$db = "dengulefar_dk";

og dels forsøger du så at vælge en helt anden database:

mysql_select_db("nyheder", $db);

Men, din database hedder vel ikke "nyheder", og "nyheder" er vel en tabel.

så hvad med:

mysql_select_db($db);


Kommentar
Fra : Kokane


Dato : 16-05-07 12:26

Hej Præceptor,
mener du sådan her:

<?
$db_host = "localhost";
$db_username = "dengulefar_dk";
$db_password = "kongen";
$db = "dengulefar_dk";
?>
<html><style type="text/css">
<!--
body,td,th {
   font-family: Arial, Helvetica, sans-serif;
   font-size: 11px;
   color: #999999;
}
body {
   background-color: #000000;
   margin-left: 0px;
   margin-top: 0px;
   margin-right: 0px;
   margin-bottom: 0px;
}
a {
   font-size: 11px;
   color: #999999;
}
a:link {
   text-decoration: none;
}
a:visited {
   text-decoration: none;
   color: #999999;
}
a:hover {
   text-decoration: underline;
   color: #999999;
}
a:active {
   text-decoration: none;
   color: #999999;
}
-->
</style>
<body>
<p>
<?
$db = mysql_connect($db_host, $db_username, $db_password);
mysql_select_db($db);

$foresp = mysql_query("SELECT * FROM nyheder ORDER BY dato DESC LIMIT 0,2") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){

echo "<b>" .$data["overskrift"]. "<b> -";
echo date("j/n - Y", $data["dato"]);
echo "<br>" .$data["tekst"]. "<br><br>";
}
?>
</p>
<p><a href="nyhed.tilfoej.php" target="iframe">Tilf&oslash;j nyhed</a> </p>
</body>
</html>

VH
Kokane

Kommentar
Fra : præceptor


Dato : 16-05-07 17:04

Både ja og nej.

Hvis du kun havde brugt $db til databasenavn, så ville det være okay,

men eftersom du også bruger $db til andet formål, så går den ikke.

Hvis du ændrer $db = "dengulefar_dk"; til f.eks: $db_dbname = "dengulefar_dk";
og du så ændrede mysql_select_db("nyheder", $db); til mysql_select_db($db_dbname", $db); mon ikke det så vil virke



Kommentar
Fra : Kokane


Dato : 16-05-07 17:21

Mange tak for hjælpen.
Jeg har desværre meget lidt forstand på PHP. Kan endnu ikke få det til at virke, så bliver lige nødtil at spørge igen.

Mener du sådan her:

<?
$db_host = "localhost";
$db_username = "dengulefar_dk";
$db_password = "kongen";
$db_dbname = "dengulefar_dk"; ?>
<html><style type="text/css">
<!--
body,td,th {
   font-family: Arial, Helvetica, sans-serif;
   font-size: 11px;
   color: #999999;
}
body {
   background-color: #000000;
   margin-left: 0px;
   margin-top: 0px;
   margin-right: 0px;
   margin-bottom: 0px;
}
a {
   font-size: 11px;
   color: #999999;
}
a:link {
   text-decoration: none;
}
a:visited {
   text-decoration: none;
   color: #999999;
}
a:hover {
   text-decoration: underline;
   color: #999999;
}
a:active {
   text-decoration: none;
   color: #999999;
}
-->
</style>
<body>
<p>
<?
$db = mysql_connect($db_host, $db_username, $db_password);
mysql_select_db($db_dbname", $db);
$foresp = mysql_query("SELECT * FROM nyheder ORDER BY dato DESC LIMIT 0,2") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){

echo "<b>" .$data["overskrift"]. "<b> -";
echo date("j/n - Y", $data["dato"]);
echo "<br>" .$data["tekst"]. "<br><br>";
}
?>
</p>
<p><a href="nyhed.tilfoej.php" target="iframe">Tilf&oslash;j nyhed</a> </p>
</body>
</html>

VH
Kokane


Kommentar
Fra : præceptor


Dato : 16-05-07 17:43

Ja, det var hvad jeg mente.

Men, det forudsætter jo at dine data er korrekte. At din udbyders MySQL bruger localhost som databsehost, og ikke f.eks. en eller anden IP adresse eller andet.

Er du sikker på at din udbyder bruger localhost ?

Du skal også være helt sikker på at dir $db_username er pinlig korrekt
såvel som du skal være helt sikker på at password er pinlig korrekt, og det vil sige at der skelnes mellem store og små bogstaver. Det skal også være i orden.

og så skal du endelig også være sikker på, at dit $db_dbnameogså er pinlig korrekt.



Kommentar
Fra : præceptor


Dato : 16-05-07 17:48

<html><head>
<style type="text/css">
<!--
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
color: #999999;
}
body {
background-color: #000000;
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
a {
font-size: 11px;
color: #999999;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #999999;
}
a:hover {
text-decoration: underline;
color: #999999;
}
a:active {
text-decoration: none;
color: #999999;
}
-->
</style>
</head>
<body>
<p>
<?php
$db_host = "localhost";
$db_username = "dengulefar_dk";
$db_password = "kongen";
$db = "dengulefar_dk";
$db = mysql_connect($db_host, $db_username, $db_password);
mysql_select_db($db);

$foresp = mysql_query("SELECT * FROM nyheder ORDER BY dato DESC LIMIT 0,2") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){

echo "<b>" .$data["overskrift"]. "<b> -";
echo date("j/n - Y", $data["dato"]);
echo "<br>" .$data["tekst"]. "<br><br>";
}
?>
</p>
<p><a href="nyhed.tilfoej.php" target="iframe">Tilf&oslash;j nyhed</a> </p>
</body>
</html>


Kommentar
Fra : præceptor


Dato : 16-05-07 17:50

Sludder - om igen:

<html><head>
<style type="text/css">
<!--
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
color: #999999;
}
body {
background-color: #000000;
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
a {
font-size: 11px;
color: #999999;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #999999;
}
a:hover {
text-decoration: underline;
color: #999999;
}
a:active {
text-decoration: none;
color: #999999;
}
-->
</style>
</head>
<body>
<p>
<?php
$db_host = "localhost";
$db_username = "dengulefar_dk";
$db_password = "kongen";
$db_dbname = "dengulefar_dk";
$db = mysql_connect($db_host, $db_username, $db_password);
mysql_select_db($db_dbname, $db);

$foresp = mysql_query("SELECT * FROM nyheder ORDER BY dato DESC LIMIT 0,2") or die(mysql_error());
while($data = mysql_fetch_array($foresp)){

echo "<b>" .$data["overskrift"]. "<b> -";
echo date("j/n - Y", $data["dato"]);
echo "<br>" .$data["tekst"]. "<br><br>";
}
?>
</p>
<p><a href="nyhed.tilfoej.php" target="iframe">Tilf&oslash;j nyhed</a> </p>
</body>
</html>


Kommentar
Fra : Kokane


Dato : 16-05-07 19:42

Hej igen,
endnu en gang mange tak for hjælpen.

Nu ser det ud til at filen "nyhed.vis.php" virker, men jeg tror der er lidt problemer med "nyhed.tilfoej.php"

Jeg har prøvet at rette filen "nyhed.tilfoej.php" så den "ligner" "nyhed.vis.php", men det virker desværre ikke.

Koden ser således ud:

<html><style type="text/css">
<!--
body,td,th {
   font-family: Arial, Helvetica, sans-serif;
   font-size: 11px;
   color: #999999;
}
body {
   background-color: #000000;
   margin-left: 0px;
   margin-top: 0px;
   margin-right: 0px;
   margin-bottom: 0px;
}
a {
   font-size: 11px;
   color: #999999;
}
a:visited {
   color: #999999;
}
a:hover {
   color: #999999;
}
a:active {
   color: #999999;
}
-->
</style>
<body>
<?php
$db_host = "localhost";
$db_username = "dengulefar_dk";
$db_password = "kongen";
$db = "dengulefar_dk";

<?
if(isset($_POST["kodeord"])&&$_POST["kodeord"]=="dgf"){
echo "<b>Nyheden er hermed tilføjet</br></div>";
} else {
echo "<b>Tilføj Nyhed</br>";
}

$db = mysql_connect($db_host, $db_username, $db_password);
mysql_select_db($db_dbname, $db);

$nyhed_dato = time();

$nyhed_overskrift = $_POST["nyhed_overskrift"];
$nyhed_tekst = $_POST["nyhed_tekst"];

if(!get_magic_quotes_gpc()){
$nyhed_overskrift = addslashes($nyhed_overskrift);
$nyhed_tekst = addslashes($nyhed_tekst);
}
mysql_query("INSERT INTO nyheder (dato, overskrift, tekst) VALUES ('$nyhed_dato', '$nyhed_overskrift', '$nyhed_tekst')");
?>
<form method="post" action="<? echo $PHP_SELF;?>">
<p><b class="style2">kodeord:</b><br>
<input type="password" name="kodeord">
<br>
<span class="style2"><b><br>
overskrift</b>:</span><br>
<input type="text" name="nyhed_overskrift">
<br>
<span class="style5"><br>
tekst:</span><br>
<textarea name="nyhed_tekst">her indtastes nyheden</textarea>
<BR>
<br>
<input type="submit" value="skriv">
</p>
</form>
</body>
</html>

Nogen der kan se om der er fejl?

Venlig hilsen
Kokane

Accepteret svar
Fra : præceptor

Modtaget 50 point
Dato : 16-05-07 22:14

Denne $db = "dengulefar_dk"; smuttede vist for dig. Den skulle have været $db_dbname = "dengulefar_dk";

og så forekommer der en overflødødig start tag <?

Kode
<html><head><style type="text/css">
<!--
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
color: #999999;
}
body {
background-color: #000000;
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
a {
font-size: 11px;
color: #999999;
}
a:visited {
color: #999999;
}
a:hover {
color: #999999;
}
a:active {
color: #999999;
}
-->
</style>
</head>
<body>
<?php
$db_host = "localhost";
$db_username = "dengulefar_dk";
$db_password = "kongen";
$db_dbname = "dengulefar_dk";

if(isset($_POST["kodeord"])&&$_POST["kodeord"]=="dgf"){
echo "<b>Nyheden er hermed tilføjet</br></div>";
} else {
echo "<b>Tilføj Nyhed</br>";
}

$db = mysql_connect($db_host, $db_username, $db_password);
mysql_select_db($db_dbname, $db);

$nyhed_dato = time();

$nyhed_overskrift = $_POST["nyhed_overskrift"];
$nyhed_tekst = $_POST["nyhed_tekst"];

if(!get_magic_quotes_gpc()){
$nyhed_overskrift = addslashes($nyhed_overskrift);
$nyhed_tekst = addslashes($nyhed_tekst);
}
mysql_query("INSERT INTO nyheder (dato, overskrift, tekst) VALUES ('$nyhed_dato', '$nyhed_overskrift', '$nyhed_tekst')");
?>
<form method="post" action="<? echo $PHP_SELF;?>">
<p><b class="style2">kodeord:</b><br>
<input type="password" name="kodeord">
<br>
<span class="style2"><b><br>
overskrift</b>:</span><br>
<input type="text" name="nyhed_overskrift">
<br>
<span class="style5"><br>
tekst:</span><br>
<textarea name="nyhed_tekst">her indtastes nyheden</textarea>
<BR>
<br>
<input type="submit" value="skriv">
</p>
</form>
</body>
</html>






Kommentar
Fra : Kokane


Dato : 17-05-07 13:32

Mange tak for hjælpen.

Jeg ved ikke helt om den fungere som den skal nu. Når jeg tilføjer en ny nyhed, så sletter den den gamle. Er det meningen? Hvis det er, hvordan laver man det sådan at den gemmer de seneste 5 nyheder?
Jeg har forsøgt at finde svaret på www.phpuniverset.dk, men uden held.

VH
Kokane

Godkendelse af svar
Fra : Kokane


Dato : 17-05-07 13:51

Det virker nu!!!
Tak for svarene præceptor.


Kommentar
Fra : præceptor


Dato : 18-05-07 01:45

kokane
Citat
Når jeg tilføjer en ny nyhed, så sletter den den gamle. Er det meningen? Hvis det er, hvordan laver man det sådan at den gemmer de seneste 5 nyheder?
Jeg har forsøgt at finde svaret på www.phpuniverset.dk, men uden held.


Nej, hvis du har oprettet tabellen som foreslået af ham der har strikket koden sammen, så vil den blive ved med at lægge nyt ind, og dermed vokser og vokser indholdet i din database.

Hvad nyhed.vis.php angår så er den tilrettelagt efter kun at vise de seneste to nyheder, og det tal kan du jo bare ændre i forespørgslen, så du får præcis det antal du ønsker.

således ser forespørgslen ud nu:
Kode
$foresp = mysql_query("SELECT * FROM nyheder ORDER BY dato DESC LIMIT 0,2") or die(mysql_error());


og der er der jo intet i vejen for at du kan ændre det til fx.:

Kode
$foresp = mysql_query("SELECT * FROM nyheder ORDER BY dato DESC LIMIT 0,5") or die(mysql_error());


Bortset fra denne ændring skal du naturligvis ikke ændre noget i nyhed.tilfoej.php, hvis det fungerer til din tiilfredshed, men rent pædagogisk vil jeg nu nok mene det burde ændres til noget i denne henretning:

Kode
<html><head><style type="text/css">
<!--
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
color: #999999;
}
body {
background-color: #000000;
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
a {
font-size: 11px;
color: #999999;
}
a:visited {
color: #999999;
}
a:hover {
color: #999999;
}
a:active {
color: #999999;
}
-->
</style>
</head>
<body>
<?php
$db_host = "localhost";
$db_username = "dengulefar_dk";
$db_password = "kongen";
$db_dbname = "dengulefar_dk";

if(isset($_POST["kodeord"])&&$_POST["kodeord"]=="dgf"){

$db = mysql_connect($db_host, $db_username, $db_password);
mysql_select_db($db_dbname, $db);

$nyhed_dato = time();

$nyhed_overskrift = $_POST['nyhed_overskrift'];
$nyhed_tekst = $_POST['nyhed_tekst'];

if(!get_magic_quotes_gpc()){
$nyhed_overskrift = addslashes($nyhed_overskrift);
$nyhed_tekst = addslashes($nyhed_tekst);
}

$query = "INSERT INTO `nyheder` (`id`, `dato`, `overskrift`, `tekst`) VALUES (0, '$nyhed_dato', '$nyhed_overskrift', '$nyhed_tekst');";
$foresp = mysql_query($query);
if (!$foresp) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $query;
die($message);
}
echo "<b>Nyheden er hermed tilføjet</b></div>";
} else {
echo "<b>Tilføj Nyhed</br>";
}
?>
<form method="post" action="nyhed.tilfoej.php">
<p><b class="style2">kodeord:</b><br>
<input type="password" name="kodeord">
<br>
<span class="style2"><b><br>
overskrift</b>:</span><br>
<input type="text" name="nyhed_overskrift">
<br>
<span class="style5"><br>
tekst:</span><br>
<textarea name="nyhed_tekst">her indtastes nyheden</textarea>
<BR>
<br>
<input type="submit" value="skriv">
</p>
</form>
</body>
</html>




Kommentar
Fra : præceptor


Dato : 18-05-07 13:02

Du skal forestille dig at dit script skal gennemkøres på to forskellige måder:
Dels når du skal taste data ind i formen,
og dels når formen er udfyldt og arbejdet skal udføres.

Når formen i første omgang skal udfyldes, skal alt det der med at sætte data ind i databasen springes over, for der er jo ikke noget at sætte ind i databasen førend formen er udfyldt.

Du kan bruge flg. linje til at skelne imellem hvornår formen skal udfyldes, og hvornår formen er udfyldt.

if(isset($_POST["kodeord"])&&$_POST["kodeord"]=="dgf"){

hvis formen er udfyldt og kodeord samtidig er udfyldt korrekt, så skal der fortsættes her, og dette afsnit vedvarer indtil der afsluttes med en venstrevendt krølleparentes.

I dette afsnit anbringes det scriptafsnit som tager sig af indsættelse af data i database

} else {

Hvis formen ikke var udfyldt eller hvis kodeordet var forkert, så fortsættes der her, og her kan vi for så vidt nøjes med at skrive en overskrift for udfyldning af form og derefter blot afslutte PHP scriptet og lade formudfyldningen foregå i html.

}

og ud fra denne forklaring kan du se, at scriptets ophavsmand ikke selv har opfyldt den struktur han egentlig lagde op til. Det er den struktur jeg har bragt på plads med den foreslåede ændring af scriptet.



Kommentar
Fra : Kokane


Dato : 21-05-07 15:16

Jeg tror det virker nu.
Mange tak for hjælpen præceptor.
Jeg ved stort set ingen ting om PHP, så det er derfor jeg er lidt tung og danse med.

Endnu engang....mange tak for hjælpen.

Kokane

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177423
Tips : 31962
Nyheder : 719565
Indlæg : 6407897
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste