• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

"Nachträgliche" Änderung der Farbe für eine Tabelle?

dennis133

Neues Mitglied
Hallo,
weiß jetzt nicht genau ob in die PHP sektion damit oder html, denke mal in php ist es besser aufgehoben

habe eine aufgabe in der schule bekommen, wo ich aus einem 2 dimensionalen array (buchstabenquadrat)
z.B.
http://www.mensa.at/images/Wortsuche.gif
tiernamen raussuchen lassen muss, und anschließend farblich markiere

also z.B. ist eingabe "Zebra" und sucht dann im array (waagerecht und senkrecht) nach dem wort zebra

So, bin mit dem ganzen Teil schon so gut wie fertig

allerdings schaffe ich nicht die Variablen, die zum bereits gefundenen wort gehört, so zu ändern, dass sie in der tabelle mit einer anderen farbe zu versehen

PHP:
echo "<table border=\"1\">";                    //Schleife um Tabelle zu erzeugen
        for($i=0;$i<20;$i++){
            echo "<tr bgcolor=yellow>";
            $y=$i;
            for($j=0;$j<20;$j++){
            $x=$j;
                echo "<td><center> ";
                echo $array[$y][$x];
                echo "</center></td>";
                }
            echo "</tr>";
            }
                
    echo "</table>";
so ist die gesammte tabelle gelb
die farbe will ich im script weiter oben direkt in einer schleife einfügen, indem ich die variable ändere (ich kann nicht alle variablen grundlegend ändern, dann klappt das raussuchen nicht mehr)

um nächträglich rot reinzukriegen (also in die variable) müsste ich ein neues td auf machen
also in etwa so:
PHP:
$array[$y][$x]="<td bgcolor=red>"$array[$y][$x]"</td>";
anders schluckt der die farbe nicht... wie also kann ich die noch einfügen?
so allerdings passt die gesamte tabelle nicht mehr...



hier auch mal der gesamte quelltext:
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta name="author" content="Dennis Roppelt">
        <title>Buchstabenquadrat</title>
    </head>

    <body bgcolor="lightblue">
    <h2>Willkommen beim Spiel "Buchstabenquadrat"</h2><br>
    <h3> Es läuft wie folgt: <br>
    Dort unten ist ein Buchstabenquadrat zu sehen, in diesem sind Tiernamen versteckt.<br>
    Sie sind waagerecht von links nach rechts  versteckt.<br>
    Schaffst Du es alle Tiere zu finden?<br>
    Des weiteren gelten nur Tiernamen, Buchstabenkombinationen wie "XY" mögen zwar vorhanden sein,<br>
    zählen aber nicht als Tier!<br></h3><br>
    Hier Tiername eingeben:
    <form action="Buchstabenquadrat versuch.php" method="post">
    <input type="text" name="tiername">
    z.B. "AFFE",Wichtig: vorallem in <font color=darkred><b>GROßBUCHSTABEN!!! </b> </font> <br>
    <input type="submit">
    </form>
    <?php

            // Hier wäre nun ein array mit 400 zeilen, da ich aber max 10k buchstaben nutzen darf, einach mal gekürzt
$array[0][0]="A";
$array[0][1]="M";
$array[0][2]="S";
$array[0][3]="E";
$array[0][4]="L";
.
.
.
$array[19][17]="E";
$array[19][18]="E";
$array[19][19]="S";

$tiername=$_POST['tiername'];
$a=strlen($tiername);
IF(isset($tiername)){                                    // für zähl. gesteuerte Schleife
    if(empty($tiername)){
    echo "<font color=darkred><u>Gib bitte den Tiernamen an!<br></u></font>";    //wenn nicht gesetzt oder leer, anfragen
        }
    }else{
    echo "<font color=darkred><u>Gib bitte den Tiernamen an!<br></u></font>";
    }
$x=0;                                    // X-Achse im Array
$y=0;                                    //Y-Achse im Array
$richtig=0;                                // weiterer Zähler
$treffer=0;                                // 0 oder 1 Variable um zu sagen ob das Wort vorhanden ist
for($y=0;$y<20;$y++){                            //Vorgang für Waggerecht l nach r
    for($x=0;$x<20;$x++){                        //Durchzählen der Felder von 0/0 bis 19/19
        if($tiername[0]==$array[$y][$x]){  //Checken ob 1. Buchstabe im jetzigen Feld gleich ist
            for($b=1;$b<$a;$b++){                //wenn ja, dann wird weiter gerpüft, in oben genannten Richtung
                if($tiername[$b]==$array[$y][$x+$b]){
                    $richtig=$richtig+1;        //Zähler für die Richtigen Buchstaben
                }
                if($richtig==$a-1){            //wenn Zähler hoch genug, dann "treffer", somit das richtige Wort
                    $treffer=1;
                }
            }
        $richtig=0;
        if($treffer==1){
            $array[$y][$x]=$array[$y][$x];            //Hier habe ich vor, die Farbe einzufügen
            for($b=1;$b<$a;$b++){
                if($tiername[$b]==$array[$y][$x+$b]){
                $array[$y][$x+$b]=$array[$y][$x+$b];    
                }
                }
            }
            
        }

    }
}

echo "Deine Antwort:<b>".$tiername." </b> <br>";            
if($treffer==0&&isset($tiername)){
    echo "<font color=red><b>Schade! Das war wohl nichts! </b></font>";
    }    
if($treffer==1&&isset($tiername)){
    echo "<font color=green><b>Treffer! Der Tiername ist vorhanden!</b></font>";
    }




echo "<table border=\"1\">";                    //Schleife um Tabelle zu erzeugen
        for($i=0;$i<20;$i++){
            echo "<tr bgcolor=yellow>";
            $y=$i;
            for($j=0;$j<20;$j++){
            $x=$j;
                echo "<td><center> ";
                echo $array[$y][$x];
                echo "</center></td>";
                }
            echo "</tr>";
            }
                
    echo "</table>";
?>

    </body>
</html>
 
Versuche es mit CSS du übergibst jedem <td> eine andere id beispielsweise "<td id =\"FeldNO".$i."\">". Dann musst du die ID des betrefenden <td>'s abfragen und dieser übergibst du mit CSS eine Hintergrundfarbe. Ich hoffe ich habe es so richtig verstanden was Du meintest ;)
 
Hier ein Ansatz. Die veränderten Stellen habe ich im Code markiert. Ich denke, es ist verständlich, ansonsten frag einfach.

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta name="author" content="Dennis Roppelt">
        <title>Buchstabenquadrat</title>
    </head>

    <body bgcolor="lightblue">
    <h2>Willkommen beim Spiel "Buchstabenquadrat"</h2><br>
    <h3> Es läuft wie folgt: <br>
    Dort unten ist ein Buchstabenquadrat zu sehen, in diesem sind Tiernamen versteckt.<br>
    Sie sind waagerecht von links nach rechts  versteckt.<br>
    Schaffst Du es alle Tiere zu finden?<br>
    Des weiteren gelten nur Tiernamen, Buchstabenkombinationen wie "XY" mögen zwar vorhanden sein,<br>
    zählen aber nicht als Tier!<br></h3><br>
    Hier Tiername eingeben:
    <form action="" method="post">
    <input type="text" name="tiername">
    z.B. "AFFE",Wichtig: vorallem in <font color=darkred><b>GROßBUCHSTABEN!!! </b> </font> <br>
    <input type="submit">
    </form>
    <?php

// Hier wäre nun ein array mit 400 zeilen, da ich aber max 10k buchstaben nutzen darf, einach mal gekürzt

// mermshaus: Liest Suchfeld aus Datei ein.
$tmp = file('./suchfeld.txt');
$array = array();
foreach ($tmp as $row) {
    $row = trim($row);
    if ($row !== '') {
        $array[] = str_split($row);
    }
}

$tiername=$_POST['tiername'];
$a=strlen($tiername);

if (isset($tiername)) {                                    // für zähl. gesteuerte Schleife
    if (empty($tiername)) {
        echo "<font color=darkred><u>Gib bitte den Tiernamen an!<br></u></font>";    //wenn nicht gesetzt oder leer, anfragen
    }
} else {
    echo "<font color=darkred><u>Gib bitte den Tiernamen an!<br></u></font>";
}

$x=0;                                    // X-Achse im Array
$y=0;                                    //Y-Achse im Array
$richtig=0;                                // weiterer Zähler
$treffer=0;                                // 0 oder 1 Variable um zu sagen ob das Wort vorhanden ist
for($y=0;$y<20;$y++){                            //Vorgang für Waggerecht l nach r
    for($x=0;$x<20;$x++){                        //Durchzählen der Felder von 0/0 bis 19/19
        if($tiername[0]==$array[$y][$x]){  //Checken ob 1. Buchstabe im jetzigen Feld gleich ist
            for($b=1;$b<$a;$b++){                //wenn ja, dann wird weiter gerpüft, in oben genannten Richtung
                if($tiername[$b]==$array[$y][$x+$b]){
                    $richtig=$richtig+1;        //Zähler für die Richtigen Buchstaben
                }
                if($richtig==$a-1){            //wenn Zähler hoch genug, dann "treffer", somit das richtige Wort
                    $treffer=1;
                }
            }
            $richtig=0;

            if ($treffer == 1) {
                $array[$y][$x] = $array[$y][$x] . '*';            //Hier habe ich vor, die Farbe einzufügen
                for ($b=1;$b<$a;$b++){                            // mermshaus: Getroffene Buchstaben mit Sternchen markieren
                    if($tiername[$b]==$array[$y][$x+$b]){
                       $array[$y][$x+$b]=$array[$y][$x+$b] . '*';
                    }
                }
            }
        }
    }
}

echo "Deine Antwort:<b>".$tiername." </b> <br>";
if($treffer==0&&isset($tiername)){
    echo "<font color=red><b>Schade! Das war wohl nichts! </b></font>";
    }
if($treffer==1&&isset($tiername)){
    echo "<font color=green><b>Treffer! Der Tiername ist vorhanden!</b></font>";
    }




echo "<table border=\"1\">";                    //Schleife um Tabelle zu erzeugen
        for($i=0;$i<20;$i++){
            echo "<tr bgcolor=yellow>";
            $y=$i;
            for($j=0;$j<20;$j++){
            $x=$j;
                

                // mermshaus: Hier gucken wir, ob der Buchstabe mit einem
                // Sternchen markiert wurde. Falls ja, wird die Zelle rot
                // hinterlegt.

                if (strlen($array[$y][$x]) === 2) {
                    echo '<td style="background: red;"><center> ';
                    // Sternchen entfernen
                    $array[$y][$x] = substr($array[$y][$x], 0, 1);
                } else {
                    echo "<td><center> ";
                }


                echo $array[$y][$x];



                echo "</center></td>";
                }
            echo "</tr>";
            }

    echo "</table>";
?>

    </body>
</html>

suchfeld.txt

Code:
AXXXXXXXXXXXXXXXXXXX
MXXXXXXXXXXXXXXXXXXX
SXXXXXXXXXXXXXXXXXXX
EXXXXXXXXXXXXXXXXXXX
LXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXFXXXXXXXXX
XXXXXXXXXXAXXXXXXXXX
XXXXXXXXXXSXXXXXXXXX
XXXXXXXXXXAXXXXXXXXX
XXXXXXXXXXNXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXSTORCHXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXROTKEHLCHENXXXXX
 
gut danke

denke ich habs verstanden, allerdings sind da zu viele sachen, die wir so noch nicht im unterricht hatten:
1. fällt das dann bei der lehrerin auf
2. ist das auch nicht mein "schreibstil", bei diesem umfangreichen script (php machen wir erst ein paar wochen) geht es bei mir um eine 1...
der herr kollege "freed" ist übrigens auch einer aus meiner klasse ^^ bei dem gehts auch um ne 1

habs jetzt nun so gemacht, dass ich nicht die bgcolor für eine Zelle ändere, ich füge bei den variablen einfach nur ein font mit color rein, zusätzlich noch fett

also :
<font color=red><b>$array[$y][$x]</font></b>

aber danke
 
Zuletzt bearbeitet:
Zurück
Oben