php: matrix mit for-schleifen

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/php_matrix_mit_for-schleifen_55761/page_1 - zur Vollversion wechseln!


grOOvekill@ schrieb am 19.11.2002 um 13:29

Griass enk!

Ich habe folgendes Problem:
Ich habe eine Eingabe, in der eine Zahl von 1 bis 15 eingegeben wird. Der eingegebene Wert wird an ein anderes php File geschickt. Anhand dieses Wertes soll eine Tabelle erstellt werden, die genauso viele Zellen hat, vertikal und horizontal (also eine Matrix). In diesen Zellen befinden sich Checkboxen, die man auswählen kann.

Ich habe es zwar geschafft, daß mir die Checkboxen vertikal angezeigt werden, aber vertikal und horizontal schaffe ich irgendwie nicht. Wie muß ich da die for-Schleife aufbauen? Ich krieg das mehrdimensionale Array in der Schleife irgendwie nicht hin.

Kann mir da mal jemand helfen?
Hier mein Code:

for ($rows=0;$rows<$anz;$rows++){
echo ("<table border=\"1\">");
echo ("<tr><td><INPUT TYPE=\"checkbox\" NAME=\"check\"></td></tr>");
echo ("</table>");
}

Danke!


flaimo schrieb am 19.11.2002 um 14:08

meinst du sowas:

Code: PHP
echo '<table>';
for($i=0; $i <= $anzahlfelder; $i++)
    {
    echo '<tr>';
    for($j=0; $j <= $anzahlfelder; $j++)
        {
        echo '<td>Zelleninhalt: X= ' . $j . ', Y= ' . $i . '</td>';
        }
    echo '</tr>';
    }
echo '</table>';


Snoop schrieb am 19.11.2002 um 19:38

jo so würde ich das auch lösen, bzw habe ich so gelöst bei der hardtronix gallery, und wenn du doch schon vorher abbrechen willst einfach ein IF ($j == "irgendeinezahl") {
break;
};

:)


grOOvekill@ schrieb am 20.11.2002 um 10:07

Also eigentlich hätte ich gerne sowas hier:

http://www.braintenance.com/kemal/pics/matrix.jpg

Ich krieg's aber nur entweder horizontal oder vertikal hin. Der obere Code hat bei mir nicht ganz gefunzt, habe ihn mir jedoch nur auf die Schnelle ansehen können.


grOOvekill@ schrieb am 20.11.2002 um 10:24

Nehme alles zurück!!!! Das ist genau, was ich brauche! Vielen Dank!


grOOvekill@ schrieb am 22.11.2002 um 10:23

Hi!
So, nachdem ich die Matrix ordentlich anzeigen kann, stehe ich nun wieder an. Ich habe jetzt also eine Matrix mit Checkboxen drinnen. Diese Matrix will ich in einer neuen Tabelle anzeigen mit lauter 1'ern für die gecheckten und 0'ern für die nicht gecheckten.

Hier mein Code für das Einlesen:

echo "<table border=1 cellspacing=0>";
for($zeile=0; $zeile < $anz; $zeile++){
echo ("<form action=\"berechnen.php\" method=post>");
echo "<tr>";
for($spalte=0; $spalte < $anz; $spalte++){
echo ("<td><input type=checkbox name=\"graph[$zeile][$spalte]\" value=\"1\"></td>");
}
}
echo "</tr>";
}


Bei dem value="1" bin ich mir nicht ganz sicher. Wie auch immer, ich möchte diese Infos mit der berechnen.php auffangen und einfach in einer Tabelle ausgeben. Funzt aber irgendwie nicht. Hier der Code:


<?php
print ( "<table border=1>");
for($zeile=0; $zeile= $knotenanz; $zeile++){
echo "<tr>";
for($spalte=0; $spalte = $knotenanz; $spalte++){
print ("<td>$graph[$zeile][$spalte]</td>");
}
echo "</tr>";
}
?>


Ich danke für jede Hilfestellung!


watchout schrieb am 22.11.2002 um 11:40

Zitat von grOOvekill@
Hi!
So, nachdem ich die Matrix ordentlich anzeigen kann, stehe ich nun wieder an. Ich habe jetzt also eine Matrix mit Checkboxen drinnen. Diese Matrix will ich in einer neuen Tabelle anzeigen mit lauter 1'ern für die gecheckten und 0'ern für die nicht gecheckten.

Hier mein Code für das Einlesen:

echo "<table border=1 cellspacing=0>";
for($zeile=0; $zeile < $anz; $zeile++){
echo ("<form action=\"berechnen.php\" method=post>");
echo "<tr>";
for($spalte=0; $spalte < $anz; $spalte++){
echo ("<td><input type=checkbox name=\"graph[$zeile][$spalte]\" value=\"1\"></td>");
}
}
echo "</tr>";
}


Bei dem value="1" bin ich mir nicht ganz sicher. Wie auch immer, ich möchte diese Infos mit der berechnen.php auffangen und einfach in einer Tabelle ausgeben. Funzt aber irgendwie nicht. Hier der Code:


<?php
print ( "<table border=1>");
for($zeile=0; $zeile= $knotenanz; $zeile++){
echo "<tr>";
for($spalte=0; $spalte = $knotenanz; $spalte++){
print ("<td>$graph[$zeile][$spalte]</td>");
}
echo "</tr>";
}
?>


Ich danke für jede Hilfestellung!
woher du die variable $knotenanz auf einmal herkriegst ist mir nicht klar, mir is aber klar, dass das ein Vergleich sein sollte in den for-argumenten, und eine überprüfung auf gleichheit war in php schon immer "==" (bzw "===" wenn auch der datentyp auf gleichheit geprüft werden soll)


grOOvekill@ schrieb am 22.11.2002 um 11:47

Das zweite COde-fragment befindet sich in einer anderen Datei. Die Variable $anz wird mittels "hidden" Feld an diese Datei übermittelt und in $knotenanz umbenannt. Hätte ich vielleicht vorher erwähnen sollen, sorry.


watchout schrieb am 22.11.2002 um 11:54

Zitat von grOOvekill@
Das zweite COde-fragment befindet sich in einer anderen Datei. Die Variable $anz wird mittels "hidden" Feld an diese Datei übermittelt und in $knotenanz umbenannt. Hätte ich vielleicht vorher erwähnen sollen, sorry.
trotzdem solltest du statt '=' ein '==' verwenden, dann dürfts auch gehn :p

edit:
so
<?php
print ( "<table border=1>");
for($zeile=0; $zeile == $knotenanz; $zeile++){
echo "<tr>";
for($spalte=0; $spalte == $knotenanz; $spalte++){
print ("<td>$graph[$zeile][$spalte]</td>");
}
echo "</tr>";
}
?>


grOOvekill@ schrieb am 22.11.2002 um 12:01

Hm, hab ich getan, da tut sich aber gar nix. ich krieg nicht mal eine Fehlermeldung. EInfach nur eine leere Seite. Seltsam...


watchout schrieb am 22.11.2002 um 12:18

Zitat von grOOvekill@
Hm, hab ich getan, da tut sich aber gar nix. ich krieg nicht mal eine Fehlermeldung. EInfach nur eine leere Seite. Seltsam...
ich.... :bash:
das kommt davon, wenn man net denkt... :rolleyes:
du brauchst entweder "<", oder "<=" kommt drauf an, was in der variable drinn' steht ;)


grOOvekill@ schrieb am 22.11.2002 um 15:06

Hm. Okay, ein Problem gelöst, schon steht das nächste da. Ich habe so eine Matrix:
http://www.braintenance.com/kemal/pics/matrix.jpg

Die gecheckten Checkboxen bekommen den Wert 1 zugewiesen, die anderen... nicht. Wenn ich diese Matrix nun in einem Array übergebe, müsste ich ja jede Menge 1'er und 0'er haben, oder? Beim Versuch den Inhalt auszugeben, bekomme ich aber lauter gleiche Inhalte.

Die Checkboxen entstehen so:
echo ("<td><input type=checkbox name=\"graph[$zeile][$spalte]\" value=\"1\"></td>");

Ich müßte also beim Ausgeben abfragen, welcher Wert im jeweiligen Feld drinnensteht, oder? Das mache ich so:
if ($graph[$zeile][$spalte]==1){
print ("<td width=20 height=20 align=center>$graph[$zeile][$spalte]</td>");
}


Ich habe den furchtbaren Verdacht, daß ich da ganz falsch liege, aber auch nach mehrmaligem versuch hat sich der gewünschte Effekt nicht eingestellt.

Irgend'ne Idee?


watchout schrieb am 22.11.2002 um 16:54

Zitat von grOOvekill@
Hm. Okay, ein Problem gelöst, schon steht das nächste da. Ich habe so eine Matrix:
http://www.braintenance.com/kemal/pics/matrix.jpg

Die gecheckten Checkboxen bekommen den Wert 1 zugewiesen, die anderen... nicht. Wenn ich diese Matrix nun in einem Array übergebe, müsste ich ja jede Menge 1'er und 0'er haben, oder? Beim Versuch den Inhalt auszugeben, bekomme ich aber lauter gleiche Inhalte.

Die Checkboxen entstehen so:
echo ("<td><input type=checkbox name=\"graph[$zeile][$spalte]\" value=\"1\"></td>");

Ich müßte also beim Ausgeben abfragen, welcher Wert im jeweiligen Feld drinnensteht, oder? Das mache ich so:
if ($graph[$zeile][$spalte]==1){
print ("<td width=20 height=20 align=center>$graph[$zeile][$spalte]</td>");
}


Ich habe den furchtbaren Verdacht, daß ich da ganz falsch liege, aber auch nach mehrmaligem versuch hat sich der gewünschte Effekt nicht eingestellt.

Irgend'ne Idee?
felder, wo keine werte drinnen stehen werden einfach nicht übergeben - wodurch der jeweilige zugehörige wert immer "NULL" ist - im gegensatz zu "0".
mit

if (isset($graph[$zeile][$spalte])===FALSE)
{
$graph[$zeile][$spalte]=0;
}

sollte sich dieser mangel beheben lassen...


Snoop schrieb am 24.11.2002 um 12:18

nönönö checkboxes geben eher "checked" zurück :)

ausserdem damit du wirklich alle checkboxes am einfachsten durchgehen kannst, benütz foreach...


watchout schrieb am 24.11.2002 um 20:15

Zitat von Snoop
nönönö checkboxes geben eher "checked" zurück :)

ausserdem damit du wirklich alle checkboxes am einfachsten durchgehen kannst, benütz foreach...
wtf?? checkboxes geben immer einen wert zurück, wenn dieser mit value definiert wurde und sie gechecked sind... :bash:

edit: desweiteren wird - falls der value nicht gesetzt wurde 'on' übermittelt - und net 'checked' - das hab ich gerade probiert, also komm net mit 'aber' - ich hab einfach recht, das musst du akzeptieren :p :D




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026