PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks. |
 |
|

12-01-2017, 05:09
|
peroja
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
Komisches Tabellen Problem
Hallo ihr guten,
Jetzt brauch ich doch Hilfe bei meinem Map versuch.
In der DB hab ich 5 Einträge
Und hier mein PHP Code dazu:
PHP-Code:
error_reporting(E_ALL);
$dbhost = 'localhost';
$dbuser = '*******';
$dbpass = '*******';
$con = mysqli_connect($dbhost, $dbuser, $dbpass) or die ('MySQL: Error connecting to local database');
$dbname = 'test';
mysqli_select_db($con,$dbname);
$sql = "SELECT * from coordinaten ORDER by 'user_id'";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result)) {
$user_id = $row['user_id'];
$coordX = $row['x'];
$coordY = $row['y'];
echo "<table border=0>";
//$coordX =1;
//$coordY =1;
for($x=1;$x<=10;$x++)
{
echo "<tr>";
for($y=1;$y<=10;$y++)
{
if($x==$coordX and $y==$coordY)
{
echo "<td>";
echo "<div style='float: left; width: 50px; height: 50px; margin-right: 1px; margin-bottom: 1px; background-color: orange ; text-align: center;'>$user_id</div>";
}
else
{
echo "<td>";
echo "<div style='float: left; width: 50px; height: 50px; margin-right: 1px; margin-bottom: 1px; background-color: green ; text-align: center;'>$x/$y</div>";
}
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
}
Wo mach ich was falsch? Es generiert mir 5 Tabellen untereinander. Jeder Eintrag generiert eine neue Tabelle. Ich will aber alle Einträge in einer Tabelle haben. Ich bin langsam echt am verzweifeln. Ich bin der Meinung dass ich den Loop zum richtigen Zeitunkt abbreche.
Ich hoffe jemand von euch sieht den Fehler den ich nicht sehe.
Muss jetzt auch zugeben das ist mir peinlich weil ich hab ansonsten keine Probleme eine Tabelle aus DB einträgen zu generieren. Nur hier sind es fix 10x10 Felder und die, welche keine Einträge haben erscheinen Grün mit der Koordinate und die anderen Orange mit der User ID
Lieben Dank
Peroja
|

12-01-2017, 09:49
|
SysOp
Registrierter Benutzer
|
|
Registriert seit: May 2005
Beiträge: 58
|
|
Dein <Table> Tag steht IN der while Schleife..
HTML Grundlagen...
|

12-01-2017, 16:10
|
peroja
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
trotzdem
Ich hab trotzdem das gleiche Ergebniss wenn ich den Table aus der While herausnehme
PHP-Code:
<?PHP error_reporting(E_ALL); require('lib/connection.php'); echo "<table border=0>";
$sql = "SELECT * from coordinaten ORDER by 'user_id'"; $result = mysqli_query($con,$sql); while($row = mysqli_fetch_array($result)) { $user_id = $row['user_id']; $coordX = $row['x']; $coordY = $row['y'];
//$coordX =1; //$coordY =1; for($x=1;$x<=10;$x++) { echo "<tr>"; for($y=1;$y<=10;$y++) { echo "<td>"; if($x==$coordX and $y==$coordY) { echo "<div style='float: left; width: 50px; height: 50px; margin-right: 0px; margin-bottom: 0px; background-color: orange ; text-align: center;'>$user_id</div>"; } else { echo "<div style='float: left; width: 50px; height: 50px; margin-right: 0px; margin-bottom: 0px; background-color: green ; text-align: center;'>$x/$y</div>"; } echo "</td>"; } echo "</tr>"; } } echo "</table>"; ?>
|

13-01-2017, 08:09
|
bandit600
Registrierter Benutzer
|
|
Registriert seit: Jan 2010
Beiträge: 160
|
|
1. Das kann nicht sein
2. Tue dir selber einen Gefallen und formatiere deinen Quellcode ordentlich, damit er besser lesbar wird
PHP-Code:
<?PHP error_reporting(E_ALL); require('lib/connection.php');
echo "<table border=0>";
$sql = "SELECT user_id, x, y from coordinaten ORDER by 'user_id'"; $result = mysqli_query($con,$sql) or die ("MySQL-Error: " . mysqli_error($con));
while($row = mysqli_fetch_array($result)) { $user_id = $row['user_id']; $coordX = $row['x']; $coordY = $row['y'];
for($x = 1; $x <= 10; $x++) { echo "<tr>"; for($y = 1; $y <= 10; $y++) { echo "<td>"; if($x == $coordX and $y == $coordY) { echo "<div style='float: left; width: 50px; height: 50px; margin-right: 0px; margin-bottom: 0px; background-color: orange ; text-align: center;'>$user_id</div>"; } else { echo "<div style='float: left; width: 50px; height: 50px; margin-right: 0px; margin-bottom: 0px; background-color: green ; text-align: center;'>$x/$y</div>"; } echo "</td>"; } echo "</tr>"; } }
echo "</table>"; ?>
|

13-01-2017, 18:27
|
peroja
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
Kritik?
Und Du mein lieber Bandit600 tu mir den Gefallen und prüfe erst Codes nachdem du sie "korrigiert" hast und mit Kritik an mich Publitzierst. Ich danke Dir dass du mir Helfen willst, ganz klar, aber Dein Code macht genau das gleiche wie meiner. Das hier ist von Dir:
http://www.soundwerkstatt.ch/programmieren/test/map.php
Auch Dein Code erzeugt 5 Tabellenanstatt nur eine mit aber allen 5 Einträgen drinnen. Scheint doch nicht so einfach zu sein gelle...
Allgemein, ich bin ja nicht blöd und ich hab mich auch versucht zu konzentrieren und logisch versucht zu Denken. Da ich alle 5 Einträge in die while schlaufe nehmen muss um diese auszugeben muss ich das while abschluss "}" als letztes setzen und zwar NACH dem Generieren der Tabelle sonst hab ich logischerweise nur den letzten Eintrag. Wenn ichjetzt aber die ganze while schlaufe im TD block unterbringe hab ich auch ein durcheinander.
Liebe Grüsse
Pero
|

13-01-2017, 19:04
|
bandit600
Registrierter Benutzer
|
|
Registriert seit: Jan 2010
Beiträge: 160
|
|
Ich habe deinen Quellcode auch nicht verändert, sondern anständig formatiert, um dir ein Beispiel zu geben.
Und der HTML-Code enthält nur eine Tabelle!
|

22-01-2017, 20:29
|
peroja
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
hmm
Hallo,
Es scheint niemand gewilllt zu sein mir bei diesem Problem helfen zu wollen?
Ich schaff es einfach nicht. Ein TableGrid zu erzeigen mit 10x10 feldern ist weniger ein Problem. Aber die Felder darin mit Daten aus der DB zu füllen schon. Also auf feld X,Y steht ein Eintrag. z.B 3/6 ist eine $user_id und auf 5/2 eine andere $user_id und auf 4/4 wiederum eine usw....
Das problem ist dass mein Code für jeden einzelnen Eintrag ($user_id) einen komplett neue Table erzeugt. Ich versteh das einfach nicht
Ich will eine einfache Map erstellen bei einem klick auf en besetztes Feld eine url erzeugt. (test.php?coord_x=$x&coord_y=$y) und besagtes Feld je nach DB eintrag grün oder blau ist, was auch immer....
Schönen Abend noch
LG
Peroja
|

23-01-2017, 10:59
|
bandit600
Registrierter Benutzer
|
|
Registriert seit: Jan 2010
Beiträge: 160
|
|
Zitat:
Zitat von peroja
Das problem ist dass mein Code für jeden einzelnen Eintrag ($user_id) einen komplett neue Table erzeugt. Ich versteh das einfach nicht 
|
Nochmal, und diesmal tippe ich auch ganz langsam, damit du es vielleicht jetzt verstehst: Das Script erzeugt genau 1 Tabelle, nicht mehr und nicht weniger!
|

23-01-2017, 11:41
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 3.134
|
|
Versteh ich das richtig, dass du EINE Tabelle mit 10x10 Feldern erzeugen willst? Und in dieser Tabelle sollen dann die Koordinaten, welche sich in deiner DB befinden entsprechend belegt werden?
Falls du beide Fragen mit Ja beantworten kannst, ist dein Ansatz schlicht nicht tauglich dafür.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
|

23-01-2017, 15:31
|
peroja
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
Das ist Richtig. Die Tabelle kann auch 100x100 sein
Ich möchte im Prinzip so etwas machen:
testgame - map
Einfach auf das rudimentäre reduziert. Diese Map ist zwar auf meinem Server und voll Funktionstüchtig wie man sieht aber ich will weder fremde sachen klauen noch passt diese Map visuell in die Art von Game welche ich grad baue. Zudem ist der Code dafür derart gross und Verflechtet in andere Scripte wie Javascript und 3 weitere PHP welche knapp 25KB gross sind. Der Aufwand dies zu entflechten ist es nicht Wert.
Wie würdet Ihr ein solches Projekt angehen? Bin mal gespannt auf Input
|

23-01-2017, 15:41
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 3.134
|
|
Wenn du das selber programmieren willst, dann würd ich mich an deiner Stelle nochmal gedanklich mit deinem Code auseinandersetzen und versuchen zu verstehen, was da passiert.
Du liest deine DB aus und für jeden User erzeugst du zehn Tabellenzeilen mit jeweils zehn Zellen - klingelt da irgendwas?
Es geht mir jetzt erstmal nur darum ob du verstehst, warum dein Ansatz nicht funktioniert.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
|

23-01-2017, 16:57
|
peroja
Registrierter Benutzer
|
|
Registriert seit: Aug 2011
Beiträge: 21
|
|
nun ja
Quetschi, ich hab schon genau geschaut und das Problem liegt innerhalb der WHILE schlaufe. Ich denk ich habs begriffen. Programmiertechnisch unmöglich.
Ich möcht aber trotzdem so ein Modul bauen, wenn auch nicht Isometrisch.
Ich könnt ja auch die Faulenzer Version machen und einen Table generieren und dann den HTML Coder daraus in ein neues File Pasten und dann von Hand den Link reintun. Aber des ist Doof.
Nun ich schau mal.
|

23-01-2017, 17:09
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 3.134
|
|
Dein Problem ist im Grunde genommen, dass du dich nicht an das EVA-Prinzip hältst. Zumindest Verarbeitung und Ausgabe sind bei dir mehr oder weniger in einem Schritt zusammengefasst. Du musst dich erst um die Verarbeitung kümmern und wenn diese abgeschlossen ist, kümmerst du dich noch um die Ausgabe.
Für dein Vorhaben könnte z.B. ein mehrdimensionales Array hilfreich sein, dass du in der Größe des gewünschten Feldes anlegst. Beim Durchlauf der Datensätze befüllst du dann die Felder des Arrays entsprechend. Zum Schluss überlegst du dir, wie du das Array als HTML-Tabelle ausgeben kannst.
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
|

23-01-2017, 19:01
|
bandit600
Registrierter Benutzer
|
|
Registriert seit: Jan 2010
Beiträge: 160
|
|
PHP-Code:
<?PHP $con = mysqli_connect("localhost", "root", "", "test");
$sql = "SELECT user_id, x, y from t3"; $result = mysqli_query($con,$sql) or die ("MySQL-Error: " . mysqli_error());
$data = array(); while($row = mysqli_fetch_array($result)) $data[$row['x'] . "/" . $row['y']] = $row['user_id'];
echo "<table border=0>"; for($x = 1; $x <= 10; $x++) { echo "<tr>"; for($y = 1;$y <= 10; $y++) { $key = $x . "/" . $y; if (array_key_exists($key, $data)) { $output = $data[$key]; $color = "green"; } else { $output = $key; $color = "red"; } echo "<td> <div style='float: left; width: 50px; height: 50px; margin-right: 0px; margin-bottom: 0px; background-color: $color ; text-align: center;'>$output</div> </td>"; } echo "</tr>"; }
echo "</table>"; ?>
|

23-01-2017, 19:08
|
Quetschi
PHP Expert
|
|
Registriert seit: Dec 2004
Beiträge: 3.134
|
|
@bandit600
dein Codebeispiel stellt keinerlei Verbesserung gegenüber dem bisherigen Code dar?!
__________________
Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
Schön - etwas Geschichte kann ja nicht schaden.
Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
Aktuelle PHP Scripte
Top-Side.de Php News Script
Newsscript mit Smilies, BB-Code, Löschfunktion, Editierfunktion, Kommentarfunktion, Seiten- bzw. Blätterfunktion
14.04.2018
webmaster10 | Kategorie: PHP/ News
|
tsShoutbox
Textbasierte Shoutbox (kein MySQL nötig) mit Admin-Control-Panel zum Verwalten der Farbeinstellungen und Shoutboxoptionen, Archiv, Löschfunktion, Seiten- bzw. Blätterfunktion, Smilies, Badword-Filter, Überprüfung falscher Eingaben.
10.04.2018
webmaster10 | Kategorie: PHP/ Shoutbox
|
Domain Checker v1.1 Pro
Domainchecker (Whois) für folgende Domains: .de, .com, .net, .org, .info, .biz, .at, .ch, .li, .co.uk, .tv, .cc, .dk, .it, .ws
10.04.2018
webmaster10 | Kategorie: PHP/ Domains
|
Alle PHP Scripte anzeigen
|