Datenbanksynchronisierung klappt nicht! HILFE!

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

  • Datenbanksynchronisierung klappt nicht! HILFE!

    Ich habe folgendes vor:
    Eine Website, die ich entbuggen soll (Scriptersteller hat anscheinend nur irgendwelchen nicht-funktionieren-Mist zusammengeklatscht) besteht aus vielen, unübersichtlichen Tabellen, die allerdings alle irgendeinen Bezug zueinander haben. Nun möchte ich zb. verschiedene Daten aus 2 Tabellen übernehmen und in eine einzige reinpacken, dazu kommt noch, dass der Ersteller alle Zeiten im Unix-Timestamp-Format gespeichert hat. Zwecks Lesbarkeit, Performance und "Schönheit" der DB habe ich nun beschlossen, diese Zeiten umzuwanden, mit date() geht das auch wunderbar. Nur: Egal was ich einlese und in eine neue Tabelle einlesen, er akzeptiert zwar mein kleines Synchronisierungsscript (keine Fehlermeldung), aber dennoch bleiben alle neuen Tabellen leer! Ich hoffe, jemand erklärt sich bereit, mal meinen Code durchzusehen, und meine Fehler ausfzulisten, vielen Dank schonmal in Vorraus!!

    PHP-Code:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Daten zwischen alter und neuer Datenbank synchronisieren</title>
    </head>
    <body>
    <?php 
    $ok1
    ="0";
    $ok2="0";
    error_reporting(E_ALL);
    require 
    "config.php";
    mysql_connect($server,$user,$password)or die("Keine Verbindung zur MySQL Datenbank möglich");
    mysql_select_db($dbname);

    $newsquery mysql_query("SELECT * FROM cm_dl_comments");
    while (
    $news=mysql_fetch_array($newsquery)) {
    $datum=date("d.m.y"$news['date']);
    $zeit=date("H:i:s"$news['date']);
    $text=($news['comment']);
    $id1=($news['id']);
    if (!
    mysql_query("TRUNCATE news") && 
    !
    mysql_query("UPDATE news SET datum='$datum', 
    zeit='
    $zeit', text='$text', id='$id1'")) {

    ?><b>Newsabgleich:</b> <? echo mysql_error()?><br><? ; $ok1="0";}
    else {$ok1="1";}}
    $downloadquery=mysql_query("SELECT * FROM cm_dl_info");
    while ($downloads=mysql_fetch_array($downloadquery)) {
       $eintragdatum=date("d.m.y", $downloads['zeit']);
       $eintragzeit=date("H:i:s", $downloads['zeit']);
       $pic=$downloads['pic'];
       $gruppeid=$downloads['gruppeid'];
       $name=$downloads['name'];
       $lang=$downloads['lang'];
       $info=$downloads['info'];
       $genre=$downloads['genre'];
       $seeder=$downloads['seeder'];
       $leecher=$downloads['leecher'];
       $lastupdate=(date("H:i:s", $downloads['lastupdate']));
       $pswd=$downloads['pswd'];
       $deadsince=(date("d.m.y", $downloads['deadsince']));
       $id=($downloads['id']);
       $poster=$downloads['poster'];
       $downloads2_query=mysql_query("SELECT * FROM cm_dl_links WHERE id = $id");
       while ($downloads2=mysql_fetch_array($downloads2_query)) {
       $link=$downloads2['link'];
       $klicks=$downloads2['klicks'];
       $tracker=$downloads2['tracker'];
       $size=$downloads2['size'];
       $downloadart=$downloads2['name'];
    if (!mysql_query("UPDATE downloads SET pic='$pic', eintragungsdatum='$eintragdatum', 
         eintragungszeit='$eintragzeit', id='$id', gruppeid='gruppeid', name='$name', 
         sprache='$lang', beschreibung='$info', genre='$genre', seeder='$seeder', 
         leecher='$leecher', klicks='$klicks', deadsince='$deadsince', link='$link', 
         tracker='$tracker', groesse='$size', downloadart='$downloadart', 
         poster='$poster', passwort='$pswd'"))
    { ?><b>Downdloadabgleich:</b> <? echo mysql_error()?><br><? ; $ok2="0";}
        else {$ok2="1";}}}
        
    if ($ok1="1" && $ok2="1") { echo "hat alles wundertschön geklappt!";}
    $neue_downloads_query=(mysql_query("SELECT * FROM downloads"));
    while ($neue_downloads=(mysql_fetch_array($neue_downloads_query))) {
    $tag=(substr($neue_downloads['eintragungsdatum'], 0, 2));
    $monat=(substr($neue_downloads['eintragungsdatum'], 3, 2));
    $jahr=(substr($neue_downloads['eintragungsdatum'], 6, 2));
    $datumscode=($tag + ($monat*30) + ($jahr*356));
    $name=($neue_downloads['name']);
    $stunde=(substr($neue_downloads['eintragungszeit'], 0, 2));
    $minute=(substr($neue_downloads['eintragungszeit'], 3, 2));
    $sekunde=(substr($neue_downloads['eintragungszeit'], 6, 2));
    $zeitcode=($sekunde + ($minute*60) + ($stunde*3600));
    $id=($neue_downloads['id']);
    mysql_query("UPDATE downloads SET datumscode='$datumscode', 
    zeitcode='$zeitcode' WHERE id=$id");}

    //$auslesen_query=mysql_query("SELECT * FROM downloads ORDER BY datumscode DESC");
    //$auslesen=mysql_fetch_array($auslesen_query);    
    ?>


    </body>
    </html>
    Zuletzt geändert von tha_specializt; 28.12.2005, 15:44.

  • #2
    ich sehe auch nirgends einen INSERT

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      öh... muss INSERT unbedingt sein? Geht da nicht einfach UPDATE? Weil meine Felder sind alle NULL, und das is ja auch was, oder

      Kommentar


      • #4
        Oeh

        PHP-Code:
        $text=($news['comment']); 
        () ????? Ok, wenn du meinst...


        Für das while ($downloads = ...................... würde ich mir mal
        DAS angucken, das macht die ganze sache übersichtlicher.

        Ansonsten einfach VOR dem Query mal das SQL Statement ausgeben lassen und kontrollieren.

        Ausserdem kannst du mit FROM_UNIXTIME in SQL die ganzen Timestamps auch ohne PHP direkt auslesen ohne date benutzen zu müssen.$text=($news['comment']);

        Ach ja und du sagtest ("dennoch bleiben alle neuen Tabellen leer! ") und meinst UPDATE.. .NEUE TABELLEN != UPDATE
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Kommentar


        • #5
          Original geschrieben von hhcm
          Oeh

          PHP-Code:
          $text=($news['comment']); 
          () ????? Ok, wenn du meinst...
          hehe... das kommt bei mir von mathe.. bin es gewohnt DIE MENGE AUS.... immer voll mit einzubeziehen, ohne Klammern gibts da sonst manchma Probleme... Aber ich denke mal, das sollte nicht weiter stören...


          Original geschrieben von hhcm
          Für das while ($downloads = ...................... würde ich mir mal
          DAS angucken, das macht die ganze sache übersichtlicher.
          hm... ich glaube, das würd es eher noch komplizieren, und die ladezeiten verlängern (sind dann zwar nur einige wenige ms, aber immerhin) Muss ich das machen, oder hättest du das nur gern wegen der Übersichtlichkeit?

          Original geschrieben von hhcm
          Ansonsten einfach VOR dem Query mal das SQL Statement ausgeben lassen und kontrollieren.
          öh.... Wie würde das dann aussehen? (Me=ewiger Noob=
          Original geschrieben von hhcm
          Ach ja und du sagtest ("dennoch bleiben alle neuen Tabellen leer! ") und meinst UPDATE.. .NEUE TABELLEN != UPDATE [/B]
          japp, ich habs jetzt mal mit folgendem probiert:
          PHP-Code:
          if ((!mysql_query("TRUNCATE news")) && (!mysql_query("INSERT INTO news (datum, zeit, text, id) VALUES ('$datum', '$zeit', '$text', '$id1')"))) 
          und hier kommt das übliche "DANN".... 
          so müsste es doch zumindest mal eintragen, oder?
          Hab da einen bösen Verdacht: da das ganze in einer Schleife steckt, löscht er denn bei jedem datenbankeintrag die komplette tabelle und schreibt einen eintrag rein, wieder löschen, eintragen etc?

          Kommentar


          • #6
            japp, hab es jetzt, vielen dank an euch! Ich musste einfach nur das UPDATE durch INSERT ersetzen, und das TRUNCATE wegmachen, sonst hätte er immer wieder die DB gelöscht, nachdem er gerade einen einzigen eintrag gemacht hat , sowas nennen wir elektrotechniker "rücksetzdominant"

            Kommentar


            • #7
              Original geschrieben von tha_specializt
              hm... ich glaube, das würd es eher noch komplizieren, und die ladezeiten verlängern (sind dann zwar nur einige wenige ms, aber immerhin) Muss ich das machen, oder hättest du das nur gern wegen der Übersichtlichkeit?
              *lol*?
              eine inbuild C++ Function aka extract ist mit Sicherheit flotter als rumgeschiebe von Var-Werten, die erst geparst werden müssen...zumindest sofern du alle Vars aus dem Array brauchst

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar

              Lädt...
              X