Seite 3 von 3

Re: Problem bei MYSQL / PHP

BeitragVerfasst: 1. Jun 2010, 17:16
von ThaSpeedy
liro hat geschrieben:
ThaSpeedy hat geschrieben::mrgreen:

Ich empfehle dir dringendst (my)sql basics zu lernen, es gibt viele möglichkeiten :mrgreen: UNIQUE ist sicher besste !


Meinst du mich?
Ehh... wenn ja... dann erzähl mal, was ich falsches gesagt haben soll...


Ich find deine idee ne gut lösung und mein dann noch das du mysql lernen solltest??^^ ROFL

das war an megacrack gerichtet^^

Re: Problem bei MYSQL / PHP

BeitragVerfasst: 2. Jun 2010, 13:23
von megacrack
^^ ja das sollte ich...

Also gibt es immer noch keine (einfache) Lösung?

Re: Problem bei MYSQL / PHP

BeitragVerfasst: 2. Jun 2010, 15:51
von ThaSpeedy
Bitteschön :mrgreen:

MYSQL Statements wie SELECT, FROM, VALUES usw bitte immer gross schreiben, spalten und tabellennamen mit ` ` eingrenzen^^

Wenn du noch fragen hast dann schreib, musste noch an deine Tabellen anpassen!

Gruss Speedy
Code: Alles auswählen
<?php

$query1 = mysql_query('SELECT `user_name` FROM `Tabelle1`');
$query2 = mysql_query('SELECT `user_name` FROM `Tabelle2`');
// array starten
$vorhanden_username_array = array();
// Alle vorhanden Daten einlesen aus tabelle 2
while($vorhanden_username = mysql_fetch_assoc($query2))
{
      $vorhanden_username_array[] = $vorhanden_username['user_name'];
      // Alle vorhandenen namen einlesen und in array machen
}
// Schauen welche Namen da sind
while ($username_aus_tabelle1 = mysql_fetch_assoc($query1)
{
   // wenn der name nicht vorhanden ist im array dann mach den query
   if (!in_array($username_aus_tabelle1['user_name'], $vorhanden_username_array))
   {
      /*
       * JETZT DARFST DU INSERT MACHEN DA NICHT VORHANDEN
       *
       * */
      mysql_query('INSERT INTO `Tabelle2` (`user_name`) VALUES (\''.$username_aus_tabelle1['user_name'].'\')');
   }
}      
?>

Re: Problem bei MYSQL / PHP

BeitragVerfasst: 2. Jun 2010, 18:19
von Franz
Woraus besteht denn deine Tabelle `level` alles? Nur `user_name` (Primary) oder noch viel mehr?

Jedenfalls würd ich erstmal die Abfrage, wenn doppelte `user_name` in `fusion_users` eingetragen werden können, auf Distinct oder Group By selecten.

Code: Alles auswählen
SELECT DISTINCT `user_name` FROM `fusion_users`


So haste schonmal keine Doppelten zum Eintragen in die Tabelle `level`.

  • Wenn dann deine Tabelle `level` nur aus dem Primary `user_name` besteht, dann reicht folgendes zum syncen:

    Code: Alles auswählen
    INSERT INTO `level` (SELECT DISTINCT `user_name` FROM `fusion_users`)

  • Wenn dann deine Tabelle `level` nicht nur aus dem Primary `user_name` besteht, dann folgendes zum syncen:

    Code: Alles auswählen
    INSERT IGNORE INTO `level` (`user_name`) (SELECT DISTINCT `user_name` FROM `fusion_users`)

Wenn wiederrum Daten geupdated werden sollen, wenn der neue `user_name` neueingetragen würde, aber doppelt wäre, dann anstelle von IGNORE halt ON DUPLICATE KEY UPDATE usw usf.

Ich denke, ein Query reicht hier vollkommen und muss nicht extern verarbeitet werden. Wenn ich das Anliegen jetzt als solches verstanden habe ;)

Re: Problem bei MYSQL / PHP

BeitragVerfasst: 2. Jun 2010, 19:05
von megacrack
Danke für die Lösungen, habs aber selber hingekriegt:

Code: Alles auswählen
$ab="SELECT user_name FROM fusion_users";
$ergebnis = mysql_query($ab);
while($row = mysql_fetch_object($ergebnis))
    {
   $rowname=$row->user_name;
   $ab2="INSERT Level (`user_name`,`user_level`) VALUES ('".$rowname."','0')";
   $req=mysql_query($ab2);
   }

Re: Problem bei MYSQL / PHP

BeitragVerfasst: 2. Jun 2010, 19:17
von Franz
Wie gesagt, ich würds lieber nur in SQL realisieren. Extra noch extern, verbraucht insgesamt viel mehr Last für den Server.

Was ich aber vergaß:

`user_name` in der Tabelle `level` als UNIQUE INDEX verwalten, wenn nicht PRIMARY
`user_level` DEFAULT 0

/* edit
*
* Deine Anweisung fängt keine Doppelten ab, wenn `user_name` kein UNIQUE oder es kommt zu Fehlern und Query bricht ab.
*
*/

Re: Problem bei MYSQL / PHP

BeitragVerfasst: 2. Jun 2010, 21:01
von megacrack
ja, hab die spalte auf primary gesetzt...