Abfrage und Darstellung mehrerer Tabellen

Hallo,

ah PHP fragt die Datenbank ob ein Eintrag vorhanden ist, wenn ja dann gibt er diesen komplett wieder, also mit kompletter Bedingung und wenn nein dann muss die neue Bedingung ohne den Bildeintrag definiert werden.

Ich danke recht herzlich, jetzt habe ich das Prinzip verstanden. Ich muss also bei der IF Anfrage komplett wiedergeben was er machen soll und das gleiche bei else. Ich hatte das immer nur mit der Zeile des Bildes betreffend probiert. Ist jetzt logisch das es nicht geklappt hat.

Eine Frage habe ich noch, ich habe viele Scripte gesehen, die nutzen if, else, elseif woran unterscheiden die sich den wirklich. Oder ist elseif bei Verschachtelungen wichtig?

Silvio
 
Hallo,

danke, sicher lesen hilft, aber wie jetzt mit diesen einfachen Wörtern ist das Verständnis oft angenehmer. Manche Texte auf php.net finde ich ein wenig overkilled, gerade die Beispiele von Usern verwirren einen oft.

MFG
Silvio
 
Hallo,

kann ich noch einmal etwas fragen. Ich habe erst einmal probiert in einen extra File die Datenbank Funktionen SELECT, INSERT, UPDATE und DELETE zu testen. Das hat soweit auch geklappt. Selbst mit den ckeditor hat das im zweiten Versuch gleich geklappt. Dann ging es an mein Blog Script, aber leider klappt hier nichts mehr. Ich habe jetzt verschiedene Sachen durchgetestet, aber ohne Log bin ich wirklich aufgeschmissen.


Das Script:

PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once "inc/include.html";
$blogid = ((!empty($_GET['id'])) ? $_GET['id'] : '' );

if(mysqli_error($DB)){
echo 'Fehler: ' . mysqli_error($DB);
}else{

if (isset($_POST['submit']) && isset($_POST['name']) && isset($_POST['mail'])&&
isset($_POST['inhalt']) && $_POST['name'] != '' && $_POST['mail'] != '' &&
$_POST['inhalt'] != '') {

$sql =
"
INSERT INTO
comments
SET
inhalt='{$_POST['inhalt']}',
date=NOW(),
blogid=$blogid,
email='{$_POST['email']}',
name='{$_POST['name']}'
";

$result = mysqli_query($DB, $sql);
echo 'SQL: ' . $sql;
echo mysqli_error($DB);
}

$sql = "
SELECT
blogid,
DATE_FORMAT(date,'%d.%m.%Y, %H:%I') as date,
inhalt,
name
FROM `comments`
WHERE blogid =".(int)$blogid;

if(!$DB_result = $DB->query($sql))
{
echo 'Fehler('.$DB->errno.'):'.$DB->error;
}else
{
while($row = mysqli_fetch_array($DB_result))
{
echo "<div class=\"comments\">";
echo "<ul>";
echo "<li> Kommentar von ".$row['name']." am ".$row['date']." Uhr </li>";
echo "<li>".$row['inhalt']."</li>";
echo "</ul>";
echo "</div>";
}
}
}
$DB->close();
?>


Vielleicht hat jemand Rat? Vielen Dank. Den kompletten Sourcecode der betreffenden Datei findet Ihr unter http://silviosiefke.de/tmp/blogdetail.txt .

MFG
Silvio
 
Auf Anhieb find ich den Insert etwas selstam:
SQL:
INSERT INTO
comments
SET
inhalt='{$_POST['inhalt']}',
date=NOW(),
blogid=$blogid,
email='{$_POST['email']}',
name='{$_POST['name']}'

Der sollte eigentlich so aussehen:
SQL:
INSERT INTO
comments
(inhalt,date,blogid,email,name)
VALUES('".$_POST['inhalt']."','NOW()','".$_POST['email']."','".$_POST['name']."')
 
Hallo,

Maniac sorry das ich dich wahrscheinlich immer nerve. Nimm es mir nicht übel, ich versuche es vorher wirklich selber mit Hilfe von Google zu finden, aber ohne Log bleiben mir als Anfänger nicht viele Möglichkeiten.

Diesen INSERT Befehl habe ich in einen anderen Script auch genutzt und normal arbeitet das wie du geschrieben hast. Aber jetzt tut er das nicht. Ich hatte den INSERT Befehl mit SET geschrieben, weil ich im Forum etwas fand von mysqli_real_escape_string, den im Formular muss ich ja eine Sicherung vor gefährlichen Code einbauen.

Vielleicht liegt es an der $blogid Variable, den die wird/sollte im Feld Blogid eingetragen werden, damit die Comments auseinander gehalten werden können. Die Blogid kommt von der Übertragung auf die Detailseite ($_GET['id'].

PHP:
$sql =
"
INSERT INTO
comments
(inhalt,date,blogid,email,name)
VALUES('{$_POST['inhalt']}', NOW(), '$blogid', '{$_POST['email']}', '{$_POST['name']}')";

Logeinträge erhalte ich keine von PHP, nur Mysql schreibt:

Code:
110506 11:07:08	    4 Connect	root@localhost on bloggen
4 Query	SELECT
id,
DATE_FORMAT(date,'%d.%m.%Y, %H:%I') as date,
autor,
title,
content,
bild
FROM `entrys`
WHERE id =3
4 Query	SELECT
blogid,
DATE_FORMAT(date,'%d.%m.%Y, %H:%I') as date,
inhalt,
name
FROM `comments`
WHERE blogid =3
110506 11:07:09	    4 Quit	
110506 11:07:43	    5 Connect	root@localhost on bloggen
5 Query	SELECT
id,
DATE_FORMAT(date,'%d.%m.%Y, %H:%I') as date,
autor,
title,
content,
bild
FROM `entrys`
WHERE id =0
5 Query	SELECT
blogid,
DATE_FORMAT(date,'%d.%m.%Y, %H:%I') as date,
inhalt,
name
FROM `comments`
WHERE blogid =0
5 Quit

Man kann hier sehen, das er den Eintrag erst vernünftig aufruft und dann nach Absenden des Comments Formular versucht die ID 0 abzufragen.


MFG
Silvio
 
Arbeitest du mit einem Testsystem oder lädst du immer alles auf deinen Webspace?
Wenn du keine Logs erhältst, liegt es an den Einstellungen.

Daher empfehle ich auf deinem Rechner eine Testumgebung einzuichten, wie XAMPP, Zend Server CE, da haste nen Webserver mit PHP,MySQL und was so dazugehört. Zum konfigureiren is der Zend besser als XAMPP.
 
Hallo,

ich nutze Nginx und PHP auf meinen lokalen Rechner! Ich habe wirklich nichts in Logs stehen, keine Error Messages, keine Notice Messages und auch von Mysql erhalte ich nur die normalen Querys. Die Logs sind angestellt, auf mein lokalen System in PHP.

error_reporting = E_ALL & ~E_DEPRECATED (php.ini = Development Value)

Wie bietet Zend auch schon Webserver an? Ich kenne Zend nur vom Framework.

Auf meinen Server lade ich nur Dateien hoch, wenn ich euch zum Beispiel den Code der kompletten Datei zeigen möchte.


MFG
Silvio
 
Ja ich selbst entwickle auch viel mit dem Zend-Framework, deswegen hab ich mir auch den Zend-Server installiert und möchte ihn nicht mehr missen.

was ist denn jetzt genau dein Problem was du noch hast? es wird in deinen vorherigen Posts nicht ersichtlich.
 
Zurück