kleiner hobbit: PHP Auswahl und MySQL Datenbank

Hallo Forum,

bin auf ein weiteres Problem gestoßen :-). Ich lade meine bilder und texte aus einer mysql datenbank.

meine bilder werden immer nach 10 sekunden gewechselt.

bilder laden funktioniert. nur was nicht funktioniert sind die überschriften und kurzbeschreibungen zu den bildern. außerdem sollte, wenn man auf die kurzbeschreibung klickt, ein fenster sich öffnen wo das bild und die beschreibung des bildes zu sehen sind.

alle dafür benötigten texte sind in der mysql datenbank vorhanden.
jede zeile hat auch eine eindeutige spalte, wo ich eigentlich über href die sachen ansprechen könnte...

nur leider funktioniert das mit dem entsprechenden texten beim bildwechsel nicht.

Daher meine frage, wie gehe ich am besten an die sache ran? Bildwechsel geht über JAVASCRIPT. die texte zu den passenden bildern will ich über php holen.

Der Link: www.altinisik.org

Es geht nur um die 4 bilder (werden immer in 10 sek gewechselt) und die zugehörigen texte aus der mysql datenbank.

Vielen Dank
kleiner hobbit

  1. echo $begrüßung;

    bin auf ein weiteres Problem gestoßen :-). Ich lade meine bilder und texte aus einer mysql datenbank.

    Manche sagen, es wäre schon ein Problem, Binärdaten (wie Bilder) in einer Datenbank zu speichern.

    bilder laden funktioniert. nur was nicht funktioniert sind die überschriften und kurzbeschreibungen zu den bildern. außerdem sollte, wenn man auf die kurzbeschreibung klickt, ein fenster sich öffnen wo das bild und die beschreibung des bildes zu sehen sind.

    Ist dein Problem, entsprechenden HTML-Code zu schreiben oder diesen mit PHP zu erzeugen?

    alle dafür benötigten texte sind in der mysql datenbank vorhanden.

    Davon sollte man ausgehen. Wenn nicht wäre das sicher auch nicht schlimm, dann kann man ja einen Leerstring oder einen anderen Alternativtext ausgeben.

    jede zeile hat auch eine eindeutige spalte, wo ich eigentlich über href die sachen ansprechen könnte...

    Ja, ohne eindeutigen Identifizierer bekommt man auch kaum gezielt einzelne Daten aus der Datenbank.

    nur leider funktioniert das mit dem entsprechenden texten beim bildwechsel nicht.

    "Funktioniert nicht" funktioniert nicht. Beobachte und beschreibe genauer!

    Daher meine frage, wie gehe ich am besten an die sache ran? Bildwechsel geht über JAVASCRIPT. die texte zu den passenden bildern will ich über php holen.
    Der Link: www.altinisik.org
    Es geht nur um die 4 bilder (werden immer in 10 sek gewechselt) und die zugehörigen texte aus der mysql datenbank.

    Nun, bei den 4 Bildern würde ich mit PHP Javascript-Code erstellen, der die Bild-URL und dazu die Texte in einer passenden Struktur (Array) ablegt. Beim Bildwechsel werden Bild-URL und Texte aus der Struktur gelesen und in die jeweiligen Platzhalter im HTML-Code geschrieben. AJAX wäre auch eine Möglichkeit, aber in dem Fall eine übertriebene.

    echo "$verabschiedung $name";

    1. hallo dedlfix

      Manche sagen, es wäre schon ein Problem, Binärdaten (wie Bilder) in einer Datenbank zu speichern.

      ich meinte damit, dass der pfad zur der bilddatei in der datenbank ist. Sorry für die Verwirrung.

      Ist dein Problem, entsprechenden HTML-Code zu schreiben oder diesen mit PHP zu erzeugen?

      Mit PHP HTML Code kann ich ja über echo erzeugen, dass ist nicht das porblem. ich scheitere immer daran, die entsprechenden texte zu den bildern aus der datenbank auszugeben.

      was ich meinte und auf der suche bin ist gerade sowas wie du es meinst.

      Nun, bei den 4 Bildern würde ich mit PHP Javascript-Code erstellen, der die Bild-URL und dazu die Texte in einer passenden Struktur (Array) ablegt. Beim Bildwechsel werden Bild-URL und Texte aus der Struktur gelesen und in die jeweiligen Platzhalter im HTML-Code geschrieben.

      Die Bild url werden so eingelesen:

      <img id="img1" name="img1" width="84" height="64" src="<?PHP while($row1 = mysql_fetch_object($ergebnis1)){ echo "$row1->IMG1"; } ?>" alt="" />

      wie man ja sieht wird es ja auch eingelesen. aber ich weiß jetzt nicht wie ich dein punkt oben machen soll?

      Aber das ist genau sowas was ich suche...

      Vielen Dank.
      kleiner hobbbit

      1. hallo dedlfix,

        ich bin schon etwas weitergekommen, aber es scheint noch nicht ganz so zu klappen, aber bin der sache ziemlich nah gekommen:

        www.altinisik.org

        nun werden die kurzbeschreibungen alle angezeigt:

        hier ein kurzes ausschnitt:

        <?PHP  
        .  
        .  
        .  
        .  
        while($row1 = mysql_fetch_object($ergebnis1))  
        {  
        $pfad1=$row1->IMG1;  
        $ubers1=$row1->baslik;  
        $betim1=$row1->betimleme;  
        }  
        ?>
        
        <script type="text/javascript">  
        var f=document.getElementById("ortaresim");  
        if(f.src="<?PHP echo "$pfad2"; ?>")  
        {  
        document.write("<?PHP echo $betim1; ?>");  
        }  
          
        if(f.src="<?PHP echo "$pfad2"; ?>")  
        {  
        document.write("<?PHP echo "$betim2"; ?>");  
        }  
          
        if(f.src="<?PHP echo "$pfad3"; ?>")  
        {  
        document.write("<?PHP echo "$betim3"; ?>");  
        }  
          
        if(f.src="<?PHP echo "$pfad4"; ?>")  
        {  
        document.write("<?PHP echo "$betim4"; ?>");  
        }  
        </script>
        

        lg
        kleiner hobbit

        1. echo $begrüßung;

          while($row1 = mysql_fetch_object($ergebnis1)) {
            $pfad1=$row1->IMG1;
            $ubers1=$row1->baslik;
            $betim1=$row1->betimleme;
          }

          (Einrückungen machen den Code lesbarer.) So sieht das schon besser aus als das while im src-Attribut zu notieren. Aber mir scheint, dass du 4 Abfragen stellst und den Code für eine geringfügig modifiziert für die anderen duplizierst. Das ist unschön, weil es den Code verlängert und 4 Stellen ergibt, die im Falle einer Korrektur anzufassen sind. Formulier das SQL-Statement so, dass es alle 4 Zeilen zurückliefert und schreib als Fetch-while-Schleife diesen Code:

          while($row = mysql_fetch_object($ergebnis1)) {
            echo <<<JS
              if(f.src="$pfad2") {
                document.write("$row->betimleme");
              }
          JS;
          }

          Das ist allerdings nur der Teil für die Thumbnails. Du brauchst auch noch Bild-URL, Titel und Unterschrift als Javascript-Array. Da das aber besser an anderer Stelle in deiner Ausgabe steht, und eine nochmalige Abfrage aus der Datenbank unschön ist, solltest du dir mal Gedanken über das EVA-Prinzip machen. Dazu trennt man vor allem den datenverarbeitenden Teil von dem der die Ausgabe erzeugt. Sammle also zunächst alle benötigen Daten in PHP-Variablen (Einzelwerte in einzelnen Variablen, sich wiederholende Daten in Arrays) und erst wenn du alles zusammen hast, erzeug die Ausgabe und füg dabei die PHP-Variablen ein. Selbstverstndlich darf im ausgebenden Teil auch PHP-Code vorkommen, beispielsweise eine Schleife, die einen sich wiederholenden HTML-Code mit unterschiedlichen Werten drin ausgibt.

          echo "$verabschiedung $name";

          1. hallo dedlfix,

            leider hatte ich in mein vorherigen posting einen fehler gemacht, es sollte heißen

            while($row = mysql_fetch_object($ergebnis1)) {
              echo <<<JS
                if(f.src="$pfad1") {
                  document.write("$row->betimleme");
                }
            JS;
            }

            ich habe es auch damit ausprobiert, funzt leider nicht. es wird gar nichts angezeigt.

            Sammle also zunächst alle benötigen Daten in PHP-Variablen (Einzelwerte in einzelnen Variablen, sich wiederholende Daten in Arrays)

            habe ich ja gemacht, oder nicht?

            lg
            kleiner hobbit

            1. echo $begrüßung;

              ich habe es auch damit ausprobiert, funzt leider nicht. es wird gar nichts angezeigt.

              Beobachte bitte genauer! Was heißt "nichts angezeigt"? Der HTML-Code ist fehlerhaft? Der HTML-Code ist richtig aber führt nicht zum gewünschten Ergebnis? Sondern wozu? Es gibt Javascript-Fehler? Irgendwas ganz anderes?

              Das error_reporting von PHP steht auf E_ALL und display_errors auf on?

              » Sammle also zunächst alle benötigen Daten in PHP-Variablen (Einzelwerte in einzelnen Variablen, sich wiederholende Daten in Arrays)
              habe ich ja gemacht, oder nicht?

              Nö, du hattest den datenbeschaffenden Teil die Ausgabe gemischt. Du hast das EVA-Prinzip dann richtig aufgesetzt, wenn du entweder den Ausgebenden Teil in einem Zug entfernen kannst und stattdessen mit Kontrollausgaben alle ausgaberelevanten Werte anzeigen lassen kannst oder aber verarbeitenden Teil entfernenkannst und stattdessen mit Dummy-Variablen eine trotzdem richtige Ausgabe erstellen kannst.

              echo "$verabschiedung $name";

              1. hallo dedlfix,

                es wurde gar kein fehler angezeigt, aber noch eine frage habe ich noch:

                kurz zurück zur diesen Code, tut mir leid, wenn ich es hier nochmal reinsetze:

                while($row1 = mysql_fetch_object($ergebnis1))  
                {  
                $pfad1=$row1->IMG1;  
                $ubers1=$row1->baslik;  
                $betim1=$row1->betimleme;  
                }
                
                <script type="text/javascript">  
                var f=document.getElementById("ortaresim");  
                if (f.src="<?PHP echo "$pfad1"; ?>")  
                {  
                document.write("<?PHP echo "$betim1"; ?>");  
                }  
                  
                if (f.src="<?PHP echo "$pfad2"; ?>")  
                {  
                document.write("<?PHP echo "$betim2"; ?>");  
                }  
                  
                if (f.src="<?PHP echo "$pfad3"; ?>")  
                {  
                document.write("<?PHP echo "$betim3"; ?>");  
                }  
                  
                if (f.src="<?PHP echo "$pfad4"; ?>")  
                {  
                document.write("<?PHP echo "$betim4"; ?>");  
                }  
                </script>
                

                <img id="ortaresim" name="ortaresim" width="379" height="285" src="" alt="" />

                Bei id="ortaresim"  ist mir aufgefallen, dass immer src="" ist. Ich hatte gedacht, dass der javascript mir immer den richtigen pfad reinsetzt. aber da ja javascript clientseitig ist kann ich es wohl vergessen. gibt es hier eine lösung über php?

                lg
                kleiner hobbit

                1. echo $begrüßung;

                  if (f.src="<?PHP echo "$pfad1"; ?>")

                  Wenn du einen Vergleich notieren willst, solltest du den passenden Operator verwenden. = ist nicht ==

                  <img id="ortaresim" name="ortaresim" width="379" height="285" src="" alt="" />
                  Bei id="ortaresim" ist mir aufgefallen, dass immer src="" ist. Ich hatte gedacht, dass der javascript mir immer den richtigen pfad reinsetzt.

                  Was tust du dafür, dass in src etwas geschrieben wird?

                  aber da ja javascript clientseitig ist kann ich es wohl vergessen. gibt es hier eine lösung über php?

                  Viele Wege führen nach Rom. Wenn du langsam die Übersicht verlierst, ist eine günstige Möglichkeit, sie wieder zu erlangen, dass du ein HTML-Dokument ohne PHP und Javascript erstellst, das erst einmal das anzeigt, was du willst. Dann bringst du das Javascript hinein. Und zu guter Letzt kannst du PHP hinzunehmen und damit das Dokument so erstellen, dass es so aussieht wie die statische Version mit Javascript.

                  echo "$verabschiedung $name";

                  1. guten morgen dedlfix,

                    Wenn du einen Vergleich notieren willst, solltest du den passenden Operator verwenden. = ist nicht ==

                    hatte ich auch schon ausprobiert, ging leider auch nicht.

                    Was tust du dafür, dass in src etwas geschrieben wird?

                    Naja, ich dachte, dass das Javascript-Code auch den pfad gleich in das Attribut src reinsetzt... Das ist mir erst dann aufgefallen, wo ich nach jedem Bildwechsel mir den Quellcode angeguckt habe. Und da stand immer src=""

                    Viele Wege führen nach Rom. Wenn du langsam die Übersicht verlierst, ist eine günstige Möglichkeit, sie wieder zu erlangen, dass du ein HTML-Dokument ohne PHP und Javascript erstellst, das erst einmal das anzeigt, was du willst. Dann bringst du das Javascript hinein. Und zu guter Letzt kannst du PHP hinzunehmen und damit das Dokument so erstellen, dass es so aussieht wie die statische Version mit Javascript.

                    Ich bin ja anfangs auch so vorgegangen. nun scheitere ich immer an der stelle, dass die entscheidende beschreibung fehlt.

                    Habe ich gestern vergessen zu erwähnen. Ich habe ja beim Javascript Code diese IF anweisungen, if(f.src="<?PHP echo "$pfad1"; ?>") usw. Nun stehen dort die 4 Texte aus der Datenbank zu den Bildern Hintereinander, eigentlich do wo in dem Text drei Punkte ... nacheinander kommen sollte es ja schon zu ende sein, aber irgendwie packt die ganze if anweisung mir alles hintereinander.

                    Vielen Grüße
                    kleiner hobbit

                    1. echo $begrüßung;

                      » Wenn du einen Vergleich notieren willst, solltest du den passenden Operator verwenden. = ist nicht ==
                      hatte ich auch schon ausprobiert, ging leider auch nicht.

                      Das hat nichts mit probieren zu tun. = ist eine Zuweisung, == ein Vergleich. Wenn man beide verwechselt ändert sich nicht plötzlich was deutlich sichbares. Dieser Fehler kann sich deutlich subtiler äußern.

                      » Was tust du dafür, dass in src etwas geschrieben wird?
                      Naja, ich dachte, [...]

                      Beim Programmieren ist das Prüfen das A und O. Du musst stets prüfen, ob das was du gedacht hast auch tatsächlich ausgeführt wurde. Und zwar nicht nur indem du die Seite anschaust sondern vor allem auch mit Kontrollausgaben die Ergebnisse der einzelnen Teilschritte.

                      » Viele Wege führen nach Rom. Wenn du langsam die Übersicht verlierst, ist eine günstige Möglichkeit, sie wieder zu erlangen, dass du ein HTML-Dokument ohne PHP und Javascript erstellst, das erst einmal das anzeigt, was du willst. Dann bringst du das Javascript hinein. Und zu guter Letzt kannst du PHP hinzunehmen und damit das Dokument so erstellen, dass es so aussieht wie die statische Version mit Javascript.
                      Ich bin ja anfangs auch so vorgegangen. nun scheitere ich immer an der stelle, dass die entscheidende beschreibung fehlt.

                      Dann mach es noch mal so. Vegiss das PHP erst einmal komplett und erzeuge allein mit HTML und Javascript den gewünschten Bildwechsel.

                      echo "$verabschiedung $name";

                      1. hallo dedlfix,

                        Dann mach es noch mal so. Vegiss das PHP erst einmal komplett und erzeuge allein mit HTML und Javascript den gewünschten Bildwechsel.

                        jooo, so habe ich es letztendlich heute früh gemacht und siehe da, es hat geklappt.

                        danach habe ich php ins spiel gebracht, was kam raus: es läuft top..... :-)

                        Ich wollte mich nur noch hier bedanken... ich habe es hinbekommen wie ich es haben wollte. Also nochmal danke für die ganzen sachen.

                        Viele Grüße und schönen Abend
                        kleiner hobbit

                2. Moin!

                  kurz zurück zur diesen Code, tut mir leid, wenn ich es hier nochmal reinsetze:

                  Dein Problem ist, dass du hier Codebereiche von PHP und Javascript so vermischst, als ob diese beiden Sprachen parallel ausgeführt werden würden.

                  Das ist aber nicht der Fall. Zuerst wird PHP ausgeführt, und generiert dir eine Seite, in der HTML, CSS und das Javascript drinsteht. Diese fertige Seite wandert dann zum Browser, und dort wird sie angezeigt - und das Javascript wird ausgeführt.

                  Wenn du dir mal den Quelltext im Browser anzeigen lässt, siehst du, was für ein Javascript du dynamisch generiert hast, und wie sinnvoll das ist (Ergebnis: gar nicht sinnvoll).

                  Deshalb gab dedlfix dir ja schon mal die Anregung, zuerst ausschließlich die fertige HTML-Seite zu produzieren, in der mit Javascript und fixen Werten, Bildern etc. alles so funktioniert, wie gewünscht, um dann erst in einem zweiten Schritt diese fertige Seite mit PHP dynamisch mit Werten zu befüllen.

                  Dein Javascript-Code hier wird beispielsweise nicht dynamisch bei jedem Bildwechsel ausgeführt, sondern nur einmal beim Seitenladen. Und je nachdem wird dann eines der document.write ausgeführt - das war's dann auch.

                  Grausam, dass du von Arrays noch nichts gehört hast, die ganzen Variablen $betim1, $betim2,... $pfad1, $pafd2,... etc., die durchnnumeriert sind, sind immer ein deutliches Kennzeichen dafür, dass sie eigentlich besser als Array gespeichert wären. Und dass tatsächlich viermal identischer Javascript-Text geschrieben wird, mit jeweils numerierten Variablen, ist der zweite Beweis.

                  <script type="text/javascript">

                  var f=document.getElementById("ortaresim");
                  if (f.src="<?PHP echo "$pfad1"; ?>")
                  {
                  document.write("<?PHP echo "$betim1"; ?>");
                  }

                  if (f.src="<?PHP echo "$pfad2"; ?>")
                  {
                  document.write("<?PHP echo "$betim2"; ?>");
                  }

                  if (f.src="<?PHP echo "$pfad3"; ?>")
                  {
                  document.write("<?PHP echo "$betim3"; ?>");
                  }

                  if (f.src="<?PHP echo "$pfad4"; ?>")
                  {
                  document.write("<?PHP echo "$betim4"; ?>");
                  }
                  </script>

                    
                   - Sven Rautenberg
                  
                  1. Hallo,

                    doch doch, ich habe was von Arrays gehört. Nur will ich diese nicht benutzen. Einfach so. Der Code scheint für Dich zwar grausam zu sein, aber für mich ist es leserlich.

                    Ich wollte mich nur hier bedanken... ich habe es hinbekommen wie ich es haben wollte. Also nochmal danke für die ganzen sachen.

                    Viele Grüße und schönen Abend
                    kleiner hobbit

                    1. Mahlzeit kleiner hobbit,

                      doch doch, ich habe was von Arrays gehört. Nur will ich diese nicht benutzen. Einfach so.

                      Dass Du Dir damit nur selbst ins Knie schießt, ist Dir bewusst ...? :-)

                      Der Code scheint für Dich zwar grausam zu sein, aber für mich ist es leserlich.

                      Wir sprechen uns dann in ca. einem halben Jahr wieder, wenn Du - zu Wartungs-, Reparatur- oder Erweiterungszwecken - wieder an dieser Stelle des Code arbeiten möchtest ...

                      Ich wollte mich nur hier bedanken... ich habe es hinbekommen wie ich es haben wollte. Also nochmal danke für die ganzen sachen.

                      Weiterhin viel Erfolg - und glaube mir: einige der Ratschläge aus diesem Forum sind Gold wert ... auch wenn Du sie im Moment nicht gern annimmst oder Dir nicht ganz klar ist, wieso Du das solltest. Mach es trotzdem. Die meisten Leser und Antworter hier haben genügend Erfahrung, um beurteilen zu können, was sinnvoll ist und was nicht.

                      MfG,
                      EKKi

                      --
                      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|