IF Frage falsch oder anderer Fehler

kosovafan

Erfahrenes Mitglied
Hallo,

ich bin dabei ein wenig mit Jquery zu experimentieren, bietet Funktionen um viele Informationen auf wenig Platz unter zu bringen. Ich bin mir nicht sicher wo der Fehler liegt, liegt es an PHP und die IF Fragen, an Jquery oder einfach falsch geschrieben.
Falls der Thread verkehrt ist, bitte in die entsprechende Kategorie verschieben.

Ich nutze das Tab mit der Blog Artikel eingeteilt werden. Ich habe das Problem, dass das Formular unter jeden Bereich mit angezeigt wird, obwohl es nur bei Ihre Meinung erscheinen sollte.

Ich würde mich über Tipps freuen.

MFG

Anhang:
Bild soll.png sollte den optimalen Zustand zeigen
Bild aktuell.png ist der aktuelle Stand
PHP / HTML Code

PHP:
<?php
require_once ("db.php");
require_once ("functions.php");
require_once ("arrays.php");
$zufall = array_rand($zitat);
$name = "";
$email = "";
$error = "";
$id = ((!empty ($_GET['id'])) ? $_GET['id'] : '');

if(isset($_GET['id']) && $_GET['id'] != '') {

 // Check the article is in Database
 $query = $db->prepare("SELECT id FROM bloggen WHERE id=".(int) $id);
 $query->execute(array());
 $rows = $query->fetchColumn();
 
// Artikel nicht vorhanden, erfolgt entsprechende Ausgabe
 if(!$rows) {
    echo "
 <!DOCTYPE html>
 <html lang=\"de\">
 <head>
 <title>Silvio Siefke</title>
 <meta charset=\"utf-8\">
 <meta name=\"description\" content=\"Sie können Inhalt erwarten, garantieren kann ich diese aber nicht.\">
 <meta name=\"robots\" content=\"noindex, nofollow\"> 
 <link rel=\"stylesheet\" href=\"../inc/style.css\" type=\"text/css\">
 </head>
 <body>
 <div id=\"header\"><a href=\"../index.html\" title=\"Silvio Siefke\" id=\"logo\">Startseite</a></div>
 <div id=\"content\"> 
 <p>Der gewünschte Artikel ist nicht vorhanden. Bitte schauen Sie in der <a href=\"http://silviosiefke.de/blog\">Übersicht</a></p>
</div>
</body>
</html>";
 
 $row = null;
 $query = null;
 $db = null;

} else

// Artikel ist in der Datenbank
{
  $sql = "SELECT id, strftime('%d.%m.%Y', date) as date, autor, title, teaser, content FROM bloggen WHERE id=".(int) $id;
  $query = $db->prepare($sql);
  $query->execute();

   // Datenbank ist erreichbar?
  if(!$query) {
  die ("<p>Die Datenbank ist zurzeit nicht erreichbar</p>");
 }

 // Wenn die Datenbank erreichbar ist, wird der Artikel ausgegeben. 

 while ($row = $query->fetch(PDO::FETCH_OBJ))
  {
 echo "
<!DOCTYPE html>
<html lang=\"de\">
<head>
<title>Blog :: Silvio Siefke :: " . $row->title . "</title>
<meta charset=\"utf-8\">
<meta name=\"description\" content=\"Sie können Inhalt erwarten, garantieren kann ich diese aber nicht.\">
<meta name=\"robots\" content=\"noindex, nofollow\"> 
<link rel=\"stylesheet\" href=\"../inc/style.css\" type=\"text/css\">
<script src=\"../inc/ext/jquery-1.8.3.min.js\"></script>
<script src=\"../inc/ext/jquery-ui-1.9.2.custom.min.js\"></script>
<script>
 $(function() {
 $(\".tabmenu\").removeClass(\"hidden\");
 $(\".kurz\").removeClass(\"hidden\");
 $(\".over\").addClass(\"hidden\");
 $(\".tabs\" ).tabs();
});
</script>
</head>\n
<body>\n

<div id=\"header\">
 <p><a href=\"../index.html\" title=\"Silvio Siefke\" id=\"logo\">Startseite</a></p>
 <div class=\"cite\">
 <p>$zitat[$zufall]</p>
 </div>
</div>

<div id=\"content\">

<div id=\"bloghead\">
 <h1>".(htmlspecialchars($row->title,ENT_QUOTES,"UTF-8"))."</h1>
 <p class=\"date\">Artikel wurde am $row->date veröffentlicht</p> 
</div>

<div id=\"tabs\" class=\"tabs\">
 
 <ul class=\"tabmenu hidden\">
  <li><a href=\"#kurz\">Einleitung</a></li>
  <li><a href=\"#lang\">Artikel</a></li>
  <li><a href=\"#kommentare\">Kommentare</a></li>
  <li><a href=\"#meinung\">Ihre Meinung</a></li>
 </ul>
 
 <p class=\"cl\"></p>

 <div id=\"kurz\" class=\"box hidden\">
  <p>".$row->teaser."</p>
 </div>
 
 <div id=\"lang\" class=\"box\">
  ".(html_entity_decode($row->content, ENT_QUOTES, "UTF-8"))."
 </div>";

 // Comments
 if (isset ($_POST['submit'])) {

  if (isset ($_POST['date']) && is_numeric($_POST['date'])) {
   $posted = intval($_POST['date']);
   $sendezeit = (time() - $posted);
   if ($sendezeit < 10 || $sendezeit > 36000)
   $error = $error . " <p>Spam möchte ich nicht in der Mailbox haben</p> ";
  }

  if (isset ($_POST['name'])) {
   if ($_POST['name'] != '') {
   $name = save($_POST['name']);
   }
    else {
    $error = $error . "<h3 style=\"color: red;\">Wie ist Ihr Name?</h3>";
   }
 }

 if (isset ($_POST['email'])) {
  if ($_POST['email'] != '') {
  $email = save($_POST['email']);
  }
  else {
  $error = $error . "<h3 style=\"color: red;\">Haben Sie eine Email Adresse?</h3>";
  }
 }

 if (isset ($_POST['inhalt'])) {
  if ($_POST['inhalt'] != '') {
  $inhalt = save($_POST['inhalt']);
  }
  else {
  $error = $error . "<h3 style=\"color: red;\">Wollten Sie ein Kommentar schreiben?</h3>";
  }
 }

 if ($error == '') {
  $sql = "INSERT into `comments` (date, blogid, email, name, inhalt)
          VALUES (datetime(), ".$_GET['id'].", :email, :name, :inhalt)";
  $write = $db->prepare($sql);

  if(!$write) {
   die ("<div class=\"Kommentare\"><p>Die Datenbank ist nicht erreichbar!</p></div>");
  }

  $write->bindValue(':inhalt', $inhalt);
  $write->bindValue(':email', $email);
  $write->bindValue(':name', $name);
  $write->execute();
  echo "<h4>Der Kommentar wurde eingetragen!</h4>";

 } else {
	 echo $error;
 }
}

// Check is comment for Article in Database
$query = $db->prepare("SELECT blogid FROM `comments` WHERE blogid=" .(int)$id );
$query->execute(array());
$rows = $query->fetchColumn();

echo "\n<div id=\"kommentare\">\n";
echo "<h1 class=\"over\">Kommentare</h1>";

if(!$rows) 
{

echo 
"<div class=\"arrow_box\">
  <blockquote><p>Der Artikel scheint nicht von Interesse</p></blockquote>
 </div>
</div>
";
}

else
{
    $sql = "SELECT inhalt, strftime('%d.%m.%Y', date) as date, blogid, email, name FROM `comments` WHERE blogid =" . (int) $id;
	$query = $db->prepare($sql);
	$query->execute();

	if(!$query) {
		die ("<div id=\"Kommentare\"><div class=\"arrow_box\"><p>Die Datenbank ist zurzeit nicht erreichbar!</p></div></div>");
	}



	while ($row = $query->fetch(PDO::FETCH_OBJ)) {
	 echo " <div class=\"arrow_box\">
	 <blockquote>
	 <p>" .htmlentities($row->name, ENT_QUOTES, "UTF-8") . " am " . $row->date . " </p>\n
	 <p>" . nl2br(htmlentities($row->inhalt, ENT_QUOTES, "UTF-8")) . "</p>
	 </blockquote>
	 </div>";
	}
}
echo "</div>\n";
echo "
<div id=\"meinung\">
<h1 class=\"over\">Ihre Meinung</h1>
 <form action=\"\" method=\"post\" class=\"commentsform\">
  <fieldset>
   <div class=\"formtxt\">
   <p><label>Name</label></p>
   <p><input type=\"text\" name=\"name\" class=\"text\" value=\"$name\"></p>
   <p><label>Email</label></p>
   <p><input type=\"text\" name=\"email\" class=\"text\" value=\"$email\"></p>
   </div>

   <div class=\"formtxtarea\">
   <p><label>Kommentar</label></p>
   <p><textarea class=\"textarea\" cols=\"18\" rows=\"10\" name=\"inhalt\"></textarea></p>
   </div>
  </fieldset>

  <fieldset>
   <input type=\"hidden\" name=\"date\" id=\"date\" value=time()>
   <input type=\"hidden\" name=\"id\" value=\"\">
   <p><input type=\"submit\" class=\"submit\" name=\"submit\" value=\"Posten\"></p>
  </fieldset>
</form>
</div>
</div>
</div>
</body>
</html>";
}
}
}
$row = null;
$query = null;
$db = null;
?>
 

Anhänge

  • soll.png
    soll.png
    51,1 KB · Aufrufe: 7
  • aktuell.png
    aktuell.png
    57,7 KB · Aufrufe: 6
Wenn ich das momentan alles richtig überblicke liegt es an folgender Zeile bzw. Zeilen.
PHP:
echo "
    <div id=\"meinung\">
    <h1 class=\"over\">Ihre Meinung</h1>
     <form action=\"\" method=\"post\" class=\"commentsform\">
      <fieldset>
       <div class=\"formtxt\">
       <p><label>Name</label></p>
       <p><input type=\"text\" name=\"name\" class=\"text\" value=\"$name\"></p>
       <p><label>Email</label></p>
       <p><input type=\"text\" name=\"email\" class=\"text\" value=\"$email\"></p>
       </div>

       <div class=\"formtxtarea\">
       <p><label>Kommentar</label></p>
       <p><textarea class=\"textarea\" cols=\"18\" rows=\"10\" name=\"inhalt\"></textarea></p>
       </div>
      </fieldset>

      <fieldset>
       <input type=\"hidden\" name=\"date\" id=\"date\" value=time()>
       <input type=\"hidden\" name=\"id\" value=\"\">
       <p><input type=\"submit\" class=\"submit\" name=\"submit\" value=\"Posten\"></p>
      </fieldset>
    </form>
    </div>
    </div>
    </div>
    </body>
    </html>";

Dieses echo ist an keine Bedingung geknüpft und wird deshalb immer angezeigt.

Mit freundlichen Grüßen
Leon Bergmann
 
Zuletzt bearbeitet:
Hallo,

es war ein div Container mit falscher ID geschrieben, zumindest funktioniert das jetzt. Jetzt frage ich mich nur warum die Artikel nicht nach Datum sortiert ausgegeben werden. Ich habe drei Artikel zurzeit, einer am 5.5.2012, einer am 30.11.2012 und der letzte vom 1.12.2012. Aber die Ausgabe erfolgt 30.11.2012, 5.5.2012, 1.12.2012. Wie kann man den richtig sortieren? Ich nutze Sqlite, deshalb auch der Befehl strftime.

Hat jemand eine Idee?

MFG
Silvio
 
Also so wie das sehe muss du bei der query die die Artikel aus deiner DB nur ein
SQL:
order by date ASC
http://www.1keydata.com/de/sql/sql-order-by.php
anhängen. Um mir aller dings ganz sicher zu sein wäre es hilfreich wenn du einmal die query posten köntest die die Artikel aus deiner DB läd.



P.S. Dein Kommentarbereich funktioniert auch nicht.

Bei mir ist die Reinfolge wie folgt:

1) Das Tor Netzwerk (01.12.2012)
2) Stop ACTA (05.05.2012)
3) Leistungsschutzrecht (30.11.2012)

Mit freundlichen Grüßen
Leon Bergmann
 
Zuletzt bearbeitet:
Hallo,

die Abfrage

PHP:
      <?php
      require_once ("db.php");
      
      $query = $db->prepare("SELECT 
      id, 
      title, 
      strftime('%d-%m-%Y', date) as date
      FROM 
      bloggen 
      ORDER BY 
      date LIMIT 0,5" );
      
      if (!$query) {die("Execute query error, because: " . $db->errorInfo());}
      $query->execute();
      while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
      echo "<p><a href=\"/blog/article-".$row['id'].".html\" title=\"".(htmlentities($row['title'], ENT_QUOTES, "UTF-8"))."\">".(htmlentities($row['title'], ENT_QUOTES, "UTF-8"))."</a></p>\n";
      }
      
      $row = null;
      $query = null;
      $db = null;
      ?>

Könntest du mir sagen was im Kommentarbereich nicht funktioniert?

Danke und MFG
Silvio
 
So für die Query haben wir erstmal folgendes
SQL:
SELECT id, title, strftime('%d-%m-%Y', date) as date
FROM bloggen 
ORDER BY date ASC LIMIT 0,5
das einzigste was fehlt war das ASC.

So und als ich auf deiner Seite war konnte ich keinen Kommentar bei den Artikel hinterlassen. Vielleicht liegt das daran das ich FireFox nutze und du Opera?
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

kurz zu den Firefox, ist der Posten Button verschoben? Bei mir ging es schon mit Firefox, allerdings nur mit Enter. Wie spreche ich den jetzt den Firefox an?

Das ASC führt aber zu keiner Veränderung.


Danke und MFG
Silvio
 
Für den FireFox musst du nur deinen css-Klasse submit anpassen, konkret geht es um das
CSS:
margin-top: -4em;

so folgendes das ist aber nur eine Vermutung, date ist von vielen datenbanken ein reserviertes Wort, deshalb könnte es sein das es nicht so interpretiert wird wie man sich das vorstellt.

Versuch mal bitte folgende Query
SQL:
SELECT id, title, strftime('%d-%m-%Y', `date`) AS `date`
FROM bloggen 
ORDER BY `date` ASC LIMIT 0,5
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

habe ich gemacht, habe es auf -2 gesetzt, sollte jetzt laufen. Ich muss mal nachdenken, wie ich die Email erzwingen kann, denn ich habe gerade gesehen das Sie den Beitrag ohne Email schreiben konnten.

Ja die Sqlite hat viele Vorteile, aber bei manchen Sachen bringt diese ein zu verzweifeln.

MFG
Silvio
 
Zurück