• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Schrift aus der Datenbank auslesen ins Tielfeld?

Hinweis: Datenbanken - Warum soll ich nicht SELECT * schreiben?.

Kannst du mal deinen Code im Zusammenhang zeigen? Zudem fehlt noch etwas wie:

PHP:
$row = mysql_fetch_assoc($umfrage);

Ebenfalls wichtig: PHP: SQL Injection - Manual.

Der komplette Code könnte berichtigt so aussehen:

PHP:
<?php
$sql = "SELECT `kurztitel` FROM `umfragen` WHERE `id` = " . intval($id);
$umfrage = mysql_query($sql) OR die (mysql_error());

$row = mysql_fetch_assoc($umfrage);
?>

<title><?php echo $row['kurztitel']; ?></title>
 
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
[COLOR="#ff0000"]<title><?php echo $row['kurztitel']; ?></title>[/COLOR]
<link rel="stylesheet" type="text/css" href="styles.css" />
</head>
<body>
<?php
//verbindung zur datenbank herstellen
require_once('dbconnect.php');


##### Dauer der IP-Sperre
$sperrdauer = 'INTERVAL 16660 HOURS';


switch($_GET['page']) {
//voting eintragen
case 'count':


echo '<div id="wrapper-border">';

[COLOR="#ff0000"]$sql = "SELECT `kurztitel` FROM `umfragen` WHERE `id` = " . intval($id);
$umfrage = mysql_query($sql) OR die (mysql_error());
$row = mysql_fetch_assoc($umfrage);[/COLOR]

	//veraltete ip-sperren loeschen
	$sql = "DELETE FROM votes WHERE DATE_SUB(NOW(), ".$sperrdauer.") > datum";
	mysql_query($sql);

	$id =intval( $_GET['id']);
	if(!empty($id) && $id != 0) {
		//antwort auslesen
                $sql = "SELECT * FROM antworten WHERE id = '".$id."'";
		$antwort = mysql_query($sql);
		$ant = mysql_fetch_array($antwort);
		//umfrage auslesen
		$sql = "SELECT * FROM umfragen WHERE id = '".$ant['umfrage']."'";
		$umfrage = mysql_query($sql);

		$row = mysql_fetch_array($umfrage);
		//pruefen ob umfrage freigegeben ist
		if($row['freigabe'] == 1) {

			//pruefen ob ip-sperre vorliegt
			$ipStop = false;
			$ip = $_SERVER['REMOTE_ADDR'];
			$sql = "SELECT * FROM votes WHERE ip = '".$ip."'";
			$sperren = mysql_query($sql);
			if(!empty($sperren)) {
				while($ips = mysql_fetch_array($sperren)) {
					if($ips['antwort'] == $id) $ipStop = true;
				}
			}

			//wenn ja, sperren
			if($ipStop) {
				echo '<p class="fehler">Sie haben bereits für diese Antwort abgestimmt.</p><a class="button" href="umfrage-'.$ant['umfrage'].'.html">OK</a>';
			} else {
				//wenn nein, neue sperre eintragen und vote zaehlen
				$sql = "INSERT INTO votes (ip,datum,antwort) VALUES ('".$ip."',NOW(),'".$id."')";
				mysql_query($sql);
				$newvote = $ant['votes'] + 1;
				$sql = "UPDATE antworten SET votes = '".$newvote."' WHERE id = '".$id."'";
				mysql_query($sql);
				echo '<h1 class="titel">Ihre Stimme wurde gezählt.</h1><a class="button" href="umfrage-'.$ant['umfrage'].'.html">OK</a>';
			}

		} else {
			echo '<p class="fehler">Diese Umfrage ist nicht freigegeben!</p>';
		}
	} else {
		echo '<p class="fehler">Die Umfrage konnte nicht gefunden werden.</p>';
	}

	echo '</div>';


.............
Ende


	//freigegebene umfragen aus Datenbank holen
	$sql = "SELECT * FROM umfragen WHERE freigabe = 1";
	$umfrage = mysql_query($sql);
	$umfrageVorhanden = false;

	//html ausgeben
	echo '<div id="wrapper"><h1 class="titel-border">Für was wollen Sie voten?</h1>';
	//liste der umfragen erzeugen
	if(!empty($umfrage)) {
		while($row = mysql_fetch_array($umfrage)) {
			if($row['freigabe'] == 1) {
				$umfrageVorhanden = true;
				echo '<p class="selection"><a href="umfrage-'.$row['id'].'.html">'.$row['kurztitel'].'</a></p>';
			}
		}
		if(!$umfrageVorhanden) echo '<p class="selection">Es sind keine Umfragen vorhanden.</p>';
	} else {
		echo '<p class="selection">Es sind keine Umfragen vorhanden.</p>';
	}
	echo '</div>';

break;
}#end switch
?>
<p id="impressum"><a href="index.html">Startseite</a></p>
</body>
</html>
 
Zuletzt bearbeitet:
Bitte formatiert posten!

Wie soll die Ausgabe auch funktionieren, wenn die Datenbankfrage nach der Ausgabe erfolgt!?

Bitte in der Entwicklungsphase stets
Code:
<?php
error_reporting(E_ALL);
an den Anfang der Datei schreiben, denn damit fallen selbst solche logischen Fehler auf.
 
Ein bisschen Verständis für das, was du tust, solltest du schon mitbringen. Das Script wird von oben nach unten abgearbeitet. Woher soll PHP eine Variable kennen, die du erst einige Zeilen später erzeugst?

Und bitte, wie gesagt, error_reporting hochschrauben.
 
Achso nur wie soll ich das jetzt machen ?


Code:
switch($_GET['page']) {
//voting eintragen
case 'count':


echo '<div id="wrapper-border">';

$sql = "SELECT `kurztitel` FROM `umfragen` WHERE `id` = " . intval($id);
$umfrage = mysql_query($sql) OR die (mysql_error());
$row = mysql_fetch_assoc($umfrage);
  {
[COLOR="#ff0000"]    echo "<title>".$row['kurztitel']."</title>";[/COLOR]
  }

	//veraltete ip-sperren loeschen
	$sql = "DELETE FROM votes WHERE DATE_SUB(NOW(), ".$sperrdauer.") > datum";
	mysql_query($sql);

	$id =intval( $_GET['id']);
	if(!empty($id) && $id != 0) {
		//antwort auslesen

So gehts leider auch nicht
 
Ich denke, du setzt die Variable $id nie, weshalb die Query zwar korrekt ausgeführt wird, aber 0 Ergebnisse zurückliefert.

Um auch bei Verwendung bisher nicht gesetzter Variablen benachrichtigt zu werden, stelle die Fehlerbenachrichtigung...

Asipak schrieb:
Bitte in der Entwicklungsphase stets

Code:
<?php
error_reporting(E_ALL);

...ruhig noch eine Stufe "strenger" ein:

PHP:
error_reporting(E_ALL | E_STRICT);
 
Wo baust du überhaupt eine Verbindung zur Datenbank auf?

Weißt du überhaupt, was da alles steht? Scripte zusammenfummeln ist eben nicht das Gelbe vom Ei..
 
Also wen Php sich von Oben nach unten durcharbeitet und z.b

Code:
echo '<div id="wrapper-border"><h1 class="titel">'[COLOR="#ff0000"].$row['titel'].[/COLOR]'</h1><table class="antworten" cellspacing="0">';

Hier wird es erfolgreich ausgelsen

Code:
echo "<title>".$row['titel']."</title>";

Das habe ich ganz Nach unten gepackt und es wird nicht ausgelesen.

Wo könnten die Fehler liegen?

Und kann man nicht einfach $titel schreiben so kenne ich das zumindestens.
 
Zuletzt bearbeitet:
Der Inhalt von $row wird im Scriptverlauf mehrmals neu gesetzt (überschrieben). Zum Beispiel in der Zeile:

PHP:
$row = mysql_fetch_array($umfrage);

Wenn du den aktuellen Wert von $row (bzw. eines Feldes aus $row) zu einem Zeitpunkt behalten willst, kannst du ihn in eine andere Variable kopieren, bevor der Inhalt überschrieben wird.

PHP:
$meineVariable = $row['title'];

Weiter unten dann entsprechend:

PHP:
echo '<title>' . $meineVariable . '</title>';
 
Zurück
Oben