Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Verschachtelte Arrays ausgeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Verschachtelte Arrays ausgeben

    Hallo an alle,

    ich schätze mal, ich darf meine Frage hier platzieren. Sollte ich es überschätzt haben, kein Problem damit, dass der Admin mein Post zum Anfänger Forum verschiebt.

    Ich möchte Feld nummer Tabelle "phpbb_users" in einer mySQL Datenbank mit den Werten aus dem Feld nummer Tabelle "Egal" in einer MS SQL Server Datenbank synchronisieren. Um Problem zu lösen, habe ich mir folgendes gedacht:


    1. mySQL Datenbank auslesen
    Code:
    $query="SELECT user_id, username, user_avatar, user_email, user_sig
    FROM `phpbb_users`
    WHERE...";
    2. Ergebniss in ein verschachteltes Array speichern
    Code:
    result = mysql_query($query,$link);
    $num = mysql_numrows($result);
    for ($i = 0; $i < $num; $i++) {
    	$row = mysql_fetch_array($result);
    
    	$arrUsers[] = array (
    		$key => array (
    			"id" => $row['user_id'],
    			"username" => $row['username'], 
    			"useremail" => $row['user_email'],
    			"usersig" => $row['user_sig'],
    			"nummer" => 0 //damit ich es später mit den Werten aus SQL Datenbank füllen kann
    		) 
    	);
    3. Verbindung mit MS SQL Server Datenbank aufbauen, Schleife durch das verschacteltes Array, finde User aufgrund von username, useremail und usersig, Wert nummer in das Array $arrUsers (key nummer) schreiben.

    4. Schleife durch das $arrUsers, Wert nummer in die mySQL Datenbank schreiben.

    =============================
    Meine Fragen sind:
    # Gibt es vielleicht eine elegantere Lösung?
    # Soll ich ein Objekt statt eines verschacteltes Arrays verwenden?
    # Wie mache ich eine Schleife durch das verschachtelte Array?


    Ich weiss, dass ich mich nicht optimal ausgedrückt habe, aber bin zuversichtlich, dass ihr versteht was ich meine.[/php]

  • #2
    ich würd sagen du öffnest die beiden parallel, ließt die daten in einer schleife aus der msSQL aus und updatest gleichzeitig (falls entsprechender user ohne nummer vorhanden) in der mysql datenbank.
    Dazu sind eigentlich weder arrays, noch objekte notwendig.

    Kommentar


    • #3
      nun, daran habe ich schon gedacht, das ist mir aber etwas heikel vorgekommen. anyway, ich habe es mit assoziativen array gelöst. falls wen interesiert, so:

      1. zuerst lese ich tabelle phpbb_users und speichere sie in ein assoziatives array, und zwar so, dass dem index user_id zugewiesen ist, dazugehörige wert ist ein verschachteltes array mit restlichen daten. ich habe bereits "nummer" vorgesehen, das wird mit daten aus der sql server datenbank gefüllt.

      Code:
      $query = "SELECT user_id, username, user_avatar, user_email, user_sig
      FROM `phpbb_users` WHERE ... ";
      $result = mysql_query($query,$link);
      $num = mysql_numrows($result);
      for ($i = 0; $i < $num; $i++) {
      	$row = mysql_fetch_array($result);
      	$arrUsers[$row['user_id']] = array
      		(
      			"name" => $row['username'], 
      			"mail" => $row['user_email'],
      			"sig" => $row['user_sig'],
      			"nummer" => 0
      		);
      }
      2. das array lässt sich dann wie unten auslesen. wenn man dazu while einsetzt, wichtig ist nacher pointer reset durchzuführen, damit man ein nächstes mal das array auslisten kann. ich glaube, bei foreach ist das nicht der fall.

      Code:
      while(list($id) = each($arrUsers)) {
      	echo $id."=>";
      	echo $arrUsers[$id]['name']."=>";
      	echo $arrUsers[$id]['sig']."=>";
      	echo $arrUsers[$id]['mail'];
      }
      reset($arrUsers);
      3. der rest ist easy, while schleife durch das array, abfrage der sql server datenbank, nummer feld des arrays mit entsprechenden wert füllen.

      Code:
      while(list($id) = each($arrUsers)) {
      	$sqlquery="SELECT * FROM ... WHERE email = '".$arrUsers[$id]['mail']."'";
      	$process=odbc_exec($sqlconnect, $sqlquery);
      	$nummer = odbc_result($process,"nummer");
      	$arrUsers[$id]['nummer'] = $nummer;
      }
      reset($arrUsers);
      4. in diesem schritt gehe ich nochmal zur mySQL datenbank, mache eine schleife durch das array und aktuallisiere nummer feld. voila.

      Code:
      while(list($id) = each($arrUsers)) {
      	$query = "
      	UPDATE `phpbb_users` SET nummer = '".$arrUsers[$id]['nummer']."'
      	WHERE user_id = '".$id."'";
      	$result = mysql_query($query,$link);
      }
      by...

      Kommentar

      Lädt...
      X