|
| Nyheds system Fra : Kokane | Vist : 1107 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øj nyhed</a> </p>
</body>
</html>
Venlig hilsen
Kokane
| |
|
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ø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ø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ø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ø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.
| |
|
|