php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Verstehe Array nicht


 
DarkWanderer
05-02-2003, 19:39 
 
Hi Leute,

ich hoffe ihr könnt mir helfen.

Ich bin anscheinend zu doof Arrays zu verstehen und damit umzugehen.

Ich möchte z.b. eine Tabelle mit folgender grösse erstellen :

Reihen : 50
Spalten : 25

Diese möchte ich gerne in ein Array schreiben, ich will ja schliesslich nicht ne Datenbank anlegen wie :

$Reihe1_spalte1 = "12" ;
$Reihe1_spalte2 = "24" ;
.
.
$Reihe50_spalte25 = "blabla" ;

Meine Fragen dazu :
- WIE schreib ich das in ein Array ?
- WIE schreibe ich das Array in die DB ?
- WIE lese ich es wieder aus und greife auf die Daten zu ?

Naja hoffe ihr versteht was ich meine und schonmal dankeschön für eure Hilfe ;)

 
Günni
05-02-2003, 19:44 
 
http://www.php.net/manual/de/language.types.array.php

 
DarkWanderer
05-02-2003, 19:47 
 
Ja danke aber nach dem PHP Tut hab ich mir schon die Finger wund getippt und den Kopf zerbrochen aber was funktionierendes ist dabei nicht rausgekommen.
Gehöre nicht zu den Leuten die gleich fragen weil sie zu faul zum suchen sind ;)

Bin also genauso schlau wie vorher und hoffe weiter darauf, das sich jemand erbarmt mir das mal verständlich zu machen statt nen Link zu posten den ich schon kenne und der mir leider nicht helfen konnte.

Wäre nett wenn sich jemand die zeit und Lust dazu nimmt ;)

 
Abraxax
05-02-2003, 19:59 
 
Original geschrieben von DarkWanderer
Meine Fragen dazu :
- WIE schreib ich das in ein Array ?
- WIE schreibe ich das Array in die DB ?
- WIE lese ich es wieder aus und greife auf die Daten zu ?

1.
$array[zeile1][spalte1] = "hjhjk";
$array[zeile1][spalte2] = "hjhjk";
.
.
.
$array[zeile50][spalte25] = "hjhjk";

das war zur erklärung... :)

so kannst du das dann im script machen.

$array[1][1] = "hjhjk";
$array[1][2] = "hjhjk";
.
.
.
$array[50][25] = "hjhjk";

die nummern kannst du durch ne schleife jagen.

for($zeile=0;$zeile<50;$zeile++) {
for($spalte=0;$spalte<50;$spalte++) {
$array[$zeile][$spalte] = "zeile " . $zeile . " / spalte " . $spalte;
}
}
// testausgabe
echo "<pre>";
print_r($array);
echo "</pre>";

2. + 3.
musst du dann mal selber finden ... :)
das prinzip von arrays sollte jetzt aber klar sein.

info: die o.g. form von array ist ein mehrdimensionales array. :teach:

 
DarkWanderer
05-02-2003, 20:20 
 
Hi,

ok danke die Antwort hilft mir schon mal n Stückchen weiter, allerdings bin ich mir immer noch nicht sicher was das schreiben dieses Arrays in die Datenbank angeht !

Könnte das so aussehen :

for($reihe=0;$reihe<50;$reihe++) {
for($spalte=0;$spalte<$25;$spalte++) {
$array[$reihe][$spalte] = "---" . $reihe . "---" . $spalte;
$einfuegen=mysql_query("INSERT INTO koordinaten (reihe,spalte) VALUES ($array[$reihe][$spalte])");
}
}

Wobei die Frage ist, wie muss überhaupt der Table aussehen dazu den ich ja in der DB erstmal erstellen muss.

 
Abraxax
05-02-2003, 21:26 
 
die frage stellt sich für mich eigentlich erst, wenn du weisst, was du willst ... :)

im moment blicke ich nämlich nicht so durch, was du vor hast.

die sache mit dem array sollte jetzt geklärt sein.

was DBs angeht, sollte es auch nciht verkehrt sein, mal ein buch zu nehmen. ich habe so das gefühl, dass du nicht so den plan von php und mysql hast.

 
DarkWanderer
05-02-2003, 21:49 
 
Das ich Plan habe, habe ich meines Wissens nie behauptet.

Was ich will sollte doch eigentlich klar sein, das gefüllte Array in eine Datenbank schreiben.

Und in ein Buch schaue ich gerne sofern mir jemand unentgeltlich ein gutes Buch schickt. Die betonung liegt hier auf gut und unentgeldlich ;)

Hoffe das beantwortet deine Fragen.

 
Abraxax
05-02-2003, 21:52 
 
Was ich will sollte doch eigentlich klar sein, das gefüllte Array in eine Datenbank schreiben.
schon klar. aber welchen sinn macht es ein array in die DB zu schreiben. was hast du mit den daten vor?

Die betonung liegt hier auf gut und unentgeldlich
http://de.php.net/manual/de onlinebuch .... :)

 
DarkWanderer
05-02-2003, 21:59 
 
Danke der Link wurde oben schon gepostet, bin bedient.
Aber egal ist hier auch nicht Thema der Sache.

Also die Frage erscheint mir auch n bissl seltsam ;)

Was will man mit einem Array in der Datenbank ?
Richtig, es auslesen weil man auf die darin enthaltenen Daten zugreifen will.
Es ändern weil sich eventuell die darin enthaltenen Daten ändern !

Aber auch das hättest du in meinem ersten Post schon nachlesen können, wundere mich also grade etwas ;)

 
Abraxax
05-02-2003, 22:07 
 
jajaja.... :)

mir erscheint diese lösung nur sehr umständlich mit dem array. daher eher meine frage.

wenn man wüsste, was du willst, kann man auch eine bessere lösung finden ... :)

 
DarkWanderer
05-02-2003, 22:34 
 
Achso, hmm wie soll ich das erklären.

Das ganze hat was mit einer Art Spiel zu tun.

Also erstes soll per Script jedem Feld in einem 25x10 grossen Spielfeld der Wert "0" zugeteilt werden und das so in die DB eingetragen werden.

So, jeder Spieler bekommt per Zufallsgenerator eine Position in diesem Spielfeld zugewiesen.

Also ermittle ich die Zufallszahl,
schaue ob das gewünschte Feld den Wert "0" hat,
wenn das der Fall ist soll der Wert "0" durch einen anderen Wert (Einen Wert für den betreffenden Spieler) ersetzt werden.

So das sollte es hoffentlich recht gut erklären.

Also muss ich
a) das Spielfeld in die DB schreiben lassen mit Wert "0" in jedem Feld
b) die Werte aus der DB abfragen können zur Überprüfung
c) die Werte in der DB durch neue ersetzen können.

So, hoffe das hilft weiter ;)

Vielleicht hast du ja auch eine bessere Lösung als ein Array parat, würde mich natürlich auch freuen ;)

 
wahsaga
05-02-2003, 23:02 
 
Also erstes soll per Script jedem Feld in einem 25x10 grossen Spielfeld der Wert "0" zugeteilt werden und das so in die DB eingetragen werden.
da würde ich überhaupt nicht zweidimensional rangehen an so ein problem.

ich würde mir einfach eine db-tabelle mit zwei feldern machen, id und wert.

in dieser tabelle werden dann 25 * 10 = 250 zeilen drin sein, mit id im bereich von 0 bis 249.

und welche eindimensionale id nun welchem zweidimensionalen feldindex entspricht, kannst du dir ja dann leicht nach der formel

id_in_tabelle = (zeilennummer_feld - 1) * 25 + (spaltennummer_feld - 1)

ausrechnen.

diese formel rechnet dir deine zweidimensionalen koordinaten in einen eindeutigen wert von 0 bis 249 um, unter dem du dann in der datenbank deine feldbelegung wiederfindest.

 
Abraxax
06-02-2003, 13:15 
 
so ähnlich würde ich es auch machen.

wenn die werte pro feld nur zwischen 0 und 9 sind, kannst du alle felder zusammen in eine zeile schreiben

002541135445851334.....

du weisst, viewiele felder pro spalte und zeile sind. das kannst du bequem auslesen und splitten bzw. auslesen.

ein feld für die ID in der DB sollte rein, und dann ein db.feld für das spielfeld mit der o.g. variante.

wenn die spielfelder unterschiedlich groß sind, kannst du ja weitere spalten in die db einfügen. ein feld für spaltenanzahl und ein weiteres für die zeilenanzahl.

anhand dieser werte kannst du den spielfeldstring jederzeit korrekt bearbeiten/auslesen.

sollte die werte > 9 aber < 100 sein, kannst du ja pro wert zwei byte reservieren. eine 0 wird dann zu 00.

alles verstanden?


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:18 Uhr.