Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit while-Schleife.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit while-Schleife.

    Hi,

    ich weiß, der Name des Threads ist nicht gerade fehlerbeschreibend, aber ich habe nichts besseres gefunden.

    Es geht darum: Ich lass mit einer while-Schleife verschiedene Daten aus einer Mysql-db ziehen.

    Das Ergebnis sieht so aus:


    Dieser Code sorgt für jede Zeile (ausgeschlossen der Überschriften halt):
    PHP-Code:
          $sqlwhileone mysql_query('SELECT
          `Schiene`.`ID` AS `SchieneID`,
          `Schiene`.`Name` AS `Name`,
          `Schiene`.`ZeitStart` AS `ZeitStart`
          FROM `Schiene`
          INNER JOIN `Datum_Schiene`
          ON `Schiene`.`ID` = `Datum_Schiene`.`SchieneID`
          INNER JOIN `Datum`
          ON `Datum`.`ID` = `Datum_Schiene`.`DatumID`
          WHERE `Datum`.`ID` = "'
    .$datum['ID'].'"
          ORDER BY `ZeitStart` , `ZeitEnde` ASC'
    );
          while (
    $schiene mysql_fetch_array($sqlwhileone)) {
            
    $ZeitStart substr($schiene['ZeitStart'], 02).':'.substr($schiene['ZeitStart'], 22);
            echo 
    '<tr>';
            
    $sqlwhiletwo mysql_query('SELECT *
            FROM `Sendung`
            WHERE `SchieneID` = "'
    .$schiene['SchieneID'].'"');
            while (
    $sendung mysql_fetch_array($sqlwhiletwo)) {
            if (
    $sendung = )  echo '<td><a href="?do=edit&id='.$sendung['ID'].'"><img src="pen.png" alt="edit" border="0" /></a></td>
                    <td><a href="?do=delete&id='
    .$schiene['ID'].'"><img src="cross.png" alt="delete" border="0" /></a></td>';
            }
            echo 
    '  <td>'.$ZeitStart.'</td>
                    <td>'
    .$schiene['Name'].'</td>';
            
    $sqlwhiletwo mysql_query('SELECT *
            FROM `Sendung`
            WHERE `SchieneID` = "'
    .$schiene['SchieneID'].'"');
            while (
    $sendung mysql_fetch_array($sqlwhiletwo)) {
              echo 
    '<td>'.$art[$sendung['Art']].'</td>
                    <td>'
    .$sendung['Thema'].'</td>';
            }                                                        
          echo 
    '</tr>';
          } 
    Was ich jetzt möchte: Um in jeder Zeile, für die es keinen Eintrag in $sendung gibt, einen Platzhalter zu schaffen, brauche ich irgendwie eine Art else für die While-Schleife, was natürlich unlogisch ist, aber ich habe partout keine Idee, was ich tun könnte.

    Kann mir jemand nen Tipp geben?

    Danke schonmal.

    VG,
    Paeisi

  • #2
    ich würde da fast alles neu proggen. vorallem frag ich mich warum du alles direkt ausgibst? ausserdem kannst du die queries viel performanter gestalten..
    deine frage versteh ich nicht ganz, oder fragst du gerade wirklich wie man eine if-bedingung schreibt?

    greez

    Kommentar


    • #3
      if ($sendung = )
      Wasndasn?

      Ich vermute aber mal, dass das gesuchte else diesem If gehören könnte.
      [PHP]if ($var != 0) {
      $var = 0;
      }[/PHP]

      Kommentar


      • #4
        Dieser Code ist sehr sehr schlecht. Datenbankabfragen in Schleifen auszuführen ist hoch inperformant. Mache Dich mit JOINs vertraut.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          yeah alle 3 drei gleichzeitig

          sry 4 OT

          edit: boah muss ich gerade lachen

          Kommentar


          • #6
            ich weiß, der Name des Threads ist nicht gerade fehlerbeschreibend, aber ich habe nichts besseres gefunden.
            Man sucht keine Titel, man überlegt sich welche, indem man sein Problem analysiert.

            Code:
            if ($sendung = )
            Etwas kaputt, findest du nicht?

            Du musst dir überlegen, welchen Wert du erhälst, wenn kein Eintrag vorhanden ist. Das könnte zum Beispiel ein leerer String sein. Darauf kannst du in der Bedingung prüfen und entsprechend eine leere Spalte erzeugen.
            [URL]http://hallophp.de[/URL]

            Kommentar


            • #7
              Zitat von Paeisi Beitrag anzeigen
              PHP-Code:
                      $sqlwhiletwo mysql_query('SELECT *
                      FROM `Sendung`
                      WHERE `SchieneID` = "'
              .$schiene['SchieneID'].'"');
                      while (
              $sendung mysql_fetch_array($sqlwhiletwo)) {
                      if (
              $sendung = )  echo '<td><a href="?do=edit&id='.$sendung['ID'].'"><img src="pen.png" alt="edit" border="0" /></a></td>
                              <td><a href="?do=delete&id='
              .$schiene['ID'].'"><img src="cross.png" alt="delete" border="0" /></a></td>';
                      }
                      echo 
              '  <td>'.$ZeitStart.'</td>
                              <td>'
              .$schiene['Name'].'</td>';
                      
              $sqlwhiletwo mysql_query('SELECT *
                      FROM `Sendung`
                      WHERE `SchieneID` = "'
              .$schiene['SchieneID'].'"');
                      while (
              $sendung mysql_fetch_array($sqlwhiletwo)) {
                        echo 
              '<td>'.$art[$sendung['Art']].'</td>
                              <td>'
              .$sendung['Thema'].'</td>';
                      } 
              Du führst hier zwei mal hintereinander exakt die gleiche Datenbankabfrage durch. Ista da bei Copy&Paste etwas schiefgelaufen?

              Und was soll das
              PHP-Code:
              if ($sendung = ) 
              bewirken? Das ist kein syntaktisch korrektes PHP.

              Ich kann mir nicht vorstellen, wie du von diesem Code zu obiger Ausgabe kommst. Dann ist es auch sehr schwierig, dir zu helfen.
              Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

              Kommentar


              • #8
                Zitat von jGeee Beitrag anzeigen
                yeah alle 3 drei gleichzeitig
                Aber du warst gleichzeitiger als die anderen zwei.

                Und ich war mal wieder etwas zu ausführlich
                Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

                Kommentar


                • #9
                  Jaaaa weiter sooo macht ihn platt OMG

                  Kommentar


                  • #10
                    @jGeee: Nein, ich frage nicht, wie man eine if-Bedingung schreibt.
                    @Wolla: Diesen Schnipsel habe ich eben unvollständig eingebaut beim Versuch, eine sinnvolle if-Bedingung für mein Vorhaben zu schreiben und aus Versehen mit gepostet.
                    @nikosch: Die JOINs im ersten Query sind nötig, um das gewünschte Ergebnis zu erhalten.

                    Meine Frage war zwar nicht, ob dieser Code gut oder schlecht ist, aber dass er nicht gerade ideal ist, weiß ich selbst. Ich will erstmal, dass ich das gewünschte Ergebnis ausgegeben bekomme. Um Performance und Code kann ich mich noch danach kümmern.

                    @Asipak: Ich meinte mit "gefunden" nicht, dass ich bei google kein besseres Ergebnis bekommen habe. Aber spielt ja auch keine Rolle. Du hast mich wenigstens auf den Trichter gebracht, darüber nachzudenken, welchen Wert ich erhalte - ich nehme mal an, dass Du mir damit sagen willst, wie die if-Bedingung aussehen soll.
                    Aber da ich ein Array erhalte, bekomme ich einfach nur die Daten im Array, die auch existieren, richtig?

                    Wie kann ich denn überprüfen, ob der Datensatz zu dieser $schiene fehlt?

                    Danke.

                    Kommentar


                    • #11
                      Wie kann ich denn überprüfen, ob der Datensatz zu dieser $schiene fehlt?
                      Naja, irgendetwas muss zu den Datensätzen der anderen "Schienen" (was auch immer damit jetzt gemeint ist) anders sein und genau danach fragst du, nach dem Unterschied. Ob das jetzt ein leerer String ist oder ein Apfel, der vorher noch nicht da war.

                      Häh...? Apfel...?
                      [URL]http://hallophp.de[/URL]

                      Kommentar


                      • #12
                        Zitat von Paeisi Beitrag anzeigen
                        Ich will erstmal, dass ich das gewünschte Ergebnis ausgegeben bekomme. Um Performance und Code kann ich mich noch danach kümmern.
                        Nur das du dann das komplette Script umbauen musst, warum nicht direkt vernünftig, verständlich, ordentlich, performant und sicher? Ist für dich doch viel einfacher. So können wir dir dazu ebenfalls tipps und meinungen nennen. Nungut, jedem das seine, aber ob du so mehr lernst, ist was anderes..

                        Kommentar


                        • #13
                          Die JOINs im ersten Query sind nötig, um das gewünschte Ergebnis zu erhalten.
                          Ich rede von fehlenden Joins
                          Meine Frage war zwar nicht, ob dieser Code gut oder schlecht ist, aber dass er nicht gerade ideal ist, weiß ich selbst.
                          Aber unsere Antwort war, dass er es ist.
                          Ich will erstmal, dass ich das gewünschte Ergebnis ausgegeben bekomme. Um Performance und Code kann ich mich noch danach kümmern.
                          Das ist aber falsch, weil bspw. eine Lösung über JOIN Teil der Lösung ist. Klar kann man auch alles doppelt machen..

                          [edit]
                          Diesmal mit 1 Minute Offset
                          [COLOR="#F5F5FF"]--[/COLOR]
                          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                          [COLOR="#F5F5FF"]
                          --[/COLOR]

                          Kommentar


                          • #14
                            Um Performance und Code kann ich mich noch danach kümmern.
                            Sagen alle, tut aber keiner! Viel zu aufwendig!
                            [URL]http://hallophp.de[/URL]

                            Kommentar


                            • #15
                              Hier noch ein paar Schönwetteraussagen
                              Die Datensicherheit ist sekundär wichtig, da ich das Verzeichnis per .htaccess-Passwort geschützt habe.
                              Die schlechte Fehlerkontrolle ist wie gemeint? Bei der DB etc... sind doch die Fehlermeldungen [Anm. die() als Fehlerkontrolle]. Oder sollte in die If-schleife beim Update noch ein "Erfolgreich geändert" rein?
                              Was ist mit dem Exit? [Anm. exit() als Fehlerkontrolle]

                              Die Validierung und der html-Code kommen erst, wenn das ganze Skript funktioniert
                              [COLOR="#F5F5FF"]--[/COLOR]
                              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                              [COLOR="#F5F5FF"]
                              --[/COLOR]

                              Kommentar

                              Lädt...
                              X