[PHP] Aufruf eines geschachtelten Arrays

Bisher funktioniert nun alles, bis auf das endgültige Einfügen in die Datenbank. Dafür verwende ich diesen Befehl:
PHP:
// Einsortieren der Daten der CSV in die richtigen Tabellen
			$query = "INSERT INTO 'account' ( 'Accountnr' , 'MANr' , 'angelegt' , 'ansnetz' , 'mail' , 'bemerkung' , 'franr' ) VALUES ('$i','$i', '$temp[12]', '$temp[14]', '$temp[13]', '$temp[15]', '$temp[0]')";
			mysql_db_query('hwdb',$query,'localhost','root','');

und erhalte folgende fehlermeldung:
Code:
die datei (importmitarbeiter.csv) konnte hochgeladen werden


Warning: Wrong parameter count for mysql_db_query() in D:\phpmysqlwebserver\minixampp\htdocs\mitarbeiter.php on line 97

Warning: Wrong parameter count for mysql_db_query() in D:\phpmysqlwebserver\minixampp\htdocs\mitarbeiter.php on line 99


Hilfe ! :rolleyes:
 
Also ich bitte dich. Die Fehlermeldung sagt doch nun wirklich alles wesentliche. Die Anzahl der Spalten und Werte, die du in die Spalten eintragen möchtest, stimmen nicht überein.
 
Meiner Meinung nach liegt der Fehler beim mysql_db_query Befehl.
Ich habe nochmal nachgezählt und ich habe genausoviele Einträge im Insert Befehl wie in den Values.

Das Einzige, wo die Anzahl der Einträge nicht mit der Doku übereinstimmt ist der MYSQL_DB_QUERY Befehl.

Der ist laut Handbuch: mysql_db_query (<db>,<query>,<auth>);

Meiner Meinung nach liegt es am AUTH.
Der MYSQL_DB_QUERY Befehl erwartet 3 durch Komma getrennte Befehle, ich habe aber mehr als 3, weil ich ja Host, Username und Passwort übergeben muss. Nur weiß ich nicht, wie ich dem das mit weniger als 3 Kommas sagen soll.
 
Original geschrieben von micha
Nur weiß ich nicht, wie ich dem das mit weniger als 3 Kommas sagen soll.
Indem du einfach nicht die, offiziell als veraltet eingestufte, Funktion mysql_db_query nutzt, sondern auf mysql_query umsteigst? ;)

Ich zitiere mal php.net
Anmerkung: Diese Funktion ist seit PHP 4.0.6 veraltet. Verwenden Sie diese Funktion nicht. Stattdessen sollten Sie die Funktionen mysql_select_db() und mysql_query() verwenden.
Nachzulesen auf http://www.php.net/mysql_db_query
 
Verwendet und funktioniert. Danke Tim!
(Die Variablen habe ich dann nochmal so geaddet:
PHP:
 values ('".$i."', '".$i."',
) Nun geht es.

Neue Frage aufgekommen, schon versucht zu lösen, suche aber einfachere Methode:

Ich lese einen Eintrag aus der CSV Datei aus und lege ihn in der Variable "$namen[$i]" ab. Ich möchte nun prüfen, ob "$namen[$i]" eine bestimmte Stringkette enthält.
Laut php.net soll ich das via der Funktion strstr(haystack, needle) machen.
Geht das nicht einfacher via nem Joker ?

Also etwas in dieser Art, wie von MYSQL bekannt:

If($namen[$I] =='%schrott').....
oder wie bei google ;D
If($namen[$I] =='*schrott').....

Wäre gut, wenn man das doofe strstr damit umgehen könnte.+



hier mein versuch via strstr

PHP:
$schrottdrin = strstr($namen[3],schrott);
		
		if($schrottdrin == 1) { 
		echo"ich ordne dich in die schrott table ein";
		else 
		echo"ich lass dich da wo du bist";
		}
 
Zuletzt bearbeitet:
Naja, aber das kann ich ja nicht direkt in die IF reinschreiben, da bekomme ich ja wieder ne TRUE / FALSE Variable zurück, dann geht das doch auch über mein STRSTR, oder?

oder soll das so gehen: (sieht in meinen augen falsch aus)

PHP:
if ($namen[$i] == ereg("$namen[$i]",$schrott) {
        echo"ich ordne dich in die schrott table ein"; 
else 
        echo"ich lass dich da wo du bist"; 
}

Er würde also, wenn schrott enthalten ist, den Inhalt der Variable in schrott einsortieren, andernfalls nichts machen.
 
Original geschrieben von micha
Naja, aber das kann ich ja nicht direkt in die IF reinschreiben, da bekomme ich ja wieder ne TRUE / FALSE Variable zurück, dann geht das doch auch über mein STRSTR, oder?

oder soll das so gehen: (sieht in meinen augen falsch aus)

PHP:
if ($namen[$i] == ereg("$namen[$i]",$schrott) {
        echo"ich ordne dich in die schrott table ein"; 
else 
        echo"ich lass dich da wo du bist"; 
}


Er würde also, wenn schrott enthalten ist, den Inhalt der Variable in schrott einsortieren, andernfalls nichts machen.
Auszug Funktionsbeschreibung ereg():
bool ereg ( string Suchmuster, string Zeichenkette [, array regs])

Gibt TRUE zurück, wenn in Zeichenkette eine Übereinstimmung mit Suchmuster gefunden wurde oder FALSE, wenn keine Übereinstimmung gefunden wurde oder wenn ein Fehler aufgetreten ist.


Demnach also:

PHP:
if (ereg($namen[$i],$schrott)) {
        echo "ich ordne dich in die schrott table ein"; 
} else { 
        echo "ich lass dich da wo du bist"; 
}
 
Hey, das ist wunderbar !

Macht meinen Code einfach übersichtlicher, weil ich nicht erst den Wert, den ich bei der IF Abfrage einfügen will, in einer Variable speichern muss.

Werde dann mal weiter werkeln.
 
Naja, nachdem ich nun ein wenig rumgebastelt habe, merke ich, dass das noch nicht funktioniert.

Hier mal das Return, was ich mir geben lasse um zu kontrollieren, ob das Einsortieren geht:

PHP:
7) GRT_ART - D - ich bin ein Drucker von Schrott/Kaiser-R und muss in die Table drucker ich lass dich da wo du bist

$temp[8] ist in diesem Fall "D"
$i ist in diesem Fall "7"
$temp[3] ist in diesem Fall "Schrott/Kaiser-R"

Hier der Code der EREG Abfrage:

PHP:
elseif($temp[8]=='D'){
	    echo "ich bin ein Drucker von $temp[3] und muss in die Table <font color=blue>drucker</font> ";
		  if (ereg($temp[3],$schrott)) { 
            echo "<font color=blue><b>ich ordne dich in die schrott table ein</b></font><br>"; 
          }// if zu von schrott abfrage
		  else { 
            echo "ich lass dich da wo du bist<br>"; 
          } // else zu von schrott abfrage
	  }// elseif zu vom temp D abfrage

Wenn es funktionieren würde, müsste er mir aber:

PHP:
7) GRT_ART - D - ich bin ein Drucker von Schrott/Kaiser-R und muss in die Table drucker ich ordne dich in die schrott table ein

ausgegeben.


Ich teste nun nochmal mit diesem Gebilde:

PHP:
if(!strstr($temp[3],'schrott'))
    echo 'ist schrott';
else
    echo 'kein schrott';

Und diesmal schiebt er mir alles in die Schrott Table :/ Liegt wohl am !strstr.
Warum kriegt der die Unterscheidung nicht hin :(
 
Zuletzt bearbeitet:
Zurück