Hilfe bei Schleifen und Array

Hi,

macht nichts. Bin eher dankbar für Beispielcode!!

Hätte da noch ein paar Fragen.
PHP:
$sql = "Insert into `tabelle` (`date`, `betrag`, `float`) VALUES \n";
$sqldata[] = array();
foreach ($ss_array as $row){
   if(datumsueberpruefung($row[0]) &&   wertueberpruefung($row[1]) &&   is_float($row[2]))
      $sqldata[] = "('$row[0]','$row[1]','$row[2]')";
}

echo $sql.implode(",\n", $sqldata);

1. Was wird mit dem $sqldata[] = array(); gemacht?
Wird ihr eine vorrübergehendes Array angelegt?
2. is_float und is_int wandelt dies mir das Element von einem String in eine Float bzw.
Integer um?
3. datumsueberpruefung un wertueberpruefung sind das eigene Funktionen

Wäre dankbar wenn, wenn du mir helfen könntest.

Gruß
Nano
 
1. Was wird mit dem $sqldata[] = array(); gemacht?
Wird ihr eine vorrübergehendes Array angelegt?

Vorher eine Variable deffinieren die in der Schleife weiter gefüllt wird. Eigentlich nur um sicher zu gehen das sie leer ist. genausogut hätte man ein unset() machen können.


2. is_float und is_int wandelt dies mir das Element von einem String in eine Float bzw.
Integer um?

Nope :> es Überprüft ob selbiges darin enthalten ist.
Um Strings in die Datenbank einzufügen ohne Injetion Angst kannst du mysql_real_escape_string() verwenden. Aber es ist ja auch nicht nötig, Eine Überprüfung reicht, bei dem SQL-Query zusammenbauen wird es ohnehin auf string konvertiert. Eine Variable auf Int o.Ä. zu konvertieren kannst du mit den zugehörigen Funktionen int() oder per typecast (int) davorschreiben.

3. datumsueberpruefung un wertueberpruefung sind das eigene Funktionen

ja, ich weis ja nicht was im endeffekt in den Variablen ist, und was drin sein soll. Ich wollte mehr etwas hinschreiben welche Variablen geprüft werden müssen.
 
Hi,

vielleicht noch eine Ergänzung.

Das Array sieht folgendermaßen aus:

PHP:
Array(
		"0" => Array (
		
						"1" => "Jun 2007",
						"2" => "1000",
						"3" => "41,41",
						"4" => "41,53",
						"5" => "0,000415"
						.........
						"500" => "May 2007",
						"501" => "15010",
						"502" => "49,41",
						"503" => "51,41",
						"504" => "0,0004115"
						.........
		
		)
);

Eine Arrayzeile beginnt mit dem Datum also z.B. Jun 2007. Das erste Problem ist, eine Arrayzeile ist in meiner DBTabelle 3 Zeilen also ich muss hier schon splitten. Jede DBTabelle soll aber immer mit dem zugehörigen Datum beginnen also z.B. Jun 2007.

Frage: Wie mache ich das am besten ?


Hoffe ich habe das soweit verstandlich übergebracht
Wäre echt nett wenn du mir da helfen könntest.

Gruß
Nano
 
Also du möchtest einfach gesagt den Array in deine Tabelle schreiben oder? Wie sieht denn deine Tabelle aus?
 
Hi,

ja genau. Ich möchte die Array Inhalte in meine DB Tabelle schreiben.
Und zwar ist das eine einzeige DB Tabelle. Die Werte im Array müssen aber aufgesplitten werden, da immer nur 267 Elemente in eine Zeile geschrieben werden sollen.

Hoffe ich habe es einwenig verständlicher rübergebracht :)

Gruß
Nano
 
Schreib doch mal ein Beispiel wie die Daten eingetragen werden sollen, weil ich leider noch nicht verstanden habe was du meinst
 
Alles klar.....

Das folgende Bsp-Array soll in die DB Tabelle eingelesen werden.

PHP:
Array( 
        "0" => Array ( 
         
                        "1" => "Jun 2007", 
                        "2" => "1000", 
                        "3" => "41,41", 
                        "4" => "1041", 
                        "5" => "0,000415" 
		"6" => "414513", 
                        "7" => "0,041415" 
                        ......... 
                        "500" => "May 2007", 
                        "501" => "15010", 
                        "502" => "49,41", 
                        "503" => "4100,01", 
                        "504" => "0,0004115" 
		"505" => "51,4125", 
                        "506" => "0,102" 
                        ......... 
         
        ) 
);

DB Tabelle "Bsp-Umsatz":

Monat Betrag Prozensatz
Jun 2007 1000 41,41
Jun 2007 1041 0,000415
Jun 2007 414513 0,041415
................
May 2007 15010 49,41
May 2007 4100,01 0,0004115
May 2007 51,4125 0,102
................
................

In meinem richtigen Array sind es 3X267=801 Elemente und 1XDatum.
Das Datum soll immer in der DB Tabelle in die Spalte Monat eingetragen werden und zwar muss dies aber noch konvertiert werden und zwar in z.B. 01.06.2007.
Desweitern sollen danach 267 Element folgen wie oben immer 2 Elemente folgen. Diese Element sollen dann auch wieder in den jeweiligen Datentyp konvertiert werden.
Bei der nächsten Zeile kommt dann wieder das Datum und dann die nächsten 267 Elemente. usw.

Hoffe dass es jetzt einwenig deutlicher geworden ist und dass du mir dabei helfen kannst?

Vielen Dank schon mal im Voraus.

Gruß
Nano
 
Also du hast sozusagen drei Monate oder? Und den Array kann man sozusagen in drei Segmente einteilen, und du müsstest sozusagen erstmal den Monat einlesen, und danach soll dann jeweils der Betrag und die Prozentzahl eingetragen werden oder?

Also ich würde einfach das Array auslesen, und dann jeweils überprüfen ob der Inhalt eine Zahl ist, wenn nicht wird ein neues Datum gesetzt, und dieses wird dann solange mit eingetragen bis ein neuer Betrag kommt der keine Zahl ist.
 
Hi,

also ich habe nich nur 3 Monate.
1Monat drei haben drei Zeilen in diesem Falle das ist aber variabel es können auch mal nur 2 sein.

Hast du ne idee wie man das machen könnte

Gruß
Nano
 
Versuch es mal so:

PHP:
$count = count($arr);
for ($i = 1; $i <= $count; $i++) {
if(!is_numeric($arr[$i])) {
$datum = $arr[$i]; 
$a = $i + 1;
$b = $i + 2; $i = $i + 2;
} else { $a = $i; $b = $i+ 1; $i++;}
echo "[$i] $datum, $arr[$a], $arr[$b] <br>";
}

Nur müsstest du die Kommata in Punkte umwandeln, weil im Englischen wird ja statt dem Komma ein Punkt genutzt.
 
Zurück