Ankündigung

Einklappen
Keine Ankündigung bisher.

!Abfrge wenn mehr als ein datensatz... vergleich...

Einklappen

Neue Werbung 2019

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

  • !Abfrge wenn mehr als ein datensatz... vergleich...

    Moin...

    ich bräuchte mal einen Denkanstoß... und zwar habe ich eine Tabelle mit
    Kundennummern. In diese Tabelle ist leider nicht in der 3. Normalform. Es
    gibt eine Spalte "kdnr". In dieser können redundanzen auftauchen.
    bedeutet... wenn ein Kunde mehrere Produkte hat, hat er eine kdnr und
    mehrere Datensätze. Nun möchte ich abfragen, wenn dieser Fall auftritt,
    dass mir die Unterschiede zb. rot Makiert werden.


    Bei mir hakt es momentan an der Schleife, die zwischen den einzelnen Datensätzen vergleicht.

    hier mal ein wenig code...

    PHP-Code:
           $result mysql_query("SELECT * FROM tbl_kd WHERE kdnr = '$vkdnr' ORDER BY kdnr");
            
    $anzkd mysql_query("SELECT COUNT(kdnr) AS anzkd FROM tbl_kd WHERE kdnr = '$vkdnr'");
            
    $rowanzkd mysql_fetch_array($anzkd);
            if (
    $rowanzkd['anzkd'] > 1)
                {
                
    //vergleiche Datensaetze....
                
    }
            while (
    $row mysql_fetch_array($result))
                {
                
    //zeige datensze
                

    Es gibt 6 Spalten die verglichen werden müssen...

  • #2
    Hakt es wirklich in der Schleife oder geht er nicht in die Schleife hinein?

    Da fehlt n�mlich in der 2. Zeile das Group By.

    Kommentar


    • #3
      Wenn du eh alle Datensätze holst, kannst du die Anzahl der Datensätze auch einfach mit mysql_num_rows() ermitteln.

      Kommentar


      • #4
        Also...

        mein problem ist die logische definition...

        was ich mir jetzt überlegt hatte ist, wenn ich in der while schleife, in welcher mir die datensätze angezeigt werden einfach ne zählvariable einbaue und dann alle daten in ein mehrdimensionales array packe müsste ich doch auf diese zurückgreigen können und mit in_array() vergleichen können...

        nur am erstellen des codes hapert es...

        oder leige ich da ganz falsch?

        gut die zählung werde ich mir durch mysql_num_rows() sparen...

        Kommentar


        • #5
          Könntest du mal anhand eines Beispiels demonstrieren, was genau du überhaupt vorhast?

          Kommentar


          • #6
            jo... ich versuchs ma mir pseudocode...

            - wenn mehr als ein datensatz zu kundennummer x
            - vergleiche datensätze in feld 1 2 3 4 5 und 6 immer zum datensatz mit der kleinsten(eindeutigen) id
            - wenn felder unterschiedlich makiere diese in der ausgabe als roten text.

            bedeutet... ich habe eine Kundendatenbank, in welcher Kunden redundant erfasst werden. Es gibt z.b. eine spalte die heisst stasse. Wenn dieser Kunde z.b. 2 oder 3 wohnsitze hat. sollen mir in der ausgabe alle 2 oder 3 datensätze angezeigt werden und mit dem ersten verglichen werden. Alle Abweichungen zum ersten Datensatz sollen rot makiert werden.

            Kommentar


            • #7
              Dann schreibe beim 1. Durchlauf der Schleife alle Werte des Datensatzes in ein Array und überprüfe bei jedem Durchlauf der Schleife, ob der gerade aktuelle Datensatz Unterschiede aufweist.

              Kommentar


              • #8
                jo so habe ich es gerade auch ungefair gemacht... und es funzt...

                danke für die vielen tipps.. und frohe weihnachten...

                Kommentar


                • #9
                  Geht leider immer noch nicht richtig... war nur zufall das es bei diesem datensatz stimmte....

                  beim ersten durchlaufen der schleife schreibt er daten ins array... beim 2. durchlauf kann ich aufs erste array nicht mehr zurückgreifen...

                  ich hab mir vor der while schleife eine zählvariable eingebaut namens $arraynumber = 1 und in der schleife mach ich folgendes:

                  PHP-Code:
                  <?php
                                  $kdarray 
                  = array($arraynumber => array("duid" => $duid"dkdnr" => $dkdnr"dtarif" => $dtarif));
                                  
                  //wenn tarif != zum ersten datensatz
                                  
                  if ($kdarray[$arraynumber]['dtarif'] == $kdarray[1]['dtarif'])
                                      {
                                      
                  $colortarif "green";
                                      }
                                  else
                                      {
                                      
                  $colortarif "red";
                                      }
                                  
                  $arraynumber++;
                  ?>
                  nur funktioniert es so leider nicht....

                  Kommentar

                  Lädt...
                  X