Ankündigung

Einklappen
Keine Ankündigung bisher.

Bilder in Tabelle

Einklappen

Neue Werbung 2019

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

  • Bilder in Tabelle

    Hallo,
    ich habe eine Tabelle in die ich Werte aus einer MySQL Tabelle einfüge.
    Die Werte gebe ich mit Echo aus.
    Jetzt würde ich gerne ein Bild in die erste Spalte jeder Zeile einfügen.
    Problem:
    die Anführungszeichen vom <img src=„ ...“ deutet php als Ende des Echo String …
    kann mir jemand sagen, wie ich das löse?
    danke!

  • #2
    Zeig was du hast und wir sagen Dir was falsch ist.

    Kommentar


    • #3
      Es gibt " und '.

      Kommentar


      • #4
        Gerne:

        while($row = mysqli_fetch_object($ergebniss))
        {
        $erst=$row->deputat1hj;
        $zwei=$row->deputat2hj;
        echo "<tr>Loeschen<td></td><td>Aendern</td>";
        echo "<td>"; echo $row->kuerzel; echo "</td>";
        echo "<td>"; echo $row->deputat1hj; echo "</td>";
        echo "<td>"; echo $row->deputat2hj; echo "</td>";
        echo "<td>"; echo $summe=($erst + $zwei)/2; echo "</td>";
        echo "<td>"; echo $row->Fach1; echo "</td>";
        echo "<td>"; echo $row->Fach2; echo "</td>";
        echo "<td>"; echo $row->Fach3; echo "</td>";
        echo "</tr>";

        echo "<br />";

        }
        Funktioniert!

        while($row = mysqli_fetch_object($ergebniss))
        {
        $erst=$row->deputat1hj;
        $zwei=$row->deputat2hj;
        echo "<tr><img src="img/loeschen.png" width="20" height="20"><td></td><td>Aendern</td>";
        echo "<td>"; echo $row->kuerzel; echo "</td>";
        echo "<td>"; echo $row->deputat1hj; echo "</td>";
        echo "<td>"; echo $row->deputat2hj; echo "</td>";
        echo "<td>"; echo $summe=($erst + $zwei)/2; echo "</td>";
        echo "<td>"; echo $row->Fach1; echo "</td>";
        echo "<td>"; echo $row->Fach2; echo "</td>";
        echo "<td>"; echo $row->Fach3; echo "</td>";
        echo "</tr>";

        echo "<br />";

        }

        Gibt folgenden Fehler aus:
        Parse error: syntax error, unexpected 'img' (T_STRING), expecting ',' or ';' in C:\xampp\htdocs\pep2\deputat_auswahl.php on line 52

        Kommentar


        • #5
          Spar dir doch die ganzen echo. Die sind für die HTML-Ausgabe nicht notwendig.

          Außerdem fehlt überall die Kontextwechselbehandlung mit htmlspecialchars().

          Kommentar


          • #6
            Aber wenn ich die echos weglasse und die Tabelle im script nur so schreibe:

            echo "<tr><td>Loeschen</td><td>Aendern</td>";
            <td> echo $row->kuerzel;</td>
            echo "<td>"; echo $row->deputat1hj; echo "</td>";

            bekomme ich folgende Fehlermeldung:

            Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\pep2\deputat_auswahl.php on line 53

            Kommentar


            • #7
              Das sind dann schon krasse Mängel in den Grundlagen. Ein Beispiel:

              PHP-Code:
              <ul>
              <?php
              for ($i=0$i<5;$i++) {
              ?>
                <li><?= $i?></li>
              <?php
              }
              ?>
              </ul>
              Das solltest du adaptieren können.

              Kommentar


              • #8
                Zitat von jonas3344 Beitrag anzeigen
                Das sind dann schon krasse Mängel in den Grundlagen. Ein Beispiel:

                PHP-Code:
                <ul>
                <?php
                for ($i=0$i<5;$i++) {
                ?>
                <li><?= $i?></li>
                <?php
                }
                ?>
                </ul>
                Das solltest du adaptieren können.
                Schlimm genug, daß sowas in PHP überhaupt funktioniert. Sauber programmiert sähe das so aus:
                PHP-Code:
                <ul>
                <?php
                  $StrUmbru 
                "\n";
                  
                $StrEcho '';
                  for (
                $i=0$i<5;$i++) {
                    
                $StrEcho $StrEcho.'  <li>'.$i.'</li>'.$StrUmbru;
                  }
                  echo (
                $StrEcho);
                ?>
                </ul>
                Und natürlich htmlspecialchars, aber unbedingt mit korrekter Angabe der Characters, die maskiert werden müssen. Da es sich hier lediglich um die Anführungszeichen handelt, kann ggfs. htmlspecialchars durch Berücksichtigung des Tipps von protestix (#3) ganz umgangen werden. In komplexer gelagerten Fällen dann vielleicht doch lieber gleich htmlentities.

                Und: Natürlich muß zu Wahrung des EVA-Prinzips der gesamte php-Code ohne "echo ($StrEcho);" nach oben, vor
                HTML-Code:
                <!DOCTYPE HTML>
                  <!-- ... -->
                wandern.

                Kommentar


                • #9
                  PHP ist eine Template-Sprache, daher ist es logisch, dass Code aus #7 bspw. korrekt ist. Ob man es schick findet oder nicht steht auf einem anderen Blatt.
                  Sauber programmiert sähe es dann eher in etwa so aus:
                  PHP-Code:
                  $aOut = [];

                  for ( 
                  $i=0$i<5$i++ )
                      
                  $aOut[] = '<li>' $i '</li>'
                  PHP-Code:
                  <ul><?php echo implode$aOut ); ?></ul>
                  Wie Du ja bereits richtig erwähnt hast, wird hier das EVA-Prinzip eingehalten.
                  Zeilenumbrüche habe ich bewusst weggelassen, sind aus meiner Sicht unnötig...
                  Competence-Center -> Enjoy the Informatrix
                  PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                  Kommentar


                  • #10
                    Es ging auch mehr darum dem TE zu vermitteln wann, was und in welcher Form geschrieben werden muss um keinen Parse-Error zu werfen.

                    Kommentar


                    • #11
                      Jo, Dein Beispiel ist ja auch korrekt. Wollte nur das Beispiel EVA darstellen, weil es nur so erwähnt wurde.
                      Competence-Center -> Enjoy the Informatrix
                      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                      Kommentar


                      • #12
                        Zitat von Arne Drews Beitrag anzeigen
                        PHP ist eine Template-Sprache, daher ist es logisch, dass Code aus #7 bspw. korrekt ist. Ob man es schick findet oder nicht steht auf einem anderen Blatt.
                        Wie aus deiner Erwiderung ersichtlich, hast du mich richtig verstanden: Es ging um die Unterbrechung der For-Schleife durch "fremden Code", was in Template-Sprachen ausdrücklich erlaubt ist. Und genau in diesem Punkt hast du ja dann genau so codiert, wie ich es tat, indem du die Schleife ebenfalls nicht unterbrochen hast. Da sind wir uns also offenbar einig.
                        Sauber programmiert sähe es dann eher in etwa so aus:
                        PHP-Code:
                        $aOut = [];

                        for ( 
                        $i=0$i<5$i++ )
                        $aOut[] = '<li>' $i '</li>'
                        PHP-Code:
                        <ul><?php echo implode$aOut ); ?></ul>
                        Nur sicherheitshalber nachgefragt: Du willst damit aber jetzt nicht sagen, daß mein Code unsauber codiert war!?

                        Insgesamt geht es ja hierbei darum, ob man "Freiheiten", die die jeweilige Programmiersprache erlaubt, nutzt oder nicht. Hier bist du ja nicht nur in dem oben benannten Punkt (keine Unterbrechung von php-Code durch Fremdcode) meinem implizit formulierten Grundsatz gefolgt, sondern auch in der "Nichtnutzung" der vereinfachten Schreibweise bei der Verkettung von Strings. Eine dritte Konkretisierung dieses meines Grundsatzes wäre die Benutzung von geschweiften Klammern um die Körper der Schleife herum gewesen. Die auch hier offenbar "erlaubte" Möglichkeit, sie wegzulassen, hätte ich auch hier nicht genutzt, weil sie den Code unübersichtlicher macht. So bieten bereits einfache Editoren wie bspw. "Notepad++" die Möglichkeit, Code-Abschnitte auf- und zuzuklappen, was ohne die Klammern natürlich nicht geht.
                        Wie Du ja bereits richtig erwähnt hast, wird hier das EVA-Prinzip eingehalten.
                        Zeilenumbrüche habe ich bewusst weggelassen, sind aus meiner Sicht unnötig...
                        Das Einfügen von Zeilenumbrüchen war die 4. konkrete Anwendung meines Prinzips. Man überzeugt sich sehr schnell und unkompliziert davon, daß dies besser ist, wenn man sich den von php generierten HTML-Code im Vergleich anschaut:
                        HTML-Code:
                        <ul><li>0</li><li>1</li><li>2</li><li>3</li><li>4</li></ul>
                        wäre Dein Ergebnis, während meines so aussieht:
                        HTML-Code:
                        <ul>
                          <li>0</li>
                          <li>1</li>
                          <li>2</li>
                          <li>3</li>
                          <li>4</li>
                        </ul>
                        Ich bin mit den Usern hier, die fast gebetsmühlenartig die Anforderungen an "streng-validen" HTML-Code wiederholen, einer Meinung, daß saubere Einrückungen und demzufolge Zeilenumbrüche unbedingt dazu gehören.

                        Insoweit wäre die "sauberste" Codierung wohl diese gewesen:
                        PHP-Code:
                        <?php
                        # -- Initialisierung ---------------------------------------------------------
                          
                        $ArrOut = [];
                          
                        $StrUmbru "\n";

                        # -- Schleifenverarbeitung, Vorbereitung der Ausgabe -------------------------
                          
                        for ($IntCnt=0;$IntCnt<5;$IntCnt++) {
                            
                        $ArrOut[] = '      <li>'.$IntCnt.'</li>'.$StrUmbru;
                          }
                          
                        $StrEcho implode(''$ArrOut);
                        ?>

                            <ul>
                        <?php
                            
                        echo $StrEcho;
                        ?>
                            </ul>
                        Womit wir dann diese Diskussion wohl abschließen können - schon allein um daraus nicht wieder eine Grundsatzdebatte zu machen...

                        Bjofal Dir sollte wohl am ehesten geholfen sein, wenn du den Tipp von Protestix aus #3 befolgst. Das enthebt Dich m.E. aber nicht der dringenden Notwendigkeit unbedingt auf sämtlichen hier angesprochenen Gebieten "Grundlagen zu pauken"!

                        Kommentar


                        • #13
                          Es sollte der Code lesbar geschrieben sein, mit dem man als Programmierer auch arbeitet und nicht irgendein generierter Code. Dein Code so wie er ist mit den kryptischen und mehrsprachigen Variablennamen sowie ein fantasiereichen Einrückungen würde ich so einfach wegwerfen und sauber neu schreiben.

                          Der Ansatz von jonas geht schon in die richtige Richtung und nutzt die Templating-Fähigkeiten, die PHP mitbringt. Ob jetzt PHP die ideale Template-Sprache ist, kann natürlich bestritten werden. Da gibt es sicher weitaus geeignetere Kandidaten. Aber grundsätzlich ist PHP als Template-Sprache eine valide Option.

                          Kommentar


                          • #14
                            Zitat von Alf2016 Beitrag anzeigen
                            Insoweit wäre die "sauberste" Codierung wohl diese gewesen:
                            Wenn du meinst. Ich sehe das absolut nicht als sauber im Sinne von "einfach lesbar". Da hat hellbringer schon recht.


                            Zitat von Alf2016 Beitrag anzeigen
                            Womit wir dann diese Diskussion wohl abschließen können - schon allein um daraus nicht wieder eine Grundsatzdebatte zu machen...
                            Dann fang nicht immer damit an und sehe "deine" Ideallösungen nicht immer als best practise an. Es gibt Konventionen, Empfehlungen und ja auch persönlichen Geschmack.
                            The string "()()" is not palindrom but the String "())(" is.

                            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                            PHP.de Wissenssammlung | Kein Support per PN

                            Kommentar


                            • #15
                              Zitat von Alf2016
                              Du willst damit aber jetzt nicht sagen, daß mein Code unsauber codiert war!?
                              Nein, wenn Du meine Beiträge richtig lesen würdest und nicht immer nur Erwiderungen darin siehst, wäre Dir klar, dass ich lediglich das von Dir korrekter Weise erwähnte EVA mit einem Beispiel behaften wollte. Und btw. finde ich das immer noch die sauberste Lösung, ja.

                              Zitat von Alf2016
                              wäre Dein Ergebnis, während meines so aussieht:
                              Der HTML-Quelltext hat bei mir fast nie Zeilenumbrüche. Finde das auch komplett irrelevant, das macht meine Developer-Konsole für mich.
                              Competence-Center -> Enjoy the Informatrix
                              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                              Kommentar

                              Lädt...
                              X