Ankündigung

Einklappen
Keine Ankündigung bisher.

Tabellenformatierung in Abhängigkeit von Zahl

Einklappen

Neue Werbung 2019

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

  • Tabellenformatierung in Abhängigkeit von Zahl

    Hallo zusammen,

    ich bin neu hier und kreuze hier unverstämter Weise gleich mit einer Frage auf, da ich mit Suchen und Tutorials nicht mehr weiter komme.
    Ich muss im Vorfeld sagen, dass ich vollkommen neu im Bereich PHP und HTML bin und mich erst seit ein paar Tagen damit auseinandersetze. Ich bitte um Nachsicht, wenn ich mich arg anstelle.

    Zu meiner Aufgabenstellung:

    Für viele Geräte aus dem Industriebereich müssen Adressierungen in Form von binär kodierten DIP-Schaltern (8 Stück) vorgenommen werden.
    Ich möchte einen "Umrechner" mit PHP basteln.
    Nun werde ich die Stellung der DIP-Schalter in Form einer Tabelle (8x2) darstellen und je nach Stellung die Zellen formatieren.
    z.B. Spalte 1 Zeile eins grau und Spalte 1 Zeile 2 weiß würde bedeuten, dass DIP-Schalter 1 in Stellung EIN ist, usw.
    Dafür muss ich die Zahl der Adresse aus einem Eingabefeld (z.B. 125) in eine aus 8 Zeichen bestehende Binärzahl wandeln und diese dann in ihre Ziffern, also Nullen und einsen aufteilen, welche ich wiederum abfragen- und die Tabelle in deren Abhängigkeit formatieren möchte.
    Ich weiß nicht, ob ich etwas grundlegendes falsch mache, da mir PHP wirklich komplett fremd ist, aber irgendwie tut sich mal garnichts.
    Mein bisheriger erfolgloser Stand:

    HTML-Formular:
    Code:
    <form action="calculate.php" method="post">
     <p>Adresse: <input type="text" name="adresse" size="3" maxlength="3" /></p>
     <p><input type="submit" /></p>
    </form>
    calculate.php:
    PHP-Code:
    <?php
    $bin 
    decbin(' $_POST['adresse']');
    $bin substr("00000000",0,strlen($bin)) . $bin;
    ?>

    <?php
    $str 
    = echo ['$bin'];
    $zeichen preg_split('//'$str, -1PREG_SPLIT_NO_EMPTY);
    print_r($zeichen);
    <
    p>
    <?
    php
    printf
    ($zeichen[0];
    ?> 
    ?>
    Hier habe ich mal versucht, mir eine Ziffer des ergebnisses anzusehen, aber der Browser zeigt einfach mal garnichts an.
    Ich weiß nicht, ob überhaupt irgendwas passiert.
    Ich bin für jede Hilfe Dankbar!

    Beste Grüße

    Marco86

  • #2
    Zitat von Marco86 Beitrag anzeigen
    Hallo zusammen,

    PHP-Code:
    <?php
    $str 
    = echo ['$bin'];
    ?>
    <?php
    printf
    ($zeichen[0];
    ?>
    Marco86
    Der erste Befehl mit echo ist mir neu. was hast du in dieser Zeile vor? Willst du einfach nur einen String von $bin haben?

    Bei der 2 Zeile fehlt eine schließende Klammer ).

    Um deine eigenen Skripte richtig zu debuggen schalte mal das Error reporting an.

    Kommentar


    • #3
      Hallo Fuel,
      erstmal vielen Dank für die schnelle Antwort.

      In der ersten Zeile habe ich mit dem Syntax experimentiert, ursprünglich war es:
      PHP-Code:
       <?php
      $str 
      '$bin';
      ?>
      oder auch
      PHP-Code:
       <?php
      $str 
      $bin;
      ?>
      Es funktioniert aber in keiner Variante.
      Danke für den Hinweis mit der Klammer, aber auch da ändert sich nichts.

      Beste Grüße

      Kommentar


      • #4
        schreib das hier mal an den anfang des skriptes

        PHP-Code:
        error_reporting(-1);
        ini_set('display_errors''On'); 
        oder das hier bin mir gerade unsicher

        PHP-Code:
        ini_set('display_errors',1);  error_reporting(E_ALL); 

        Kommentar


        • #5
          Parse error: syntax error, unexpected T_STRING in ...../calculate.php on line 9

          Das wäre dann die erste Zeile in
          PHP-Code:
          <?php
          $bin 
          decbin(' $_POST['adresse']');
          $bin substr("00000000",0,strlen($bin)) . $bin;
          ?>
          versteh ich jetzt nicht so ganz

          Kommentar


          • #6
            Zitat von Marco86 Beitrag anzeigen
            PHP-Code:
            <?php
            $bin 
            decbin($_POST['adresse']);
            ?>
            Schreib das mal so

            Kommentar


            • #7
              Die Funktionen printf oder sprintf können vielleicht genau das was du brauchst

              PHP-Code:
              printf('%08b'125); 
              01111101

              PHP-Code:
              $bin sprintf('%08b'125);
              $array str_split($bin1);

              var_dump($bin);
              var_dump($array); 
              Code:
              string(8) "01111101"
              array(8) {
                [0] =>
                string(1) "0"
                [1] =>
                string(1) "1"
                [2] =>
                string(1) "1"
                [3] =>
                string(1) "1"
                [4] =>
                string(1) "1"
                [5] =>
                string(1) "1"
                [6] =>
                string(1) "0"
                [7] =>
                string(1) "1"
              }

              Kommentar


              • #8
                PHP-Code:
                <?php
                $bin 
                decbin($_POST['adresse']);
                ?>
                Das war es...ich glaub's ja nicht.
                Ich sage vielen Dank und mach mich mal an die weiteren schritte.
                Ich befürchte, es werden vielleicht noch Probleme auftauchen.

                Beste Grüße

                Marco

                Kommentar


                • #9
                  ...und da bin ich wieder.
                  Gibt es eine Möglichkeit, die Hintergrundfarbe einer Zelle je nach Ergebnis einer Variable zu formatieren?
                  Ich kann im Bezug auf php nichts wirklich zutreffendes finden. Da geht es immer nur um die Erkennung und Formatierung bestimmter Begriffe usw.
                  Ich habe nun meine 8 funktionierenden Variablen ($bit0, $bit1,...$bit7), in denen jeweils entweder der Wert 0 oder 1 steht und eine leere Tabelle mit 16 Zellen.
                  Nun möchte ich die Hintergrundfarbe von jeweils zwei Zellen anhängig von einer Variable setzen.
                  Gibt es da nen Trick?
                  Ich wollte zuerst in php css klassen definieren, habe aber gelesen, dass dies Kompatibilitätsprobleme mit sich ziehen könnte.

                  Gruß

                  Marco

                  Kommentar


                  • #10
                    PHP-Code:
                    <?php
                    $cssClass 
                    'normal';
                    if(
                    $var === 'das'){
                        
                    $cssClass 'nichtNormal';
                    }
                    ?>

                    <randomhtmlelement class="<?= $cssClass ?>"></...>
                    Oder eben über inline-styling usw.

                    Ich nehm einfach mal an, dass du von einer HTML-Ausgabe redest.
                    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                    Kommentar


                    • #11
                      Ich wollte zuerst in php css klassen definieren, habe aber gelesen, dass dies Kompatibilitätsprobleme mit sich ziehen könnte.
                      wieso?

                      Kommentar


                      • #12
                        Das habe ich irgendwie nicht hinbekommen, aber etwas anderes ausprobiert:

                        PHP-Code:
                        <?php
                        ini_set
                        ('display_errors',1);  error_reporting(E_ALL);  
                        $bin decbin($_POST['adresse']);
                        $bin substr("00000000",0,strlen($bin)) . $bin;
                        $str $bin;
                        $zeichen preg_split('//'$str, -1PREG_SPLIT_NO_EMPTY);
                        ?>
                        <p>
                        <?php
                        $bit7 
                        = ($zeichen[0]);
                        $bit6 = ($zeichen[1]);
                        $bit5 = ($zeichen[2]);
                        $bit4 = ($zeichen[3]);
                        $bit3 = ($zeichen[4]);
                        $bit2 = ($zeichen[5]);
                        $bit1 = ($zeichen[6]);
                        $bit0 = ($zeichen[7]);
                        ?> 
                        <br />
                        <!-- border-collapse=collapse;  padding=10px;-->
                        <table border="1";>
                          <tr>
                            <th><?php if ($bit0 == "1") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit1 == "1") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit2 == "1") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit3 == "1") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit4 == "1") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit5 == "1") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit6 == "1") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit7 == "1") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                          </tr>
                          <tr>
                            <th><?php if ($bit0 == "0") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit1 == "0") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit2 == "0") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit3 == "0") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit4 == "0") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit5 == "0") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit6 == "0") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                            <th><?php if ($bit7 == "0") {echo  '<tr bgcolor=#000001>';} else {echo  '<tr bgcolor=##A1A1A1>';} ?></th>
                          </tr>
                        </table>
                        Die Funktion ist jetzt zwar gegeben, aber die Tabelle hat optisch nichts mehr mit dem Ursprung zutun. Zum Vergleich habe ich die Gleiche Tabelle mit Ziffern gefüllt mal auf die html-seite:

                        hoppmann.veric.eu/calculate.htm

                        Kommentar


                        • #13
                          Zitat von moma Beitrag anzeigen
                          wieso?
                          Das ist eine gute Frage, hab's wie gesagt nur gelesen.
                          Aber ich bekomme es ohnehin nicht gebacken.^^
                          Ich finde die Quelle nicht mehr...war irgendein Google-Ergebnis.
                          Also ist diese Aussage falsch?

                          Kommentar


                          • #14
                            Ich denke ich würde die Farbgebung in eine Funktion auslagen, kann man vielleicht ein bisschen besser lesen.

                            PHP-Code:
                            <?php 
                            ini_set
                            ('display_errors',1);
                            error_reporting(E_ALL);  

                            function 
                            color($bitValue){
                                if(
                            $bitValue == '1'){
                                    return 
                            '#000001';
                                }else{
                                    return 
                            '#A1A1A1';
                                }
                            }

                            $bin decbin($_POST['adresse']); 
                            $bin substr("00000000",0,strlen($bin)) . $bin
                            $str $bin
                            $zeichen preg_split('//'$str, -1PREG_SPLIT_NO_EMPTY);
                            ?> 

                            <table border="1";> 
                                <tr> 
                            <?php
                            foreach($zeichen as $bit){
                            ?>
                                    <td bgcolor="<?= color($bit?>"></td>
                            <?php
                            }
                            ?>
                                </tr>
                            </table>
                            Nicht schön, aber nja
                            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                            Kommentar


                            • #15
                              Jetzt noch statt bgcolor CSS-Klassen verwenden und wir sind am Ziel. Das hat unter anderem den Vorteil das du die Styles von der Applikationslogik trennen kannst.

                              Kommentar

                              Lädt...
                              X