Ankündigung

Einklappen
Keine Ankündigung bisher.

Vergleichen

Einklappen

Neue Werbung 2019

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

  • Vergleichen

    Hallo,
    hab da nen Problem und kenn mich nich so gut aus mit sql etc hoffe ihr könnt mir helfen, tipps geben wie ich weiter komme.

    Also Folgendes Problem

    Code:
              Name1		    	  	5.000    	1.000.000   	500,2   	  
    	  Name2		   		3.948    	5.760.822   	446,0   	  
    	  Name3		 		4.220    	9.685.421   	399,4   	  
    	  Name4		  		6.000    	2.643.887   	275,4   	  
    	  Name5		  		3.705    	1.595.177   	430,5
    Ich hab diese eingabe die ich in ein html feld eingebe. So jetzt soll er die ganzen werte in eine Datenbank üebrnehmn und abspeichern!

    So bei der nächsten Eingabe ändern sich die werte z.B. so:


    Code:
              Name1		    	  	1.150    	1.450.000   	520,2   	  
    	  Name2		   		3.563    	5.760.822   	946,0   	  
    	  Name3		 		1.220    	7.685.421   	399,4   	  
    	  Name4		  		9.000    	2.457.887   	275,4   	  
    	  Name5		  		9.705    	1.595.177   	530,5
    Nun Soll er die neuen werte mit den alten vergleichen und mir die Unterschiede ausgeben (Namen bleiben gleich) und dann die neuen werte in die datenbank üebrnehmen.

    Hoffe ich habs verständlich erklärt.
    Hat jemand Ideen tipps vorallem dafür wie ichs gespeichert bekomme das ers irgendwie vergleichen kann unterschiede errechnet

    MFG

  • #2
    Was genau meinst du denn genau mit "Unterschiede ausgeben"?
    Könntest du uns basierend auf diesem Beispiel zeigen, wie genau dann die Ausgabe aussehen soll?

    Kommentar


    • #3
      kk

      also das alte
      Code:
                Name1		    	  	5.000    	1.000.000   	500,2
      und das neue

      Code:
                Name1		    	  	1.150    	1.450.000   	520,2

      Ausgegeben werden soll dann folgendes:
      Code:
                Name1		    	  	-3.850    	+450.000   	     +20
      Also jeweils die verädnerungen der jeweiligen spalten zum vorgänger

      Kommentar


      • #4
        PHP-Code:
        /**
         * @param ressource $dbHandler
         * @param array $new
         *    [0] => array(1.150, 1.450.000, 520,2),
         *    [1] => array(3.563, 5.760.822, 946,0),
         *    [2] => array(1.220, 7.685.421, 399,4),
         *    [3] => array(9.000, 2.457.887, 275,4),
         *    [4] => array(9.705, 1.595.177, 530,5)
         */
        function update($dbHandler, array &$new)
        {
           
        // Transaktion starten:
           
        if(!mysql_query('START TRANSACTION;'$dbHandler))
              return 
        false;

           
        // Abfrage der DB-Daten:
           
        $sql=
              
        'SELECT col0, col1, col2'.
              
        '   FROM tabelle;';
           
        $result mysql_query($sql$dbHandler);
           if(!
        $result)
              return 
        false;

           
        // Ausgabe der Differenzen:
           
        $i 0;
           while(
        $rowOld mysql_fetch_array($result))
           {
              
        $rowNew $new[$i++];
              echo 
                 (
        $rowNew[0] - $rowOld[0]) . ', ' .
                 (
        $rowNew[1] - $rowOld[1]) . ', ' .
                 (
        $rowNew[2] - $rowOld[2]) . '<br />';
           }

           
        // Update in DB:
           
        foreach($new as $key => $rowNew)
           {
              
        $sql=
                 
        'UPDATE tabelle SET'.
                 
        '   col0 = ' $rowNew[0] . ',' .
                 
        '   col1 = ' $rowNew[1] . ',' .
                 
        '   col2 = ' $rowNew[2] .
                 
        '   WHERE key = "Name' $key '";';
              if(!
        mysql_query($sql$dbHandler))
                 return 
        false;
           }

           
        // Transaktion beenden:
           
        if(!mysql_query('COMMIT;'$dbHandler))
              return 
        false;
           
           return 
        true;

        So. Ich glaube, das passt jetzt.
        Habe ich aber nur schnell hier in das Forum reingepostet. Ist natürlich nicht getestet.

        Kommentar


        • #5
          Okay danke bis dahin
          dachte jetzt nich das du mir gleich nen code schreibst jetzt muss ich den erstma kapiern

          Aber soweit ichs überblickt hab is da nich drin wie man die komplette eingabe die gemacht wird in die Datenbank reinbekommt soweit wie du jetzt vorgearbeitet hast war ich ja noch gar nich^^

          also d.h. ich müsste irgendwie die eingabe:

          Code:
                    Name1		    	  	5.000    	1.000.000   	500,2   	  
          	  Name2		   		3.948    	5.760.822   	446,0   	  
          	  Name3		 		4.220    	9.685.421   	399,4   	  
          	  Name4		  		6.000    	2.643.887   	275,4   	  
          	  Name5		  		3.705    	1.595.177   	430,5
          in jede reihe aufsplitten und dann die werte in die datenbank schreiben aber da fehlt mir der befehl für also um deinen Code weiterzu benutzen müsste der name in spalte 1 stehn und dann in spalte 2 stehn die 3 werte mitm komma getrennt werden, wobei das au hschwierieg wird weil die letzte zahl ja nen komma enthält

          Kommentar


          • #6
            Brauchst du nur die Kommas und Punkte löschen bzw. ersetzen.
            PHP-Code:
            $col0 str_replace('.'''$col0);
            $col1 str_replace('.'''$col1);
            $col2 str_replace(',''.'$col2); 
            Zum erstmaligen Einfügen braucht man einen INSERT-Befehl.

            PHP-Code:
            function insert(array &$new$dbHandler)
            {
               
            $sqlValues = array();
               foreach(
            $new as $rowNew)
                  
            $sqlValues[] = '(' implode(', '$rowNew) . ')';
               
            $sql 'INSERT INTO tabelle (col0, col1, col2) VALUES ' implode(', '$sqlValues) . ';';
               return 
            mysql_query($sql$dbHandler);

            Vielleicht kannst du auch mit REPLACE arbeiten. INSERT kann nur einen neuen Datensatz einfügen. REPLACE kann einen neuen Datensatz einfügen, bzw. ihn aktualisieren, falls er schon besteht.

            Kommentar

            Lädt...
            X