Hallo liebes Forum, ich hab mich hier angemeldet, da ich über die suche nichts direkt gefunden habe jedoch ein Problem habe, das mir gerade ein bisschen kopfzerbrechen bereitet!
und zwar hatte ich ein News Script geschrieben, zunächst mit der mysqli klasse.
news.tpl sieht so aus:
PHP-Code:
<fieldset>
<legend>News</legend>
<label>
<?php if (count($data['News'])) {
foreach ($data['News'] as $News) { ?>
<h2><?php echo htmlspecialchars($News['Titel']); ?></h2>
<div id="newsheader">News vom <?php echo htmlspecialchars($News['Datum']); ?></div>
<p>
<?php echo nl2br(htmlspecialchars($News['Inhalt'])); ?>
</p>
<?php if (count($News['Links'])) { ?>
<div class="links">
<font size="1">Links:
<ul>
<?php foreach ($News['Links'] as $Link) { ?>
<li><a href="<?php echo $Link['URL']; ?>" target="_blank"><?php echo htmlspecialchars($Link['Beschreibung']); ?></a></li>
<?php } ?>
</ul>
</font>
</div>
<?php } else { ?>
<p class="info">
Keine Links vorhanden.
</p>
<?php } ?>
<?php }
} else { ?>
<p class="info">
Es sind keine News vorhanden.
</p>
</label>
</fieldset>
<?php } ?>
news.php sah so aus:
PHP-Code:
<?php
$ret = array();
$ret['filename'] = 'news.tpl';
$ret['data'] = array();
$sql = 'SELECT
*
FROM
News
ORDER BY
Datum DESC';
if (!$result = $db->query($sql)) {
return $db->error;
}
$News = array();
$sql = 'SELECT
URL,
Beschreibung
FROM
News_Link
WHERE
NewsID = ?';
if (!$stmt = $db->prepare($sql)) {
return $db->error;
}
while ($row = $result->fetch_assoc()) {
$stmt->bind_param('i', $row['ID']);
if (!$stmt->execute()) {
return $stmt->error;
}
$Links = array();
$stmt->bind_result($URL, $Beschreibung);
while ($stmt->fetch()) {
$Links[] = array('URL' => $URL,
'Beschreibung' => $Beschreibung);
}
$row['Links'] = $Links;
$News[] = $row;
}
$stmt->close();
$result->close();
$ret['data']['News'] = $News;
return $ret;
?>
Dies funktionierte einwandfrei..
nun ist auf dem server der seite die mysqli extension nicht aktiviert und kann auch nicht aktiviert werden, weshalb ich die ganze seite mit mysql_connect umgeschrieben habe. hat auch alles geklappt bis auf die news ausgabe:
news.php sieht gerade so aus:
PHP-Code:
<?php
$ret = array();
$ret['filename'] = 'news.tpl';
$ret['data'] = array();
$sql = 'SELECT
*
FROM
News
ORDER BY
Datum DESC';
$result = mysql_query ($sql);
if (!$result) {
return mysql_error;
}
$News = array();
while ($row = mysql_fetch_assoc($result)) {
$News[] = array('ID' => $row['ID'],
'Titel' => $row['Titel'],
'Datum' => $row['Datum'],
'Inhalt' => $row['Inhalt']);
$id = $row['ID'];
$sql = "SELECT
URL,
Beschreibung
FROM
News_Link
WHERE
NewsID = '$id'";
$stmt = mysql_query($sql);
if (!$stmt) {
return mysql_error;
}
$Links = array();
while ($row = mysql_fetch_assoc($stmt)) {
$Links[] = array('URL' => $row['URL'],
'Beschreibung' => $row['Beschreibung']);
$row['Links'] = $Links;
$News[] = $row;
}
}
$ret['data']['News'] = $News;
return $ret;
?>
jedoch wird hier keine korrekte newsausgabe ausgespuckt.
es steht immer einmal der news eintrag ( titel, datum, inhalt ) und dann bei links:
Notice: Undefined index: Links in C:\xampp\htdocs\UrbanVocalists02\templates\news.tp l on line 26
Keine Links vorhanden.
danach kommt eine news wo titel, datum, inhalt als undefined index angegeben wird und nun aber die passenden links zu der news darüber stehen.
ich spiel nun schon seit ein paar stunden damit rum, finde jedoch den fehler nicht und hab auch keinen hinweis im internet gefunden!
meine hoffnung nun: weiß jemand was falsch ist? warum wird nicht einmal die passende news mit den dazugehörigen links ausgespuckt?
vielen dank schonmal fürs lesen und hoffentlich für eine lösung!
gruß plutos
edit: ich hoffe das ich hier im richtigen unterforum bin, da ich in den reinen php unterforum nichts zu datenbank verbindungen fand, und es hier ja genau darum geht, das er die zweite abfrage mit der passenden id macht und das in das array speichert. wenns falsch ist bitte verschieben :/