[php]text aus mysql einfügen
hi Leute,
ich habe ein kleines Problem undzwar habe ich mir ein php buch bestellt und angefangen zu lernen ganz normal halt so und nun hab ich angefangen mal mein erstes kleineres "scriptchen":p zu basteln es geht auch alles soweit nur ich habe ein kleines Problem beim einfügen der daten die aus der datenbank kommen und in einen lauftext eingefügt werden!
Also erstmal zur erklärung des Scriptes, damit sich die leutchen ein besseres Bild machen können worum es geht ^^.
Ich wollte für meinen Clan ein Script machen mit dem alle der Leader oder die Orgas den Newsticker ändern können der auf der Seite angezeigt wird über ein admin menue (is noch in weiter ferne :p ). So die Daten werden auch schon aus der Datenbank abgerufen und so weiter nur soll der Text jetzt in den lauftext reinkopiert werden und dabei hab ich nen Prob. :).
Hier das Script:
(is mein erstes Script, also bitte nich soviel meckern aller Anfang ist schwer :).)
PHP-Code:
<html>
<head>
<title>Dies ist der Ticker</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body text="#000000">
<?php
$dbconnect = @mysql_connect("localhost", "fdsfds", "fdfsfsfds");
if (!$dbconnect) { //Wenn zur Datenbank nicht connectet werden kann, erscheint diese Fehlermeldung
echo( "<p>Verbindung zur Datenbank kann zur Zeit nicht hergestellt werden.</p>");
exit();
}
if (! @mysql_select_db("sdfsfdsfs") ) { //Es wird die Datenbank ausgewählt. Wenn nicht connectet werden kann erscheint diese Fehlermeldung
echo ("<p>Auswahl des Tickers zur Zeit nicht möglich.</p>");
exit();
}
$result = @mysql_query("select ticker FROM ticker_data"); //Der Text wird aus der Datenbank geholt
if (!$result) { //Wenn keine Verbindung hergestellt werden kann erscheint diese Fehlermeldung
echo("<p>Der Ticker kann zur Zeit nicht geladen werden.</p>");
exit();
}
while ( $row = mysql_fetch_array($result) ) {
}
?>
<table width="100" cellspacing="0" cellpadding="0">
<tr>
<td>
<marquee scrollamount="2" scrolldelay="2">
<font size="5"><?php echo(" $row["ticker"] "); ?></font>
</marquee>
</td>
</tr>
</table>
</body>
</html>
Der einzige fehler der auftritt ist der dass nicht angezeigt wird ^^.
Hoffentlich weiß einer wie man das Problem behebt :).
greetz Razer
Re: [php]text aus mysql einfügen
Die Ausgabe miss innerhalb der While-Schleife liegen weil "$row["ticker"]" außerhalb keinen definierten Wert mehr hat:
PHP-Code:
<html>
<head>
<title><img src="images/smilies/s_057.gif" border="0" alt="">ies ist der Ticker</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body text="#000000">
<?php
$dbconnect = @mysql_connect("localhost", "fdsfds", "fdfsfsfds");
if (!$dbconnect) { //Wenn zur Datenbank nicht connectet werden kann, erscheint diese Fehlermeldung
echo( "<p>Verbindung zur Datenbank kann zur Zeit nicht hergestellt werden.</p>");
exit();
}
if (! @mysql_select_db("sdfsfdsfs") ) { //Es wird die Datenbank ausgewählt. Wenn nicht connectet werden kann erscheint diese Fehlermeldung
echo ("<p>Auswahl des Tickers zur Zeit nicht möglich.</p>");
exit();
}
$result = @mysql_query("select ticker FROM ticker_data"); //Der Text wird aus der Datenbank geholt
if (!$result) { //Wenn keine Verbindung hergestellt werden kann erscheint diese Fehlermeldung
echo("<p><img src="images/smilies/s_057.gif" border="0" alt="">er Ticker kann zur Zeit nicht geladen werden.</p>");
exit();
}
?>
<table width="100" cellspacing="0" cellpadding="0">
<tr>
<td>
<marquee scrollamount="2" scrolldelay="2">
<font size="5"><?php
while($row = mysql_fetch_array($result)){
echo $row[ticker];
} ?></font>
</marquee>
</td>
</tr>
</table>
</body>
</html>
Viele machen auch den Fehler das sie innerhalb eines mit echo auzugebenen Strings unmaskierte Anführungsstriche ausgeben lassen wollen.
Würdest du z.B. versuchen diesen Befehl auszuführen:
echo "Ich bin ein "Testtext".";
würde PHP "Ich bin ein " als String erkennen, da der Auszugebene String aber mit den 2. Anführungsstrichen in PHP's "Augen" endet versucht PHP "Testtext" als Befehl zu interpretieren.
Um dieses Problem zu umgehen kannst du es so handhaben:
echo 'Ich bin ein "Testtext".';
oder so:
echo "Ich bin ein \"Testtext\".";
Das nur zu den Basics.
Das sage ich dir weil du es in dieser Form verwendet hast:
echo ("$row["ticker"]");
BTW: beim echo-Befehl sind keine Klammern notwendig wie du an meinen Beispielen siehst, aber es ist auch nicht unbedingt falsch.
Das selbe wenn du nur den Wert einer Variable ausgeben willst. In dem Fall kannst du sogar die Anführungsstriche weglassen (wie ichs auch in deinem Script geändert habe).
Wenn du Aufnahmebereit bist, hab ich hier noch etwas tiefergehende Info zu dem while()-Ding:
Du musst dir vorstellen, dass die While-Schleife nichts anderes tut, als einen Datansatz aus der Tabelle ticker_data nach dem anderen auszulesen.
Findet "mysql_fetch_array($result)" keinen Datensatz mehr gibt es "FALSE" bzw 0 aus, was die while-Schleife anhält.
Wenn du also nur einen Datensatz (eine Zeile) in der Tabelle "ticker_data" hast, gibt while nur ein Ergebnis aus. Hat sie mehrere, würde die while-Schleife alle hintereinander ausgeben:
Datensatz1Datensatz2Datensatz3...
Wenn du also mehrere Datensätze in dem Ticker ausgeben lassen willst, kannst du die einzelnen Messages auch voneinander trennen indem du die Alte durch diese echo-Anweisung ersetzt:
echo $row[ticker]." - ";
(Der Punkt sagt PHP AFAIK dass das stringdefinierende " nichtmehr zur Variable $row[ticker] gehört)
Das sähe dann so aus:
Datensatz1 - Datensatz2 - Datensatz3 - ...
Da die While-Schleife allerdings nur auf das angewendet wird das sich zwischen den beiden geschweiften Klammern ("{" und "}") befindet, muss deine echo-Anweisung innerhalb des while-Bereiches bleiben.