2 Tabellen mittels PHP-Script in eine verwandeln

Eiszwerg

Erfahrenes Mitglied
Tabellen mittels PHP-Script in eine verwandeln

Folgender Code:

PHP:
<?
$user="none";
$pw="anything";
mysql_connect ("localhost",$user,$pw);
$dbanfrage = "SELECT * FROM benutzerdaten";
$result = mysql_db_query ($user, $dbanfrage);

while ($Ausgabe = mysql_fetch_array ($result))
{
 $TBalt="tagebuch".$Ausgabe[Nickname];
 mysql_connect ("localhost",$user,$pw);
 $dbanfrage2 = "SELECT * FROM $TBalt";
 $result2 = mysql_db_query ($user, $dbanfrage2);
 
 while ($Benutzer = mysql_fetch_array ($result2))
 {
  mysql_connect ("localhost",$user,$pw);
  mysql_db_query ($user,"INSERT INTO  tagebuch  VALUES('0','$Ausgabe[Nickname]','$Benutzer[datum]','$Benutzer[titel]','$Benutzer[text]','$Benutzer[link]')");
  mysql_close();
 echo"$Ausgabe[Id] as $Ausgabe[Nickname] merged from $TBalt!<br>";
 }
} 
?>

Dieses Script holt sich aus der Tabelle "benutzerdaten" zuerst den Nicknamen des Users. Dann öffnet es die Tabelle "tagebuch"+Nickname und liest dort alle Einträge aus. Diese Einträge sollen dann in eine neue Tabelle transferiert werden; für alle Benutzer also. Das Problem besteht darin, dass jede Menge Einträge (142 sollen es sein, 116 sind es) fehlen.
Weiss jemand woran das liegen kann und wie ich Abhilfe schaffe?
 
Zuletzt bearbeitet:
adhoc fällt mir da keine Lösung ein, aber...

1) Probier mal, deine results in array(s) abzuspeichern, und arbeite dann mit den array(s). Denn dann kannst du sie beruhigt auch zwischendurch zählen.

2) eigentlich sollte man * vermeiden. Ich glaub aber auch nicht, dass das die Ursache für dein Problem ist. Aber wer weiß... :rolleyes:
 
Kleiner Zusatz. Laut der echo-Ausgabe werde aber alle Daten in die Tabelle "tagebuch" geschrieben. Leider nur laut echo...
 
Ich hab mir das mal so grob angeguckt und einiges geändert...

PHP:
<?
$user="none";
$pw="anything";
mysql_connect("localhost",$user,$pw);

$result=mysql_db_query ("SELECT * FROM benutzerdaten");
while ($Ausgabe=mysql_fetch_array($result))
{
	$TBalt="tagebuch".$Ausgabe[Nickname];
	$result2=mysql_query("SELECT * FROM $TBalt");
	while ($Benutzer=mysql_fetch_array ($result2))
	{
		if(mysql_query("INSERT INTO tagebuch VALUES('0','$Ausgabe[Nickname]','$Benutzer[datum]','$Benutzer[titel]','$Benutzer[text]','$Benutzer[link]')"))
		{
                    echo"$Ausgabe[Id] as $Ausgabe[Nickname] merged from $TBalt!<br>";
		}
	}
}
?>

Könntest du sonst hier sonst die Datenbankstruktur ein Wenig Skizzieren? Die einzelnen Felder usw.
 
Felder d. Tabelle benutzerdaten:
-Id
-Nickname
-...

Felder d. einzelnen Tagebücher; Name setzt sich zusammen aus tagebuch und Nickname:
-id
-datum
-text
-link

Felder d. Tabelle tagebuch:
-id
-user
-datum
-text
-link
 
@ Lars:
Mit Deinem Script führt er nur die Datensätze auf, die auch geschrieben werden. Also nicht die, die fehlen.
Bei mir hat er die aufgeführt, die vorhanden sind, diese aber nicht geschrieben.

Habe festgestellt, dass immer dieselben Einträge (bei meiner Tabelle) nicht geschrieben werden.
 
Zuletzt bearbeitet:
Habe das Script jetzt mal nur auf eine bestimmte Tabelle bezogen.

PHP:
<?
$user="none";
$pw="anything";
 $TBalt="tagebuchicezw3rg";
 mysql_connect ("localhost",$user,$pw);
 $dbanfrage2 = "SELECT * FROM $TBalt";
 $result2 = mysql_db_query ($user, $dbanfrage2);
 
 while ($Eintrag = mysql_fetch_array ($result2))
 {
  mysql_connect ("localhost",$user,$pw);
  mysql_db_query ($user,"INSERT INTO tagebuch (user, datum, titel, text, link) VALUES ('ICEzW3RG','$Eintrag[datum]','$Eintrag[titel]','$Eintrag[text]','$Eintrag[link]')");
   echo"$Ausgabe[Id] as $Ausgabe[Nickname] merged from $TBalt!<br>";
mysql_close();
 }
?>

Es fehlen immer noch diese 4 Einträge. :(
Weitere Ideen?
 
Ich hab die Sau! ;)

In dem Feldern kamen zB ...that's all... vor das ' scheint da Probleme zu bereiten. Wer weiss Abhilfe?
 
GELÖST! :p

PHP:
$user="none";
$pw="anything";
mysql_connect ("localhost",$user,$pw);
$dbanfrage = "SELECT Id,Nickname FROM benutzerdaten";
$result = mysql_db_query ($user, $dbanfrage);

while ($Ausgabe = mysql_fetch_array ($result))
{
 $TBalt="tagebuch".$Ausgabe[Nickname];
 mysql_connect ("localhost",$user,$pw);
 $dbanfrage2 = "SELECT * FROM $TBalt";
 $result2 = mysql_db_query ($user, $dbanfrage2);
 
 while ($Eintrag = mysql_fetch_array ($result2))
 {
-------------------------------------------------------
  $text = str_replace("'","\'",$Eintrag[text]); 
  $titel = str_replace("'"," ",$Eintrag[titel]); 
-------------------------------------------------------
  mysql_connect ("localhost",$user,$pw);
  mysql_db_query ($user,"INSERT INTO tagebuch VALUES('0','$Ausgabe[Nickname]','$Eintrag[datum]','$titel','$text','$Eintrag[link]')");
   echo"$Ausgabe[Id] as $Ausgabe[Nickname] merged from $TBalt!<br>";
   mysql_close();
 }
}
 
Zurück