Arrays vergleichen
Malte Kiefer
- php
-1 Malte Kiefer1 MudGuard
0 André Laugks0 schnaps
Hier dieser Script soll testen ob ich ein gebäude schon gebaut ahbe oder nicht. wenn ja, steht in der DB eine 1 wenn nicht eine 0.
aberes wird nichts ausgegebn, weil ich weiß nicht wie ich es machen kann da ich arrays verwendt habe.
Wie kann ich sie vergleichen, hier ist der Script könnt ihr mir viieleicht auch ein beispiel mit den selbern daten schreiben?
<?php
error_reporting(E_ALL);
include 'config1.php';
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
$baracke_gebaut = array();
$kraftwerk_gebaut = array();
$ausbildungslager_gebaut = array();
$fuhrpark_gebaut = array();
$hubschrauber_landeplatz_gebaut = array();
if ($query = mysql_query("SELECT * FROM register;")) {
while ($gebaeude = mysql_fetch_array($query)) {
$baracke_gebaut[] = $gebaeude['kraftwerk_gebaut'];
$kraftwerk_gebaut[] = $gebaeude['kraftwerk_gebaut'];
$ausbildungslager_gebaut[] = $gebaeude['ausbildungslager_gebaut'];
$fuhrpark_gebaut = $gebaeude['fuhrpark_gebaut'];
$hubschrauber_landeplatz_gebaut[] = $gebaeude['hubschrauber_landeplatz_gebaut'];
}
} else die(mysql_error());
?>
<?php echo "<tr>";
if($baracke_gebaut == 1){
echo "<td style="text-align:center"><li>Baracke</li></td>";
echo "</tr>";
echo "<tr>";
}
if($kraftwerk_gebaut == 1){
echo "<td style="text-align:center"><li>Kraftwerk</li></td>";
echo "</tr>";
echo "<tr>";
}
if($fuhrpark_gebaut == 1 ){
echo "<td style="text-align:center"><li>Fuhrpark</li></td>";
echo "</tr>";
echo "<tr>";
}
if($ausbildungslager_gebaut == 1){
echo "<td style="text-align:center"><li>Ausbildungslager</li></td>";
echo "</tr>";
echo "<tr>";
}
if($hubschrauber_landeplatz_gebaut == 1){
echo "<td style="text-align:center"><li>Hubschrauberlandeplatz</li></td>";
}
?>
?>
Danke
Malte
kann mir ja wirklich mal einer helfen???
Hi,
kann mir ja wirklich mal einer helfen???
Beim Drängeln? Nö.
cu,
Andreas
Hallo!
Keine Ahnung wie Deine Tabellenstruktur ist, ich glaube aber nicht gut!
Folgendes ist als Notlösung zu betrachten.
Du speicherst ja im Array nur 0 oder 1 ab, ansonsten nichts. Du benötigst kein Array. Erstelle Dir für jeden Bauobjekttyp eine Zählervariable an.
$baracke_gebaut = array();
$baracke_gebaut = 0;
$baracke_gebaut[] = $gebaeude['baracke_gebaut'];
Wenn eine 1 kommt, wird die Zählervariable um 1 erhöht.
if($gebaeude['baracke_gebaut']) {
$baracke_gebaut +=1;
}
Nun fragst Du ab, ob $baracke_gebaut größer 0 ist.
if($baracke_gebaut>0){
echo "<td style="text-align:center"><li>Baracke</li></td>";
echo "</tr>";
}
Aber wie schon erwähnt, ist wohl Dein Datenbanklayout falsch. Sobald ein weiter Bauobjekttyp hinzu kommt, mußt Du den Code anpassen.
André Laugks
Hallo
if ($query = mysql_query("SELECT * FROM register;")) {
while ($gebaeude = mysql_fetch_array($query)) {$baracke_gebaut[] = $gebaeude['kraftwerk_gebaut'];
Willst du hier wirklich 2 mal 'kraftwerk_gebaut' abfragen?
$kraftwerk_gebaut[] = $gebaeude['kraftwerk_gebaut'];
$ausbildungslager_gebaut[] = $gebaeude['ausbildungslager_gebaut'];
$fuhrpark_gebaut = $gebaeude['fuhrpark_gebaut'];
$hubschrauber_landeplatz_gebaut[] = $gebaeude['hubschrauber_landeplatz_gebaut'];}
} else die(mysql_error());
?>
Warum machst du hier PHP auf und zu?
<?php echo "<tr>";
Du hast deine MySQL Abfrage oben in der Schleife in ein Array gepackt, wie du es ja auch auch wolltest. Nun sprichst du die Variable hier aber an wie eine Skalare Variable.
Array bestehen immer aus einem Schlüßel und einem Wert.
Um das erste Element zu bekommen des Arrays müsstest du es mit
$baracke_gebaut[0] ansprechen.
if($baracke_gebaut == 1){
echo "<td style="text-align:center"><li>Baracke</li></td>";echo "</tr>";
echo "<tr>";
}
Die Array Oben brauchst du nicht extra zu deklarieren, in dem Moment wo du sie in der Schleife benutzt werden sie als Array angelegt.
Ich würde es generell nicht so als Array anlegen. Du speicherst ja immer nur einen Wert in dem Array, da reicht eine normale Variable doch komplett aus. Oder du legst es als Assoziatives Array an;
while ($gebaeude = mysql_fetch_array($query)) {
$gebaut['kraftwerk']= $gebaeude['kraftwerk_gebaut'];
$gebaut['baracke'] = $gebaeude['baracke_gebaut'];
$gebaut['ausbildungslager']= gebaeude['ausbildungslager_gebaut'];
$gebaut['fuhrpark']= $gebaeude['fuhrpark_gebaut'];
$gebaut['hubschrauber_landeplatz']=$gebaeude['hubschrauber_landeplatz_gebaut'];
}
Danach kannst du die Array Einträge dann mit ihren Namen als Index
ansprechen.
z.B:
if($gebaut['kraftwerk']== 1){
echo "<td style="text-align:center"><li>Baracke</li></td>";
echo "</tr>";
echo "<tr>";
}
Also dein Array heißt dann $gebaut[] und es hat die Schlüssel (kraftwerk,baracke,ausbildungslager,fuhrpark,hubschrauber_landeplatz) , die Werte sind dann entsprechend deiner Einträge in der DB entweder 0 oder 1.
Brauchst aber ncoh nicht mal die while Schleife, da du ja nur einen Wert Abfragst aus der DB.
Hoffe du kommst damit klar, und bitte nicht gleich drängeln wenn nicht sofort einer antwortet, ist ja schließlich alles hier auf freiwilliger Basis.
Prost
Schnaps
Hi,
danke für deine Hilfe,ich werdees gleich mal probieren und dann mal sehen.
danke