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" 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 ). 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 .)
Der einzige fehler der auftritt ist der dass nicht angezeigt wird ^^.
Hoffentlich weiß einer wie man das Problem behebt .
greetz Razer
--
keine sigbilder auf passwortgeschützte bereiche packen bitte, bf
Ansonsten versuch mal nicht das script zu unterbrechen sondern die Ausgabe der HTML-Befehle ueber echo in ein und das selbe script einzubauen
Ich nehme mal an, das Problem ist, dass du im Ersten Teil die While Schleife ja schon abgeschlossen hast ( du hast hinter dem While ein {} stehen), und dadurch $row im zweiten Teil nicht mehr definiert ist, bzw neu angelegt wird
Wenn ich es richtig verstanden habe, willst du doch fuer jeden Eintrag in der Datenbank eine Zeile in der Tabelle haben, oder ? .. dann muss der Code zum erzeugen der Tabelle auch in die Whileschleife hinein.
Wenn ich Bloedsinn geschrieben haben sollte, dann einfach nicht beachten ^^
Die Ausgabe miss innerhalb der While-Schleife liegen weil "$row["ticker"]" außerhalb keinen definierten Wert mehr hat:
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.
ja so geht es schonmal, aber ich wollt es so einstellen das man alles per admin menue einstellen kann, also im Falle eines Tickers die Art wie er scrollt schriftgröße etc.
Da dachte ich mir das dann so:
Nur er kriegt erst gar keine Verbindung zur Datenbank (der dritte fehler im script). Denke mal liegt am mysql query nur wie man das behebt ist mir ein rätsel .
@Chocwise danke für erklärung, denn genau das mit der while schleife hatte ich in meinem buch voll nich kapiert ^^, aber an der aufführung haperst immernoch bei mir :/.
greetz Razer
--
keine sigbilder auf passwortgeschützte bereiche packen bitte, bf
Wie sind denn die Syptome?
Irgendwelche Fehlermeldungen? Was wird ausgegeben, bzw. was nicht?
Wenn z.B. das hier auftaucht: "Verbindung zur Datenbank kann zur Zeit nicht hergestellt werden." kann ich dir auch nicht helfen da ich keinen Zugriff auf deine Datenbank habe um nachzusehen ob da ein Fehler vorliegt.
Wenn allerdings alles richtig läuft, außer dem Umstand das die Daten, die aus der Datenbank geholt werden sollten, nicht ausgegeben werden, mag es daran liegen das man die Array's nicht ohne weiteres in eine Variable übertragen kann um diese Variable dann außerhalb der while-Schleife einzusetzen.
Wenn du mehr als einen Datensatz ausgeben lassen willst, klappt das AFAIK so ohnehin nicht, aber da bin ich mir nicht ganz sicher.
Ah, ich sehe grad einen Fehler:
Schau mal beim Abfragequery, dort fragst du das Feld "behaviorm ab", schau mal ob das Feld tatsächlich "behaviorm" heißt. Wenn ja, ändere den Array innerhalb der while-Schleife:
$art = $row["behaviorm"];
Sollte es dann immernoch nicht gehen, gib mal die angesprochenen fehlenden Info's.
Nachtrag: Es müsste auch einen Weg geben mit dem man etwas aus der Datenbank ausgeben kann ohne mit der while-Schleife arbeiten zu müssen. Das kann man dann bequem einsetzen wenn man nur einen Datensatz hat den man rausholen möchte. Ich hab das zwar schon mal in irgendeinem Script verwendet, aber ich weiß nichtmehr in welchem.
Vielleicht kennt hier jemand Anderer ja die Lösung. :
Original geschrieben von Chocwise Ah, ich sehe grad einen Fehler:
Schau mal beim Abfragequery, dort fragst du das Feld "behaviorm ab", schau mal ob das Feld tatsächlich "behaviorm" heißt. Wenn ja, ändere den Array innerhalb der while-Schleife:
$art = $row["behaviorm"];
Sollte es dann immernoch nicht gehen, gib mal die angesprochenen fehlenden Info's.
...
So also das mit dem m hinten dran war echt der fehler, danke . (ich könnt mir in den arsch tretten was nen scheiß) Jetzt geht aber endlich alles.