"We are back" « oc.at

php: matrix mit for-schleifen

grOOvekill@ 19.11.2002 - 13:29 966 14
Posts

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
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

ILFTKYS
Avatar
Registered: Dec 2001
Location: ask a ninja
Posts: 872
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

Here to stay
Registered: Jun 2002
Location: Gablitz
Posts: 1093
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@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
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@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
Nehme alles zurück!!!! Das ist genau, was ich brauche! Vielen Dank!

grOOvekill@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
Hm, hab ich getan, da tut sich aber gar nix. ich krieg nicht mal eine Fehlermeldung. EInfach nur eine leere Seite. Seltsam...

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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@

Legend
Vienna Badass
Avatar
Registered: Nov 2001
Location: @home
Posts: 2325
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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

Here to stay
Registered: Jun 2002
Location: Gablitz
Posts: 1093
nönönö checkboxes geben eher "checked" zurück :)

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

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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
Bearbeitet von watchout am 24.11.2002, 20:21
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz