Mehrere Sprachen in eine Tabelle abspeichern

buzzom

Mitglied
Guten Tag,

Ich möchte den Benutzer drei Sprachen angeben lassen, die er kann, per Drop-Down Input.

Die Daten sollen dann in einer extra Tabelle gespeichert werden. Also ID des Benutzers und die jeweilige Sprache. Also z.B.

ID sprache
55 1
55 9
55 4

Die Zahlen stehen für die Sprachen.

Ich habe das bisher so umgesetzt:
PHP:
...
$db = new db();
$sql="INSERT INTO language (ID, sprache) VALUES ('".$ID."','".$sprache1."') ";
$result=$db->execute($sql);

$db = new db();
$sql="INSERT INTO language (ID, sprache) VALUES ('".$ID."','".$sprache2."') ";
$result=$db->execute($sql);

$db = new db();
$sql="INSERT INTO language (ID, sprache) VALUES ('".$ID."','".$sprache3."') ";
$result=$db->execute($sql);
...

Leider trägt er immer nur die erste Sprachauswahl in die Tabelle ein, aber nicht alle drei.

Wo ist mein Denkfehler? Ich freue mich über jeden weisen Rat.
Danke
 
Auch wenn ich deine Datenbank Klasse nicht kenne, bezweifle ich dass du für jedes Query eine neue Instanz der Klasse brauchst.
Wie wäre es denn so?

PHP:
$db = new db();
$sql = "INSERT INTO language (ID, sprache) VALUES ('".$ID."','".$sprache1."'), ('".$ID."','".$sprache2."'), ('".$ID."','".$sprache3."')";
$db->query($sql);

Hast du mal geschaut, ob $sprache1, 2 und 3 auch wirklich befüllt sind?
 
Leider funktioniert das auch nicht, Er trägt auch damit nur die erste Sprache ein. ID Feld ist nicht Unique.
 
Sagt [phpf]mysql_error[/phpf] irgendwas?
Hast du überprüft ob die Variablen wird gefüllt sind?

Wie sieht deine query Funktion aus?
 
Hallo,

ich frage mich gerade, wieso du überhaupt für jede der 3 Sprachen eine neue Zeile machen willst, klar ist das felxiblier da du auch schnell auf mehr als 3 wechseln kannst, wenn das ganze aber fest 3 Stück sind, dann würde ich eigentlich eher UserId, Sprache1, Sprache2, Sprache3 oder spricht irgendwas dagegen? (dann würde nämlich das Problem auch nicht auftreten)

LOK
 
Ausgabe bei echo mysql_errno() . ": " . mysql_error() . "\n"; ist: 0:

Variablen sind ausgefüllt, zb 1,2,3 als Sprachcode. Hab ich mit echo ausgegeben, ums zu testen.


Funktion sieht so aus:

PHP:
PUBLIC function execute($sql)
{
++self::$queries;
$erg = mysql_query($sql, self::$con);
$this->affected_rows = mysql_affected_rows(self::$con);
$this->num_rows = @mysql_num_rows($erg);
if($this->num_rows)
  {
  $i=1;
  while($array[$i] = mysql_fetch_assoc($erg)) {++$i;}
  mysql_free_result($erg);
  unset($array[$i]);
  return $array;
  }
$this->insert_id = mysql_insert_id(self::$con);
return true;
}

Es muss immer eine neue Zeile sein, weil ja jeder Sprache dann noch ein Können zugeordnet werden soll:
z.B.
ID sprache koennen
65 1 3


danke an alle
 
Zurück