Sponsor-Board.de

Normale Version: News wird nicht korrekt angezeigt.
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin Moin,

ich habe mich mal an einem ganz einfachen news System versuch was soweit auch funktioniert bis auf 3 Fehler.


Den oberen Eintrag habe ich direkt über phpmyadmin gemacht.
Der untere ist über das Formular erstellt worden.

http://i.imgur.com/gRB5ULl.png(!https)
index.php (Hier wird die News angezeigt)

PHP-Code:
<!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=iso-8859-1" />
<
title>Svens erstes Newssystem</title>
</
head>

<
body>

<?
php

require_once("config.php");

$query mysql_query("SELECT * FROM  `new` ORDER BY id DESC");

while(
$row mysql_fetch_assoc($query))
{
    
$articleid $row["id"];
    
$hl $row["headline"];
    
$text nl2br($row["text"]);
    
$from $row["author"];
    
$cdate $row["creatdate"];
    
    echo 
"<h2>{$hl}</h2>
    <h5>Geschrieben von: 
{$from} am {$cdate}</h5>
    
{$text}
    
    "
;
}

?>

</body>
</html> 


index.php (Hier soll die News über das Formular eingetragen werden)

PHP-Code:
<?php

require_once("../config.php");


if (isset(
$_POST["submit"]))
{
    
$hl $_POST["headline"];
    
$text $_POST["text"];
    
$from $_POST["from"];
    
$date date (Y-m-d);
    
    if(
hl != "" || $text != "" || $from != "")
    {
        
$query mysql_query("INSERT INTO new VALUES ('', '{$hl}', '{$text}', '{$from}', '{$date}')");
        echo 
"Artikel wurde erfolgreich eingestellt";
    }
    else
    {
         echo 
"Bitte fülle alle Felder aus!";
    }
}

?>


<!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=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<table width="600">
<form action="index.php" method="post">

<tr><td>Überschrift:</td><td> <input name="headline" type="text" /></td></tr>
<tr><td>Geschrieben von:</td><td> <input name="headline" type="text" /></td></tr>
<tr><td>Text:</td><td> <textarea name="text" cols="35" rows="10"></textarea></td></tr>
<tr><td></td><td><input name="submit" type="submit" value="Absenden" /></td></tr>


</form>
</table>
</body>
</html> 


Und so sieht es aus wenn es in der Datenbank eingetragen wurde über das Formular
http://i.imgur.com/hU1kuoU.png(!https)

Wo ist jetzt der Fehler das er die News nicht richtig einträgt ?

Lg Sven

<tr><td>Überschrift:</td><td> <input name="headline" type="text" /></td></tr>
<tr><td>Geschrieben von:</td><td> <input name="headline" type="text" /></td></tr>


name="headline" 2x?

Maurice schrieb:
<tr><td>Überschrift:</td><td> <input name="headline" type="text" /></td></tr>
<tr><td>Geschrieben von:</td><td> <input name="headline" type="text" /></td></tr>


name="headline" 2x?



Danke ist mir garnicht aufgefallen :/

So die Headline funktioniert jetzt...

Aber der Author und das Datum werden noch immer nicht angezeigt. Da vllt noch eine Idee ?

Nun ja du musst mal selber debuggen lernen. Das vorliegende Problem ist extrem simpel, da kommt man sofort dahinter, aber bei komplexeren Problemen ist das nicht mehr so einfach.

Du hättest dir zum Beispiel mal vor dem Speichern mit var_dump($_POST) anzeigen lassen können , was dir überhaupt an POST-Tupeln übermittelt wird. Dann wäre dir aufgefallen, dass from fehlt, und du hättest gewusst, der Fehler muss im Formular sein. Genauer, wahrscheinlich beim Feld für from, da andere Felder ja funktionieren. Dann hättest du dir das Feld angeschaut:

Code:
<tr><td>Geschrieben von:</td><td> <input name="headline" type="text" /></td></tr>

Und dir wäre hoffentlich aufgefallen: Oops, das Feld hat ja das name-Attribut "headline" anstatt "from". Fehler gefunden.

Also merke dir var_dump(), damit kannst du dir auch komplexe Variablen wie z.B. Arrays ausgeben lassen.

Zweiter Fehler:

Code:
$date = date (Y-m-d);

Überlege dir, was Y-m-d sein soll? Ein mathematischer Term, eine Berechnung? Die Konstante Y minus der Konstanten m minus der Konstante d? Das ist, was dort steht. Strings müssen immer entsprechend gekennzeichnet werden. Google nach "php date", das erste was du findest ist: [Link: Registrierung erforderlich]
Dort steht:

Code:
string date ( string $format [, int $timestamp = time() ] )

"string $format", das Format wird also als String angegeben. Daher muss es heißen:

Code:
$date = date ('Y-m-d');


Merke: [Link: Registrierung erforderlich] ist deine Referenz für PHP-Befehle, Keywords, etc. Bei dem Link oben findest du auch gleich die Bedeutungen der Zeichen im Format-String.

Übrigens: Es macht viel Spaß und hat einen hohen Lerneffekt, eine Art Mini-Framework/CMS selber zu schreiben. Heutzutage ist das aber außer aus den beiden genannten Gründen nicht mehr sinnvoll. Nutze vorgefertigte Frameworks wie Laravel, Symfony etc. oder vorgefertigte Open Source-CMS wie Wordpress, Joomla usw. wenn du eine Website entwickeln willst, die wirklich öffentlich einsehbar ist / genutzt werden soll.

Referenz-URLs