Jnnbo: Problem mit str_replace

0 53

Problem mit str_replace

Jnnbo
  • php
  1. 1
    Der Martin
    1. 0
      Jnnbo
      1. 1
        robertroth
        1. 0
          Jnnbo
          1. 1
            robertroth
            1. 0
              Jnnbo
              1. 1
                robertroth
                1. 0
                  Jnnbo
                  1. 1
                    robertroth
                    1. 0
                      Jnnbo
  2. 0
    robertroth
    1. 0
      Jnnbo
      1. 0
        robertroth
        1. 0
          Jnnbo
          1. 0
            robertroth
            1. 0
              Jnnbo
              1. 0
                robertroth
                1. 0
                  Jnnbo
                  1. 0
                    robertroth
                    1. 0
                      Jnnbo
                      1. 0
                        robertroth
                        1. 0
                          Jnnbo
                    2. 0

                      Problem mit str_replace - Update

                      Jnnbo
                      1. 0
                        robertroth
                        1. 0
                          Jnnbo
                          1. 0

                            Meine Lösung!

                            Jnnbo
                            1. 0
                              robertroth
                              1. 0
                                Jnnbo
                                1. 0
                                  robertroth
                                  1. 0
                                    Jnnbo
                            2. 0

                              Vor- und Nachteil?

                              Jnnbo
                              1. 0
                                Gunnar Bittersmann
                                • html
                                • php
                                • zu diesem forum
                                1. 0
                                  dedlfix
                                  1. 1
                                    Gunnar Bittersmann
                                    1. 0
                                      dedlfix
                                      1. 0
                                        Gunnar Bittersmann
                                        1. 0
                                          Gunnar Bittersmann
                                          • php
                                  2. 0
                                    Jnnbo
                                    1. 0
                                      dedlfix
                                2. 0
                                  Matthias Apsel
                                  • zu diesem forum
                          2. 1
                            robertroth
  3. 0
    Gunnar Bittersmann
    • barrierefreiheit
    • css
    • html
    1. 0
      Jnnbo
      1. 0
        Gunnar Bittersmann
        • barrierefreiheit
    2. 0

      Problem mit str_replace(), falsches Datenmodell?

      robertroth
      • barrierefreiheit
      • css
      • datenbank
      1. 0
        Jnnbo
        1. 0
          dedlfix
          1. 0
            Jnnbo
            1. 0
              dedlfix
      2. 0
        Gunnar Bittersmann
        • barrierefreiheit
        • html
        1. 0
          Gunnar Bittersmann
  4. 0
    MudGuard

Hallo,

ich habe ein Problem mit meinem "str_replace"

$fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
$fghzh= str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">", $record['p_farbe']);
$fghzh= str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $record['p_farbe']);
$fghzh= str_replace ("Rot", "<img src=\"img/icons/farben/magenta.jpg\" alt=\"Magenta\">", $record['p_farbe']);
$fghzh= str_replace ("Blau", "<img src=\"img/icons/farben/cyan.jpg\" alt=\"Cyan\">", $record['p_farbe']);

Alternativ-Text

Lass ich nur die erste stehen wird es richtig umgewandelt

Alternativ-Text

Warum wird die eine mit der anderen Überschrieben? Ich teile doch genau mit, was umgewandelt werden soll.

  1. Hi,

    $fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
    $fghzh= str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">", $record['p_farbe']);
    $fghzh= str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $record['p_farbe']);
    $fghzh= str_replace ("Rot", "<img src=\"img/icons/farben/magenta.jpg\" alt=\"Magenta\">", $record['p_farbe']);
    $fghzh= str_replace ("Blau", "<img src=\"img/icons/farben/cyan.jpg\" alt=\"Cyan\">", $record['p_farbe']);
    

    wir wissen natürlich nicht, was genau in $record['p_farbe'] steht.

    Alternativ-Text

    Lass ich nur die erste stehen wird es richtig umgewandelt

    Du meinst: "die letzte"?

    Alternativ-Text

    Warum wird die eine mit der anderen Überschrieben? Ich teile doch genau mit, was umgewandelt werden soll.

    Ich kann dir nicht ganz folgen. Für mich sieht das abgebildete Ergebnis in Relation zum gezeigten Code korrekt und erwartungsgemäß aus: Im ersten Schritt wird der String "Blau, Rot, Gelb, Schwarz" durch das Bild cmyk.jpg ersetzt; die folgenden drei Schritte können nichts mehr ausrichten, weil die Wörter "Schwarz", "Gelb", Rot" und "Blau" im String nun nicht mehr vorkommen - außer im alt-Attribut, und da könnte es unerwartete Resultate bringen, weil dort nur Text vorgesehen ist, kein HTML.

    Ansonsten: Wo liegt das Problem? Was erwartest du?

    So long,
     Martin

    1. Hallo Der,

      wir wissen natürlich nicht, was genau in $record['p_farbe'] steht.

      Dort steht z.B. "Blau, Rot, Gelb, Schwarz" oder "Blau" oder auch mal "Gelb"

      Ansonsten: Wo liegt das Problem? Was erwartest du?

      Ok, dann habe ich ein ganz anderes Problem, ich möchte gerne was in $record['p_farbe'] steht umwandeln lassen, wie oben gerade geschrieben kann mal das, mal das drin stehen, deshalb habe ich auch die "str_replace" auch 5 mal angelegt.

      1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

        Hallo Der,

        wir wissen natürlich nicht, was genau in $record['p_farbe'] steht.

        Dort steht z.B. "Blau, Rot, Gelb, Schwarz" oder "Blau" oder auch mal "Gelb"

        Ansonsten: Wo liegt das Problem? Was erwartest du?

        Ok, dann habe ich ein ganz anderes Problem, ich möchte gerne was in $record['p_farbe'] steht umwandeln lassen, wie oben gerade geschrieben kann mal das, mal das drin stehen, deshalb habe ich auch die "str_replace" auch 5 mal angelegt.

        Das habe ich mir schon gedacht. Du willst also Einzelbildchen mit den Farben anreihen? Nur so nebenbei: Die solltest Du dann noch ein bisschen größer machen (evtl. einfach nur skalieren). Sonst erkennen die Brillenschlangen, wie ich, nichts.

        Du bekommst dann ein weiteres Problem, das Du aber auch lösen kannst. Die Kommata und vermutlich auch die Leerzeichen müssen auch verschwinden.

        Das beste wäre, eine Funktion daraus zu machen, die beides erledigt.

        gucken wir uns doch str_replace() nochmal im Handbuch an. Da steht etwas von einer "ArrayVariante". Aber dann wird es spannend, weil bei der Ersetzung dann eventuell bereits ersetzte Begriffe wieder eingestanzt werden. Man muss ein wenig aufpassen.

        Spirituelle Grüße
        Euer Robert
        robert.r@online.de

        --
        Möge der wahre Forumsgeist ewig leben!
        1. Hallo robertroth,

          gucken wir uns doch str_replace() nochmal im Handbuch an. Da steht etwas von einer "ArrayVariante". Aber dann wird es spannend, weil bei der Ersetzung dann eventuell bereits ersetzte Begriffe wieder eingestanzt werden. Man muss ein wenig aufpassen.

          ich schau mir die Seite von dir gleich an, eine Frage vorab habe ich noch, wäre es besser aus "blaurotgelbschwarz" zu machen, dann hätte ich eindeutige Bezeichnungen und laufe nicht Gefahr, dass etwas doppelt vorkommt?

          1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

            gucken wir uns doch str_replace() nochmal im Handbuch an. Da steht etwas von einer "ArrayVariante". Aber dann wird es spannend, weil bei der Ersetzung dann eventuell bereits ersetzte Begriffe wieder eingestanzt werden. Man muss ein wenig aufpassen.

            ich schau mir die Seite von dir gleich an, eine Frage vorab habe ich noch, wäre es besser aus "blaurotgelbschwarz" zu machen, dann hätte ich eindeutige Bezeichnungen und laufe nicht Gefahr, dass etwas doppelt vorkommt?

            Jetzt hast Du etwas weggelassen. Aus welchem Text willst Du "blaurotgelbschwarz" machen?

            Du bist prinzipiell schon auf dem richtigen Weg, aber Du musst trotzdem aufpassen, und die Ersetzungen in der richtigen Reihenfolge durchführen und nichts wieder einzusetzen, was dann im folgenden Durchlauf nochmal ersetzt wird. Da baust Du dann eine Art zyklischen Verlauf. Das kann bei str_replace in der Array-Variante passieren.

            Im Moment ist Dir aber genau das Gegenteil passiert.

            Spirituelle Grüße
            Euer Robert
            robert.r@online.de

            --
            Möge der wahre Forumsgeist ewig leben!
            1. Hallo robertroth,

              Jetzt hast Du etwas weggelassen. Aus welchem Text willst Du "blaurotgelbschwarz" machen?

              aus diesem "Blau, Rot, Gelb, Schwarz" dieser kommt genau so aus der Datenbank.

              1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                Jetzt hast Du etwas weggelassen. Aus welchem Text willst Du "blaurotgelbschwarz" machen?

                aus diesem "Blau, Rot, Gelb, Schwarz" dieser kommt genau so aus der Datenbank.

                Ich glaub das noch nicht. :-O

                Wie überzeugst Du dich denn davon, dass da wirklich keine Zeilenumbrüche drin sind? VarChar-Spalten können ja ohne weiteres Zeilenumbrüche verkraften. Wie sind denn die Eingaben in die Datenbank gekommen?

                Spirituelle Grüße
                Euer Robert
                robert.r@online.de

                --
                Möge der wahre Forumsgeist ewig leben!
                1. Hallo robertroth,

                  Ich glaub das noch nicht. :-O

                  Sag mir was ich machen soll, um es dir zu beweisen :)

                  Wie überzeugst Du dich denn davon, dass da wirklich keine Zeilenumbrüche drin sind? VarChar-Spalten können ja ohne weiteres Zeilenumbrüche verkraften. Wie sind denn die Eingaben in die Datenbank gekommen?

                  hat meine Freundin rein kopiert :D

                  1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                    Ich glaub das noch nicht. :-O

                    Sag mir was ich machen soll, um es dir zu beweisen :)

                    Wie überzeugst Du dich denn davon, dass da wirklich keine Zeilenumbrüche drin sind? VarChar-Spalten können ja ohne weiteres Zeilenumbrüche verkraften. Wie sind denn die Eingaben in die Datenbank gekommen?

                    hat meine Freundin rein kopiert :D

                    Prima, kann man die ausleihen? :-P

                    Wir lassen mal kurz die DBMS-Seite ruhen und schauen uns nun endlich den HTML-Code (Quelltext anzeigen im Browser) an, der zu der falschen Darstellung gehört. Dann sehen wir weiter.

                    siehe hierzu auch anderer Strang im Thread

                    Spirituelle Grüße
                    Euer Robert
                    robert.r@online.de

                    --
                    Möge der wahre Forumsgeist ewig leben!
                    1. Hallo robertroth,

                      Prima, kann man die ausleihen? :-P

                      soll ich dir mal die eMail Adresse geben :-P Wir kommen allerdings aus der Domstadt.

  2. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

    ich habe ein Problem mit meinem "str_replace"

    $fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
    $fghzh= str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">", $record['p_farbe']);
    $fghzh= str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $record['p_farbe']);
    $fghzh= str_replace ("Rot", "<img src=\"img/icons/farben/magenta.jpg\" alt=\"Magenta\">", $record['p_farbe']);
    $fghzh= str_replace ("Blau", "<img src=\"img/icons/farben/cyan.jpg\" alt=\"Cyan\">", $record['p_farbe']);
    

    Alternativ-Text

    Lass ich nur die erste stehen wird es richtig umgewandelt

    Alternativ-Text

    Warum wird die eine mit der anderen Überschrieben? Ich teile doch genau mit, was umgewandelt werden soll.

    Das ist ejtzt eine Denksportaufgabe, die wir nicht lösen können.
    Ich war eben auch schon auf dem falschen Dampfer, weil ich dachte, dass Du alle Farben einzeln darstellen wolltest als Bild. Dann müsstest Du die Array-Variaante von str_replace() benutzten.

    Aber dann habe ich erst "cmyk.jpg" gesehen...

    Es wäre hilfreich, wenn Du uns zeigst:

    • was in ['p_farbe'] steht
    • was als HTML-Code nach der Ersetzung heraus kommt

    Hast Du vielleicht einfach nur "Schwarz, Gelb, Rot, Blau" mit "Blau, Rot, Gelb, Schwarz" vertauscht?
    Aber dann würde gar nichts ersetzt werden. Dass nur Blau ersetzt wird gegen ein Bild ist unwahrscheinlich. Da verheimlichst Du uns noch etwas.

    Spirituelle Grüße
    Euer Robert
    robert.r@online.de

    --
    Möge der wahre Forumsgeist ewig leben!
    1. Hallo robertroth,

      Es wäre hilfreich, wenn Du uns zeigst:

      • was in ['p_farbe'] steht

      Dort steht z.B. „Blau, Rot, Gelb, Schwarz“ oder „Blau“ oder auch mal „Gelb“

      • was als HTML-Code nach der Ersetzung heraus kommt

      Wenn ich mit den Quelltext anschaue, dann kommt dieses raus:

      <p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p>
      
      1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

        Es wäre hilfreich, wenn Du uns zeigst:

        • was in ['p_farbe'] steht

        Dort steht z.B. „Blau, Rot, Gelb, Schwarz“ oder „Blau“ oder auch mal „Gelb“

        • was als HTML-Code nach der Ersetzung heraus kommt

        Wenn ich mit den Quelltext anschaue, dann kommt dieses raus:

        <p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p>
        

        Bitte versuche mal, die ganze Aufgabe einmal komplett zu posten:

        • Ausgangssituation: was steht in ['p_farbe'] drin? Lass das im Testcode einfach mal ausgeben
        • Wie sieht der Programmcode aus? Bitte das Stück komplett posten
        • Wie sieht der Sreenshosts aus?
        • Welcher HTML-Quellcode gehört dazu.

        Du hast uns hier ja zwei Versuche gezeigt und ich befürchte, dass Du dann in deiner Doku für uns etwas durcheinander gebracht hast.

        Spirituelle Grüße
        Euer Robert
        robert.r@online.de

        --
        Möge der wahre Forumsgeist ewig leben!
        1. Hallo robertroth,

          Bitte versuche mal, die ganze Aufgabe einmal komplett zu posten:

          mach ich doch gerne :)

          • Ausgangssituation: was steht in ['p_farbe'] drin? Lass das im Testcode einfach mal ausgeben

          Dort steht z.B. „Blau, Rot, Gelb, Schwarz“ oder „Blau“ oder auch mal „Gelb“ drin.

          Alternativ-Text

          • Wie sieht der Programmcode aus? Bitte das Stück komplett posten

          Das ist der gleiche von dir gestern, ich habe diesen nur etwas erweitert:

                  <?php 
          		$group = '';
          
                  foreach($test456 as $record)
                  {
                      if ($group != $record['p_pkategorie'])
          			
          		$fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
          		$fghzh= str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">", $record['p_farbe']);
          		$fghzh= str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $record['p_farbe']);
          		$fghzh= str_replace ("Rot", "<img src=\"img/icons/farben/magenta.jpg\" alt=\"Magenta\">", $record['p_farbe']);
          		$fghzh= str_replace ("Blau", "<img src=\"img/icons/farben/cyan.jpg\" alt=\"Cyan\">", $record['p_farbe']);
                      
          			{   
                          echo "<div class=\"klio\">";
          				echo '<h2 class="toner_titel">' . htmlspecialchars($record['pk_titel']) . "</h2>";
                          $group = $record['p_pkategorie'];
                      }
          
                      echo '<p>' . htmlspecialchars($record['p_bezeichnung']) ."</p>";
          			echo '<p>ArtNr.: ' . htmlspecialchars($record['p_artnr']) ."</p>";
          			echo '<p>Farbe: '  . $fghzh ."</p>";
          			echo '<p>Inhalt: ' . htmlspecialchars($record['p_bezeichnung']) ."</p>";
          			echo '<p>Preis: '  . htmlspecialchars($record['p_preis']) ." €</p>";
          			echo '<br>'; 
                  } 
          			echo "</div>";
          		?>
          
          • Wie sieht der Sreenshosts aus?

          Die Ausgabe sieht so aus

          Alternativ-Text

          Und die Einträge in der DB so:

          (siehe Bild oben)

          • Welcher HTML-Quellcode gehört dazu.
          <p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p>
          
          1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

            • Ausgangssituation: was steht in ['p_farbe'] drin? Lass das im Testcode einfach mal ausgeben

            Dort steht z.B. „Blau, Rot, Gelb, Schwarz“ oder „Blau“ oder auch mal „Gelb“ drin.

            Alternativ-Text

            Könnte sein, dass wir den Übertäter da haben, aber nur vielleicht. Das ist doch ein Screenschot vom DB-Client, oder? Steht da wirklich

            Blau, Rot, Gelb, Schwarz
            

            und der Zeilenumbruch wird nur durch die Anzeige des Client verursacht

            oder steht da im Datenfeld vielleicht wirklich

            Blau,
            Rot,
            Gelb,
            Schwarz
            

            und wir sehen nur die Zeilenumbrüche nicht?

            Für str_replace() wäre der Umbruch aber auch ein oder zwei Bytes, warum dann CMYK am Stück nicht ersetzt werden würde. Dann wäre das Ganze für mich so langsam plausibel.

            Spirituelle Grüße
            Euer Robert
            robert.r@online.de

            --
            Möge der wahre Forumsgeist ewig leben!
            1. Hallo robertroth,

              Könnte sein, dass wir den Übertäter da haben, aber nur vielleicht. Das ist doch ein Screenschot vom DB-Client, oder? Steht da wirklich

              Blau, Rot, Gelb, Schwarz
              

              nehme ich nur diese Anweisung:

              $fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
              
              

              kommt dieses raus:

              Alternativ-Text

              füge ich die ANDEREN noch dazu, wir genau aus dem richtigen ein falscher

              Alternativ-Text

              Das heißt also, das eine wird mit dem anderen überschrieben, nur ich verstehe nicht warum.

              1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                Könnte sein, dass wir den Übertäter da haben, aber nur vielleicht. Das ist doch ein Screenschot vom DB-Client, oder? Steht da wirklich

                Blau, Rot, Gelb, Schwarz
                

                nehme ich nur diese Anweisung:

                $fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
                
                

                kommt dieses raus:

                Alternativ-Text

                füge ich die ANDEREN noch dazu, wir genau aus dem richtigen ein falscher

                Alternativ-Text

                Das heißt also, das eine wird mit dem anderen überschrieben, nur ich verstehe nicht warum.

                Weil Du das so programmiert hast ;-P

                Zeig doch bitte den erzeugten HTML-Code (aus dem Browser!), der zu dem Bild mit der falschen Darstellung gehört. Da hast Du vermutlich ein geschachteltes <img .... <img ....<img .... alt="..." >>> gebastelt.

                Spirituelle Grüße
                Euer Robert
                robert.r@online.de

                --
                Möge der wahre Forumsgeist ewig leben!
                1. Hallo robertroth,

                  Zeig doch bitte den erzeugten HTML-Code (aus dem Browser!), der zu dem Bild mit der falschen Darstellung gehört. Da hast Du vermutlich ein geschachteltes <img .... <img ....<img .... alt="..." >>> gebastelt.

                  wie gewünscht der komplette Code:

                  <div class="klio"><h2 class="toner_titel">Alternativ Tinten Spar-Set</h2><p>Alternativ zu Brother LC-900 Tinten Spar-Set (je 1 x BK,C,M,Y) 4 Stück</p><p>ArtNr.: KB-LC9004S</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p><p>Inhalt: Alternativ zu Brother LC-900 Tinten Spar-Set (je 1 x BK,C,M,Y) 4 Stück</p><p>Preis: 2,73 €</p><br><div class="klio"><h2 class="toner_titel">Alternativ Tinten Spar-Set</h2><p>Alternativ zu Brother LC 900 Tinten Spar-Set (4x BK, je 2xC,M,Y) 10 Stüc</p><p>ArtNr.: KB-LC900SS10</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p><p>Inhalt: Alternativ zu Brother LC 900 Tinten Spar-Set (4x BK, je 2xC,M,Y) 10 Stüc</p><p>Preis: 6,80 €</p><br><div class="klio"><h2 class="toner_titel">Alternativ Tinten Spar-Set</h2><p>Alternativ zu Brother LC-900 Spar-Set (6x BK, je 4x CMY) 18 Stück</p><p>ArtNr.: K-BRO-LC900SS18</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p><p>Inhalt: Alternativ zu Brother LC-900 Spar-Set (6x BK, je 4x CMY) 18 Stück</p><p>Preis: 12,16 €</p><br>Schwarz<div class="klio"><h2 class="toner_titel">Alternativ Tinte</h2><p>Alternativ zu Brother LC-900 BK Tinte Black</p><p>ArtNr.: 11001</p><p>Farbe: Schwarz</p><p>Inhalt: Alternativ zu Brother LC-900 BK Tinte Black</p><p>Preis: 0,74 €</p><br><div class="klio"><h2 class="toner_titel">Alternativ Tinte</h2><p>Alternativ zu Brother LC-900 C Tinte Cyan</p><p>ArtNr.: 11002</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan"></p><p>Inhalt: Alternativ zu Brother LC-900 C Tinte Cyan</p><p>Preis: 0,74 €</p><br><div class="klio"><h2 class="toner_titel">Alternativ Tinte</h2><p>Alternativ zu Brother LC-900 M Tinte Magenta</p><p>ArtNr.: 11003</p><p>Farbe: Magenta</p><p>Inhalt: Alternativ zu Brother LC-900 M Tinte Magenta</p><p>Preis: 0,74 €</p><br><div class="klio"><h2 class="toner_titel">Alternativ Tinte</h2><p>Alternativ zu Brother LC-900 Y Tinte Yellow</p><p>ArtNr.: 11004</p><p>Farbe: Gelb</p><p>Inhalt: Alternativ zu Brother LC-900 Y Tinte Yellow</p><p>Preis: 0,74 €</p><br>Blau, Rot, Gelb, Schwarz<div class="klio"><h2 class="toner_titel">Orginal Tinte Spar-Set</h2><p>Original Brother LC-900 Tinten Multipack (BK,C,M,Y) 4 Stück</p><p>ArtNr.: OB-LC900VALBPDR</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p><p>Inhalt: Original Brother LC-900 Tinten Multipack (BK,C,M,Y) 4 Stück</p><p>Preis: 33,85 €</p><br>Schwarz<div class="klio"><h2 class="toner_titel">Original Tinte</h2><p>Original Brother LC-900BK Tinte Black</p><p>ArtNr.: OB-LC900BK</p><p>Farbe: Schwarz</p><p>Inhalt: Original Brother LC-900BK Tinte Black</p><p>Preis: 14,24 €</p><br><div class="klio"><h2 class="toner_titel">Original Tinte</h2><p>Original Brother LC-900C Tinte Cyan</p><p>ArtNr.: OB-LC900C</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan"></p><p>Inhalt: Original Brother LC-900C Tinte Cyan</p><p>Preis: 7,99 €</p><br><div class="klio"><h2 class="toner_titel">Original Tinte</h2><p>Original Brother LC-900M Tinte Magenta</p><p>ArtNr.: OB-LC900M</p><p>Farbe: Magenta</p><p>Inhalt: Original Brother LC-900M Tinte Magenta</p><p>Preis: 7,99 €</p><br><div class="klio"><h2 class="toner_titel">Original Tinte</h2><p>Original Brother LC-900Y Tinte Yellow</p><p>ArtNr.: OB-LC900Y</p><p>Farbe: Gelb</p><p>Inhalt: Original Brother LC-900Y Tinte Yellow</p><p>Preis: 7,99 €</p><br></div>
                  
                  1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                    Zeig doch bitte den erzeugten HTML-Code (aus dem Browser!), der zu dem Bild mit der falschen Darstellung gehört. Da hast Du vermutlich ein geschachteltes <img .... <img ....<img .... alt="..." >>> gebastelt.

                    wie gewünscht der komplette Code:

                    <div class="klio"><h2 class="toner_titel">Alternativ Tinten Spar-Set</h2><p>Alternativ zu Brother LC-900 Tinten Spar-Set (je 1 x BK,C,M,Y) 4 Stück</p><p>ArtNr.: KB-LC9004S</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p><p>Inhalt: Alternativ zu Brother LC-900 Tinten Spar-Set (je 1 x BK,C,M,Y) 4 Stück</p><p>Preis: 2,73 €</p><br><div class="klio"><h2 class="toner_titel">Alternativ Tinten Spar-Set</h2><p>Alternativ zu Brother LC 900 Tinten Spar-Set (4x BK, je 2xC,M,Y) 10 Stüc</p><p>ArtNr.: KB-LC900SS10</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p><p>Inhalt: Alternativ zu Brother LC 900 Tinten Spar-Set (4x BK, je 2xC,M,Y) 10 Stüc</p><p>Preis: 6,80 €</p><br><div class="klio"><h2 class="toner_titel">Alternativ Tinten Spar-Set</h2><p>Alternativ zu Brother LC-900 Spar-Set (6x BK, je 4x CMY) 18 Stück</p><p>ArtNr.: K-BRO-LC900SS18</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p><p>Inhalt: Alternativ zu Brother LC-900 Spar-Set (6x BK, je 4x CMY) 18 Stück</p><p>Preis: 12,16 €</p><br>Schwarz<div class="klio"><h2 class="toner_titel">Alternativ Tinte</h2><p>Alternativ zu Brother LC-900 BK Tinte Black</p><p>ArtNr.: 11001</p><p>Farbe: Schwarz</p><p>Inhalt: Alternativ zu Brother LC-900 BK Tinte Black</p><p>Preis: 0,74 €</p><br><div class="klio"><h2 class="toner_titel">Alternativ Tinte</h2><p>Alternativ zu Brother LC-900 C Tinte Cyan</p><p>ArtNr.: 11002</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan"></p><p>Inhalt: Alternativ zu Brother LC-900 C Tinte Cyan</p><p>Preis: 0,74 €</p><br><div class="klio"><h2 class="toner_titel">Alternativ Tinte</h2><p>Alternativ zu Brother LC-900 M Tinte Magenta</p><p>ArtNr.: 11003</p><p>Farbe: Magenta</p><p>Inhalt: Alternativ zu Brother LC-900 M Tinte Magenta</p><p>Preis: 0,74 €</p><br><div class="klio"><h2 class="toner_titel">Alternativ Tinte</h2><p>Alternativ zu Brother LC-900 Y Tinte Yellow</p><p>ArtNr.: 11004</p><p>Farbe: Gelb</p><p>Inhalt: Alternativ zu Brother LC-900 Y Tinte Yellow</p><p>Preis: 0,74 €</p><br>Blau, Rot, Gelb, Schwarz<div class="klio"><h2 class="toner_titel">Orginal Tinte Spar-Set</h2><p>Original Brother LC-900 Tinten Multipack (BK,C,M,Y) 4 Stück</p><p>ArtNr.: OB-LC900VALBPDR</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan">, Rot, Gelb, Schwarz</p><p>Inhalt: Original Brother LC-900 Tinten Multipack (BK,C,M,Y) 4 Stück</p><p>Preis: 33,85 €</p><br>Schwarz<div class="klio"><h2 class="toner_titel">Original Tinte</h2><p>Original Brother LC-900BK Tinte Black</p><p>ArtNr.: OB-LC900BK</p><p>Farbe: Schwarz</p><p>Inhalt: Original Brother LC-900BK Tinte Black</p><p>Preis: 14,24 €</p><br><div class="klio"><h2 class="toner_titel">Original Tinte</h2><p>Original Brother LC-900C Tinte Cyan</p><p>ArtNr.: OB-LC900C</p><p>Farbe: <img src="img/icons/farben/cyan.jpg" alt="Cyan"></p><p>Inhalt: Original Brother LC-900C Tinte Cyan</p><p>Preis: 7,99 €</p><br><div class="klio"><h2 class="toner_titel">Original Tinte</h2><p>Original Brother LC-900M Tinte Magenta</p><p>ArtNr.: OB-LC900M</p><p>Farbe: Magenta</p><p>Inhalt: Original Brother LC-900M Tinte Magenta</p><p>Preis: 7,99 €</p><br><div class="klio"><h2 class="toner_titel">Original Tinte</h2><p>Original Brother LC-900Y Tinte Yellow</p><p>ArtNr.: OB-LC900Y</p><p>Farbe: Gelb</p><p>Inhalt: Original Brother LC-900Y Tinte Yellow</p><p>Preis: 7,99 €</p><br></div>
                    

                    Mmmh

                    Geschachtelte <img> hast Du also nicht produziert.
                    Also liegt der Fehler woanders. Müssen wir uns doch die DBMS-Seite nochmal angucken.

                    Und dein HTML-Modul hat jetzt andere Fehler. Die schließenden </div> fehlen. Wenn Du eines öffnest, solltest Du es auch wieder schließen. Aber das erst später.

                    Spirituelle Grüße
                    Euer Robert
                    robert.r@online.de

                    --
                    Möge der wahre Forumsgeist ewig leben!
                    1. Hallo robertroth,

                      Mmmh

                      So geht es mir leider auch :/

                      Geschachtelte <img> hast Du also nicht produziert.
                      Also liegt der Fehler woanders. Müssen wir uns doch die DBMS-Seite nochmal angucken.

                      Wo könnten wir hier anfangen?

                      Und dein HTML-Modul hat jetzt andere Fehler. Die schließenden </div> fehlen. Wenn Du eines öffnest, solltest Du es auch wieder schließen. Aber das erst später.

                      Das Problem ist mir bekannt, hab dazu gestern Abend hier bereits etwas geschrieben, dass ich mit dem Code etwas durcheinander komme.

                      1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                        Geschachtelte <img> hast Du also nicht produziert.
                        Also liegt der Fehler woanders. Müssen wir uns doch die DBMS-Seite nochmal angucken.

                        Wo könnten wir hier anfangen?

                        Ich denk mal drüber nach.
                        Für den Anfang gibst Du einfach mal dein $record['p_farbe'] aus:

                        echo "<pre>\r\n";
                        echo htmlspecialchars($record['p_farbe']);
                        echo "</pre>\r\n";
                        

                        Und guckst Dir dann den Quelltext im Browser an und zeigst ihn uns.

                        Das Problem ist mir bekannt, hab dazu gestern Abend hier bereits etwas geschrieben, dass ich mit dem Code etwas durcheinander komme.

                        In welcher der vielen Domstädte steckt Ihr denn?

                        Spirituelle Grüße
                        Euer Robert
                        robert.r@online.de

                        --
                        Möge der wahre Forumsgeist ewig leben!
                        1. Hallo robertroth,

                          echo "<pre>\r\n";
                          echo htmlspecialchars($record['p_farbe']);
                          echo "</pre>\r\n";
                          

                          Und guckst Dir dann den Quelltext im Browser an und zeigst ihn uns.

                          Dieses kommt dabei raus:

                          <pre>
                          Blau, Rot, Gelb, Schwarz<pre>
                          
                          

                          Alternativ-Text

                          In welcher der vielen Domstädte steckt Ihr denn?

                          Ein Gebäude wurde im Jahre 1880 eröffnet. Baubeginn war 1248 :)

                    2. Hallo robertroth,

                      ich habe meinen Code mal etwas gedreht:

                      $fghzh= str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">", $record['p_farbe']);
                      $fghzh= str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $record['p_farbe']);
                      $fghzh= str_replace ("Rot", "<img src=\"img/icons/farben/magenta.jpg\" alt=\"Magenta\">", $record['p_farbe']);
                      $fghzh= str_replace ("Blau", "<img src=\"img/icons/farben/cyan.jpg\" alt=\"Cyan\">", $record['p_farbe']);
                      $fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
                      

                      Nun kommt folgendes raus

                      Alternativ-Text

                      der letzte überschriebt den ersten, warum, weiß ich überhaupt nicht, denn ich sag str_replace doch genau was ersetzt werden soll :/

                      1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                        Hallo robertroth,

                        ich habe meinen Code mal etwas gedreht:

                        $fghzh= str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">", $record['p_farbe']);
                        $fghzh= str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $record['p_farbe']);
                        $fghzh= str_replace ("Rot", "<img src=\"img/icons/farben/magenta.jpg\" alt=\"Magenta\">", $record['p_farbe']);
                        $fghzh= str_replace ("Blau", "<img src=\"img/icons/farben/cyan.jpg\" alt=\"Cyan\">", $record['p_farbe']);
                        $fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
                        

                        Nun kommt folgendes raus

                        Alternativ-Text

                        der letzte überschriebt den ersten, warum, weiß ich überhaupt nicht, denn ich sag str_replace doch genau was ersetzt werden soll :/

                        Sind denn die Images überhaupt in dem Pfad, in dem Du sie suchst? Nachher werden ganz richtig nur die Alternativtexte angezeigt, weil gelb, rot und schwarz nicht da sind oder anders heißen (Groß/Kleinschreibung) als Du denkst.

                        Spirituelle Grüße
                        Euer Robert
                        robert.r@online.de

                        --
                        Möge der wahre Forumsgeist ewig leben!
                        1. Hallo robertroth,

                          Sind denn die Images überhaupt in dem Pfad, in dem Du sie suchst? Nachher werden ganz richtig nur die Alternativtexte angezeigt, weil gelb, rot und schwarz nicht da sind oder anders heißen (Groß/Kleinschreibung) als Du denkst.

                          ja, die liegen im gleichen Ordner wie die Datei "cmyk.jpg" Im Quelltext steht folgende, sprich es wird überhaupt nicht umgewandelt: <p>Farbe: Blau</p>

                          1. Hallo robertroth,

                            hier meine Lösung, vielleicht habt ihr ja noch etwas anderes

                            if ($record['p_farbe'] == "Blau") {
                            	$fghzh= str_replace ("Blau", "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">", $record['p_farbe']);
                            			}
                            if ($record['p_farbe'] == "Gelb") {
                            	$fghzh= str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $record['p_farbe']);
                            			}
                            if ($record['p_farbe'] == "Rot") {
                            	$fghzh= str_replace ("Rot", "<img src=\"img/icons/farben/magenta.jpg\" alt=\"Magenta\">", $record['p_farbe']);
                            			}
                            if ($record['p_farbe'] == "Blau") {
                            	$fghzh= str_replace ("Blau", "<img src=\"img/icons/farben/cyan.jpg\" alt=\"Cyan\">", $record['p_farbe']);
                            			}
                            if ($record['p_farbe'] == "Blau, Rot, Gelb, Schwarz") {
                            	$fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
                            			}
                            

                            Alternativ-Text

                            1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                              hier meine Lösung, vielleicht habt ihr ja noch etwas anderes

                              Leider falsch!

                              $fghzh = str_replace ("Blau", "<img src=\"img/icons/farben/cyan.jpg\" alt=\"Cyan\">", $record['p_farbe']);
                              
                              $fghzh = str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $fghzh); 
                              
                              $fghzh = str_replace ("Rot", "<img src=\"img/icons/farben/magenta.jpg\" alt=\"Magenta\">", $fghzh );
                              
                              $fghzh = str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Black\">", $fghzh);
                              

                              Da müssen dann noch die Kommata und eventuell die Lücken zwischen den Bildchen beseitigt werden. Und außerdem kann man dann auch die Array-Variante von str_replace() benutzen mit einem einzigen Aufruf.

                              Spirituelle Grüße
                              Euer Robert
                              robert.r@online.de

                              --
                              Möge der wahre Forumsgeist ewig leben!
                              1. Hallo robertroth,

                                $fghzh = str_replace ("Blau", "<img src=\"img/icons/farben/cyan.jpg\" alt=\"Cyan\">", $record['p_farbe']);
                                
                                $fghzh = str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $fghzh); 
                                
                                $fghzh = str_replace ("Rot", "<img src=\"img/icons/farben/magenta.jpg\" alt=\"Magenta\">", $fghzh );
                                
                                $fghzh = str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Black\">", $fghzh);
                                

                                Da müssen dann noch die Kommata und eventuell die Lücken zwischen den Bildchen beseitigt werden.

                                Wo siehst du hier bitte Kommas? Und von welchen Lücken sprichst du? Schau dir mal das Bild an, das ich gerade mit hochgeladen habe, die Ausgabe schaut gut aus.

                                1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                                  Hallo robertroth,

                                  $fghzh = str_replace ("Blau", "<img src=\"img/icons/farben/cyan.jpg\" alt=\"Cyan\">", $record['p_farbe']);
                                  
                                  $fghzh = str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $fghzh); 
                                  
                                  $fghzh = str_replace ("Rot", "<img src=\"img/icons/farben/magenta.jpg\" alt=\"Magenta\">", $fghzh );
                                  
                                  $fghzh = str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Black\">", $fghzh);
                                  

                                  Da müssen dann noch die Kommata und eventuell die Lücken zwischen den Bildchen beseitigt werden.

                                  Wo siehst du hier bitte Kommas? Und von welchen Lücken sprichst du? Schau dir mal das Bild an, das ich gerade mit hochgeladen habe, die Ausgabe schaut gut aus.

                                  Kein Bild da!

                                  Spirituelle Grüße
                                  Euer Robert
                                  robert.r@online.de

                                  --
                                  Möge der wahre Forumsgeist ewig leben!
                                  1. Hallo robertroth,

                                    Kein Bild da!

                                    Bildbeschreibung

                            2. Hallo,

                              gibt es eigentlich zwischen diesen beiden Schreibweisen einen Unterschied? Ich persönlich mag die zweite lieber.

                              if ($record['p_farbe'] == "Schwarz") {
                                  $fghzh= str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">", $record['p_farbe']);
                              			}
                              if ($record['p_farbe'] == "Schwarz"):
                                  $fghzh= str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">", $record['p_farbe']);
                              endif;
                              
                              1. @@Jnnbo

                                gibt es eigentlich zwischen diesen beiden Schreibweisen einen Unterschied? Ich persönlich mag die zweite lieber.

                                Echt? In reinem PHP-Code würde ich ausschließlich die erste verwenden.

                                Die zweite ist vorteilhaft bei Ausgaben, wo PHP und HTML gemischt vorkommen. Das ist sehr unübersichtlich:

                                <?php
                                if ($product['isAvailable'])
                                {
                                  echo '<label for="qantity">' . $messages['label-for-quantity'] . '</label>';
                                  echo '<input type="number" id="qantity" name="qantity" min="0" max="' . $product['maxQuantity'] . '" required/>';
                                }
                                else
                                {
                                  echo '<p>' . $messages['product-sold-out'] . '</p>';
                                }
                                ?>
                                

                                Das hingegen gut lesbar:

                                <?php if ($product['isAvailable']): ?>
                                  <label for="qantity"><?= $messages['label-for-quantity'] ?></label>
                                  <input type="number" id="qantity" name="qantity" min="0" max="<?= $product['maxQuantity'] ?>" required/>
                                <?php else: ?>
                                  <p><?= $messages['product-sold-out'] ?></p>
                                <?php endif; ?>
                                

                                Ich hatte in diesen beiden Postings mal aufgeschrieben, warum man PHP in HTML schachteln sollte und nicht andersrum.

                                Leider ist das Archiv mit der Umstellung auf CForum 4 mehr oder weniger unbrauchbar geworden.

                                LLAP

                                --
                                „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
                                1. Tach!

                                  Die zweite ist vorteilhaft bei Ausgaben, wo PHP und HTML gemischt vorkommen.

                                  In beiden allerdings fehlt die kontextgerechte Behandlung der Ausgabewerte. Oder meinst du, man könne sie hier weglassen, weil es keine Nutzereingaben sondern Datenbankausgaben sind?

                                  Leider ist das Archiv mit der Umstellung auf CForum 4 mehr oder weniger unbrauchbar geworden.

                                  Das kommt davon, wenn man es mit der Code-Auszeichnungsverschachtelung übertreibt ;)

                                  dedlfix.

                                  1. @@dedlfix

                                    Tach!

                                    Die zweite ist vorteilhaft bei Ausgaben, wo PHP und HTML gemischt vorkommen.

                                    In beiden allerdings fehlt die kontextgerechte Behandlung der Ausgabewerte. Oder meinst du, man könne sie hier weglassen, weil es keine Nutzereingaben sondern Datenbankausgaben sind?

                                    Ich bin stillschweigend davon ausgegangen, dass im System sichergestellt ist, dass in $product['maxQuantity'] ein Zahlenwert steht. Und dass $messages so gepflegt wird, dass kein Bösewicht da Schadcode reinschreiben kann. Ja, spätestens, wenn da noch ein CMS dranhängt, ist das nicht die sicherste Annahme.

                                    Leider ist das Archiv mit der Umstellung auf CForum 4 mehr oder weniger unbrauchbar geworden.

                                    Das kommt davon, wenn man es mit der Code-Auszeichnungsverschachtelung übertreibt ;)

                                    Nun, ich hab den Code nach den damaligen Regeln der Kunst ausgezeichnet, damit sowohl der eine als auch der andere richtig dargestellt wird wurde. Konnte man ja nicht ahnen, dass sich mal jemand abschickt, das kaputtzumachen.

                                    LLAP

                                    --
                                    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
                                    1. Tach!

                                      Ich bin stillschweigend davon ausgegangen, dass im System sichergestellt ist, dass in $product['maxQuantity'] ein Zahlenwert steht. Und dass $messages so gepflegt wird, dass kein Bösewicht da Schadcode reinschreiben kann. Ja, spätestens, wenn da noch ein CMS dranhängt, ist das nicht die sicherste Annahme.

                                      Mit Schadcode ist das so ähnlich wie mit den Sonderzeichen. Nicht die Absicht oder die Annahme einzelner Personen zählt, sondern der Kontext. Auch in Daten, die nach landläufiger Meinung kein Schadecode sind, kommen regulär Zeichen vor, die Schaden anrichten können (kaputte Ausgabe zum Beispiel), wenn man sie nicht beachtet. Bei Zahlen, bei denen das sichergestellt ist, mag das Einfügen problemlos sein. Bei anderem Text sollte man nicht davon ausgehen, dass er frei von Sonderzeichen ist. Vor allem dann nicht, wenn am Anfang der Verarbeitungskette eine Eingabe erfolgte. Selbst vertrauenswürdige Personen erinnern sich nicht in jedem Fall daran, dass man da keine Anführungszeichen eingeben darf, wenn hintenraus kein Unfall entstehen soll. - Wie die Daten aber nun konkret ins System gelangt sind, ist bei der Ausgabe nebensächlich. Solange keine Sonderzeichenfreiheit garantiert werden kann, muss die kontextgerechte Maskierung erfolgen.

                                      dedlfix.

                                      1. @@dedlfix

                                        Selbst vertrauenswürdige Personen erinnern sich nicht in jedem Fall daran, dass man da keine Anführungszeichen eingeben darf

                                        Vertrauenswürdige Personen erinnern sich in jedem Fall daran, dass " und ' keine Anführungszeichen sind und im Text nichts zu suchen haben. ;-)

                                        (Eine Ausnahme von der Regel findest du weiter unten.)

                                        Nachtrag: Ach nee, nicht mehr. Da steht ja jetzt LLAP, nicht Qapla'.

                                        wenn hintenraus kein Unfall entstehen soll.

                                        Der sollte spätestens in der QA auffallen.

                                        Aber natürlich behandelt man Daten lieber auch dann, wenn es nicht unbedingt erforderlich wäre, als es an entscheidender Stelle nicht zu tun. Also immer.

                                        LLAP

                                        --
                                        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
                                        1. @@Gunnar Bittersmann

                                          Aber natürlich behandelt man Daten lieber auch dann, wenn es nicht unbedingt erforderlich wäre, als es an entscheidender Stelle nicht zu tun. Also immer.

                                          Ich hätte nichts dagegen, wenn echo und <?= Daten automatisch durch htmlspecialchars() schicken würde.

                                          Für Leute, die wissen, was sie tun, stünden echo_without_htmlspecialchars und <?== bereit.

                                          LLAP

                                          --
                                          „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
                                  2. Hallo dedlfix,

                                    In beiden allerdings fehlt die kontextgerechte Behandlung der Ausgabewerte. Oder meinst du, man könne sie hier weglassen, weil es keine Nutzereingaben sondern Datenbankausgaben sind?

                                    wenn ich bei mir

                                    echo '<p>Farbe: '  . htmlspecialchars($fghzh) ."</p>";
                                    

                                    anwende, dann wird dieses

                                    if ($record['p_farbe'] == "Blau, Rot, Gelb, Schwarz") {
                                        $fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
                                    }
                                    

                                    besser gesagt dieses

                                    <img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">
                                    

                                    genau so als HTML ausgegeben, was ja nicht Sinn der Sache ist, deshalb habe ich bei mir das "htmlspecialchars" weg gelassen.

                                    1. Tach!

                                      Mal generell gesagt: Man kann zwar so lange Lösugen suchen, bis es funktioniert, ohne das Prinzip dahinter zu verstehen. Das mag in deinem privaten Projekt alles halb so wild sein, aber wenn dein nächstes öffentlich wird, ist die Angelegenheit schon kritischer zu sehen. Es ist ja nicht nur deine Anwendung betroffen, wenn sie unsicher ist. Das ganze Internet leidet unter Angriffen die vor allem von gekaperten Rechnern und Anwendungen ausgeführt werden.

                                      wenn ich bei mir

                                      echo '<p>Farbe: '  . htmlspecialchars($fghzh) ."</p>";
                                      

                                      anwende, dann wird dieses genau so als HTML ausgegeben, was ja nicht Sinn der Sache ist, deshalb habe ich bei mir das "htmlspecialchars" weg gelassen.

                                      Das Prinzip ist im Artikel zum Kontextwechsel beschrieben. Du darfst nicht einfach alle Ausgaben behandeln, du musst das gezielt anhand des Kontextes / der Situation und für jeden/jede individuell durchführen. Dazu musst du erkennen, wann welcher Kontext vorliegt und wissen, welche besonderen Zeichen für diesen berücksichtigt werden müssen und welche Hilfsfunktion das für dich erledigt.

                                      Wenn du bereits ein HTML-Fragement hat, und das in anderes HTML einfügen möchtest, muss das ohne weitere Behandlung geschehen. Wenn in diesem Stück aber bereits vorher Daten unbekannten Aussehens eingefügt worden sind, dann musste bei diesem Einfügen der Wechsel in den Kontext HTML beachtet werden.

                                      dedlfix.

                                2. Hallo Gunnar Bittersmann,

                                  Ich hatte in diesen beiden Postings mal aufgeschrieben, warum man PHP in HTML schachteln sollte und nicht andersrum.

                                  Leider ist das Archiv mit der Umstellung auf CForum 4 mehr oder weniger unbrauchbar geworden.

                                  Das zweite hab ich schon mal repariert, es war es wert ;-) Das erste bearbeite ich morgen, wenn ich es nicht vergesse.

                                  Bis demnächst
                                  Matthias

                                  --
                                  Signaturen sind bloed (Steel) und Markdown ist mächtig.
                          2. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                            Sind denn die Images überhaupt in dem Pfad, in dem Du sie suchst? Nachher werden ganz richtig nur die Alternativtexte angezeigt, weil gelb, rot und schwarz nicht da sind oder anders heißen (Groß/Kleinschreibung) als Du denkst.

                            ja, die liegen im gleichen Ordner wie die Datei "cmyk.jpg" Im Quelltext steht folgende, sprich es wird überhaupt nicht umgewandelt: <p>Farbe: Blau</p>

                            Weil Du die Variable nicht durchreichst, sondern immer wieder das Original als Ausgangswert benutzt. Wenn Du die Variable aber gleich durchreichst, erhalten wir die von mir vorhin erwarteten geschachtelten <img>'s.

                            Durchreichen heißt, dass man das, was bei der ersten Operation rauskommt (dein $fghzh) in das zweite Statement wieder einsetzt anstelle von $record['p_farbe']

                            Lass die Zeile mit CMYK bitt erst einmal weg. Was dann rauskommen wird, sollte schon halbwegs brauchbar werden. Reparieren werden wir es anschließend

                            Das Konzept muss also auch korrigiert werden!

                            Spirituelle Grüße
                            Euer Robert
                            robert.r@online.de

                            --
                            Möge der wahre Forumsgeist ewig leben!
  3. @@Jnnbo

    Warum eigentlich <img src="img/icons/farben/black.jpg" alt="Schwarz">? Wozu die Bilder?

    Das tut’s auch, und besser:

    <span class="color-icon black">Schwarz</span>
    

    Im Stylesheet steht dann sowas wie

    .color-icon { display: inline-block; width: 0.5em; height: 0.5em }
    .color-icon.black { background: black }
    .color-icon.yellow { background: yellow }
    

    Den Text kannst du mit image replacement verstecken.

    Besonders barrierefrei ist das aber nicht.

    Aber die Farbe steht ja (verschlüsselt) auch im Begleittext. Warum ist der denn zweimal da?

    LLAP

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. Hallo Gunnar,

      Warum eigentlich <img src="img/icons/farben/black.jpg" alt="Schwarz">? Wozu die Bilder?

      Weil mir bis jetzt noch keine bessere Lösung eingefallen ist.

      Das tut’s auch, und besser:

      <span class="color-icon black">Schwarz</span>
      

      Sehr gut Idee, ich werde gleich mal versuchen dieses einzubauen, dann kann ich auf die Bilder verzichten.

      Im Stylesheet steht dann sowas wie

      .color-icon { display: inline-block; width: 0.5em; height: 0.5em }
      .color-icon.black { background: black }
      .color-icon.yellow { background: yellow }
      

      Den Text kannst du mit image replacement verstecken. Besonders barrierefrei ist das aber nicht.

      Die Frage ist, benötige ich den Text überhaupt in den <span>? Es würde doch auch so gehen?

      <span class="color-icon black"></span>
      

      Aber die Farbe steht ja (verschlüsselt) auch im Begleittext. Warum ist der denn zweimal da?

      Die Texte kommen so von einem Lieferanten. Diese werden zwar der Reihe nach angepasst, aber bei gut 40.000 Artikel ist dieses sehr mühsam.

      1. @@Jnnbo

        Das tut’s auch, und besser:

        <span class="color-icon black">Schwarz</span>
        

        Den Text kannst du mit image replacement verstecken. Besonders barrierefrei ist das aber nicht.

        Die Frage ist, benötige ich den Text überhaupt in den <span>? Es würde doch auch so gehen?

        <span class="color-icon black"></span>
        

        Für Barrierefreiheit brauchst du ihn.

        LLAP

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    2. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

      Warum eigentlich <img src="img/icons/farben/black.jpg" alt="Schwarz">? Wozu die Bilder?

      Es könnten auch mal Symbolbilder der Produkte angezeigt werden sollen.

      Jnnbo ist ja noch in der Übungsphase. Besser wäre sicherlich ein eigener Datensatz pro Farbe, denn ein Toner oder eine Tinte mit einer anderen Farbe wird ja auch eine andere Artikelnummer haben und evtl. auch einen anderen Preis. Bei meinen Farbtonern war früher der YELLOW immer am teuersten. Bei BLACK gab es dafür zwei Füllmengen für Standard-Bunt-Drucker und für oft-doch-hauptsächlich-Schwarz-Drucker :-)

      So ein Artikelmodell in einer Datenbank abzubilden ist eine Aufgabe für sich.

      Das tut’s auch, und besser:

      <span class="color-icon black">Schwarz</span>
      

      Was hältst Du denn dann davon, dem <span> wenigstens noch ein Title-Attribut zu verpassen?
      Und ist denn immer sichergestellt, dass schon alle Browser leere <span>-Elemente auch anzeigen? Da habe ich in meiner Liste noch stehen: Vorsicht bei leeren Elementen...
      Normalerweise sollte das Verhalten ja umgekehrt sein, und mit :empty dann das Verhalten für leer festgelegt werden können, aber was ist bei Browsern schon normal?

      <span class="color-icon black" title="Schwarz">&nbsp;</span>
      

      Im Stylesheet steht dann sowas wie

      .color-icon { display: inline-block; width: 0.8em; height: 0.8em; vertical-align: middle; }
      .color-icon.black { background: black; }
      .color-icon.yellow { background: yellow; }
      

      Den Text kannst du mit image replacement verstecken.

      Kannst Du das bitte noch etwas näher ausführen, wie Du das meinst?

      Besonders barrierefrei ist das aber nicht.

      Eben deshalb mindestens ein title-Attribut?

      Spirituelle Grüße
      Euer Robert
      robert.r@online.de

      --
      Möge der wahre Forumsgeist ewig leben!
      1. Hallo robertroth,

        Jnnbo ist ja noch in der Übungsphase. Besser wäre sicherlich ein eigener Datensatz pro Farbe, denn ein Toner oder eine Tinte mit einer anderen Farbe wird ja auch eine andere Artikelnummer haben und evtl. auch einen anderen Preis.

        deshalb steht bei mir auch jeder Datensatz in einer extra Zeile.

        Es gibt z.B. den Drucker: Brother - DCP-110 Series dazu gibt es vom Hersteller ein Komplettpaket mit allen 4 Farben, zusätzlich kann man sich auch alle 4 Farben einzeln kaufen, also haben ich allein schon 5 Datensätze für diesen Artikel. Jetzt kommt aber noch hinzu, dass es für jeden Drucker sogenannte "Alternativ Tinte / Toner" gibt. Also kommen nochmals 5 Datensätze hinzu, wären wir nun bei 10 Stück für diesen Artikel. Jetzt kann es auch noch passieren, dass der Hersteller "Spar-Sets" anbietet :/

        1. Tach!

          Es gibt z.B. den Drucker: Brother - DCP-110 Series dazu gibt es vom Hersteller ein Komplettpaket mit allen 4 Farben, zusätzlich kann man sich auch alle 4 Farben einzeln kaufen, also haben ich allein schon 5 Datensätze für diesen Artikel. Jetzt kommt aber noch hinzu, dass es für jeden Drucker sogenannte "Alternativ Tinte / Toner" gibt. Also kommen nochmals 5 Datensätze hinzu, wären wir nun bei 10 Stück für diesen Artikel. Jetzt kann es auch noch passieren, dass der Hersteller "Spar-Sets" anbietet :/

          Was soll das Ganze am Ende eigentlich werden? Kannst du nicht einfach ein vorhandenes Shop-System nehmen, das all deine Wünsche schon von Haus aus mitbringt? Ich meine, Magento kann all das was du hier beschrieben hast und deine Gruppierungswünsche erfüllen. (Andere Systeme kenn ich aber nicht.) Selbst wenn du nichts verkaufen willst und das nur eine katalogartige Datenbank sein soll, kannst du ein Shop-System verwenden und dort das Warenkorb-Modul deaktiveren. Du hast dann zwar Einarbeitungszeit, aber die dürfte kürzer sein, als ohne großartige Programmiererfahrung ein solches System selbst aufzusetzen.

          dedlfix.

          1. Hallo dedlfix,

            Was soll das Ganze am Ende eigentlich werden? Kannst du nicht einfach ein vorhandenes Shop-System nehmen, das all deine Wünsche schon von Haus aus mitbringt? Ich meine, Magento kann all das was du hier beschrieben hast und deine Gruppierungswünsche erfüllen. (Andere Systeme kenn ich aber nicht.) Selbst wenn du nichts verkaufen willst und das nur eine katalogartige Datenbank sein soll, kannst du ein Shop-System verwenden und dort das Warenkorb-Modul deaktiveren. Du hast dann zwar Einarbeitungszeit, aber die dürfte kürzer sein, als ohne großartige Programmiererfahrung ein solches System selbst aufzusetzen.

            Nein! Das war hier auch nicht die Frage. Was für ein System ich nehme oder nicht solltest du mir bitte überlassen, du hast keine Ahnung wie die Daten ankommen und was ICH damit alles noch vorhabe. So wie es jetzt ist ist es schon ok, ich brauch einfach bisschen länger aber dann habe ich etwas individuelles.

            Sollte es dich hier nerven, musst du einfach nicht mitdiskutieren.

            1. Tach!

              Nein! Das war hier auch nicht die Frage. Was für ein System ich nehme oder nicht solltest du mir bitte überlassen,

              Deswegen hab ich auch nicht gesagt: Nimm eins!, sondern gefragt, ob eins passend wäre.

              du hast keine Ahnung wie die Daten ankommen und was ICH damit alles noch vorhabe.

              Nun, zumindest weiß ich, dass man in Magento Daten importieren kann, beziehungsweise sich einen Importer schreiben kann, der über die vorhandene API die Daten ins System bringen kann. Man kann sie darüber auch wieder rausholen. Oder man schreibt sich ein Plugin, wenn man spezielle Funktionalität braucht, die es noch nicht fertig gibt. Allerdings setzt das Selbstschreiben eine gewisse Erahrung im Programmieren voraus und auch die Fähigkeit, sich in mehr oder weniger gut dokumentierte Systeme einzuarbeiten beziehungsweise es zu erforschen.

              Sollte es dich hier nerven, musst du einfach nicht mitdiskutieren.

              Im Gegenzug darf ich dich dann auch bitten, keine Mutmaßungen über meinen Gemütszustand anzustellen. Ich kann das schon ganz gut selbst entscheiden, ob und wann ich mich zurückziehe. ;)

              dedlfix.

      2. @@robertroth

        <span class="color-icon black">Schwarz</span> Was hältst Du denn dann davon, dem <span> wenigstens noch ein Title-Attribut zu verpassen?

        Nichts. Entweder Information ist wichtig, dann soll sie angezeigt werden. Oder sie ist unwichtig, dann muss sie auch beim Hovern nicht erscheinen.

        Und ist denn immer sichergestellt, dass schon alle Browser leere <span>-Elemente auch anzeigen?

        Warum sollten sie das nicht tun? Außerdem war mein span-Element nicht leer.

        Den Text kannst du mit image replacement verstecken. Kannst Du das bitte noch etwas näher ausführen, wie Du das meinst?

        Gern.

        Besonders barrierefrei ist das aber nicht. Eben deshalb mindestens ein title-Attribut?

        Was hätte ein title-Attribut mit Barrierefreiheit zu tun?

        Aber vielleicht noch sinnvoller als image replacement:

        <span class="color-icon black" aria-label="Schwarz"></span>
        

        LLAP

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
        1. @@Gunnar Bittersmann

          Aber vielleicht noch sinnvoller als image replacement:

          <span class="color-icon black" aria-label="Schwarz"></span>
          

          Nochmal drüber nachgedacht: So sinnvoll ist das vielleicht doch nicht.

          Blinde bekommen zwar den Text vorgelesen. Farbblinde sehen aber nur einen grauen Klecks.

          LLAP

          --
          „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
  4. Hi,

    
    > $fghzh= str_replace ("Blau, Rot, Gelb, Schwarz", "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">", $record['p_farbe']);
    
    

    Ersetze in dem String $record['p_farbe'] die Fundstellen von "Blau, Rot, Gelb, Schwarz" durch den Text "<img src=\"img/icons/farben/cmyk.jpg\" alt=\"Blau, Rot, Gelb, Schwarz\">" und speichere das Ergebnis in $fghzh.

    
    > $fghzh= str_replace ("Schwarz", "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">", $record['p_farbe']);
    
    

    Ersetze in dem String $record['p_farbe'] die Fundstellen von "Blau, Rot, Gelb, Schwarz" durch den Text "<img src=\"img/icons/farben/black.jpg\" alt=\"Schwarz\">" und speichere das Ergebnis in $fghzh.

    Wofür war jetzt eigentlich die vorherige Ersetzung gut? Deren Ergebnis wurde ja eben überbügelt ...

    Weiter geht's:

    
    > $fghzh= str_replace ("Gelb", "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">", $record['p_farbe']);
    
    

    Ersetze in dem String $record['p_farbe'] die Fundstellen von "Gelb" durch den Text "<img src=\"img/icons/farben/yellow.jpg\" alt=\"Gelb\">" und speichere das Ergebnis in $fghzh.

    Schon wieder wurde das vorherige Ergebnis durch das neue komplett ersetzt. Also waren beide vorherigen Ersetzungen vollkommen sinnlos.

    Das gleiche passiert jetzt noch für Rot/Magenta und Cyan/Blau.

    Es bleibt also zum Schluß das übrig, was sich aus der Ersetzung von "Blau" im Originalstring $record['p_farbe'] durch das entsprechende Bild ergibt. Die anderen Ersetzungen sind überflüssig.

    Ab der zweiten Ersetzung müßte der String, in dem die Ersetzung vorgenommen werden soll, nicht mehr $record['p_farbe'] sein, sondern das Ergebnis der vorherigen Ersetzung, also $fzghgzhgz (oder wie diese unleserliche Variable auch immer heißt ...)

    cu,
    Andreas a/k/a MudGuard