Ähnliche Produkte

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

  • #16
    Okay, genauso hatte ich's gemacht (unter Windows ;-) ), allerdings wurde die Datei dann im PHP-Editor geöffnet. Das heisst dann wohl, dass es nicht funktioniert, richtig?

    Kann man das einrichten? (ich arbeite unter Windows mit dem XAMPP)
    Das Genie überblickt das Chaos!

    Wer Rechtschreibfehler findet, darf sie behalten!

    Kommentar


    • #17
      Code:
      pfad/zur/php.exe -?
      erklärt dir gerne, wie du PHP-Kommandos über die Kommandozeile ausführen kannst.

      Kommentar


      • #18
        Hmm, also ich hab nicht rausgefunden, ob ich PHP-Scripte lokal laufen lassen kann.

        Ich hab mein Script jetzt mal online getestet. Leider kam nach (ich schäte jetzt mal 5 Minuten ein Error 500). Mein Script sieht wie folgt aus:

        PHP-Code:
            /* Kriterien und zugehörige Bewertung */
            
        $feld1      2;
            
        $feld2      5;
            
        $feld3      4;

            
        $ids = array();
            
        $sql mysql_query("SELECT * FROM `table` ORDER BY `id` ASC");
            while(
        $row mysql_fetch_array($sql)){
                
        array_push($ids$row['id']);
            };

            
        $sql mysql_query("SELECT * FROM `table` ORDER BY `id` ASC");
            while(
        $row mysql_fetch_array($sql)){
                
        $id $row['id'];
                
        $punkte 0;
                foreach(
        $ids as $id ){
                    
        $sql2 mysql_query("SELECT * FROM `table` WHERE `id`='".$id."' ORDER BY `id` ASC");
                    while(
        $row2 mysql_fetch_array($sql2)){

                    if (
        $row['feld1']==$row2['feld1']) {
                        
        $punkte $punkte $feld1;
                    }
                    else {
                    }
                    if (
        $row['feld2']==$row2['feld2']) {
                        
        $punkte $punkte $feld2;
                    }
                    else {
                    }
                    if (
        $row['feld3']==$row2['feld3']) {
                        
        $punkte $punkte $feld3;
                    }
                    else {
                    }
                    
        $insert "INSERT INTO `table_2` ( `id` , `produkt_1` , `produkt_2` , `punkte` )
                               VALUES (NULL , '"
        .$row['id']."', '".$row2['id']."', '".$punkte."')";
                    
        $mysql_insert mysql_query($insert);
                    
        $punkte 0;
                    };
                }
            } 
        Das Script läuft bis ca. 320.000 Einträgen, dann kommt es vermutlich zu einem Time-Out.

        Das Problem ist, dass es allerdings insg. ca. 1 Mio Einträge geben müsste (Tendenz steigend) und leider bleibt es auch nicht bei den 3 Feldern, die verglichen werden müssen. Es sollen ca. 50 Felder verglichen werden.

        Hat jemand eine Idee für einen besseren Ansatz oder andere Optimierungstipps?
        Das Genie überblickt das Chaos!

        Wer Rechtschreibfehler findet, darf sie behalten!

        Kommentar


        • #19
          Abgesehen davon, dass Queries in Schleifen immer böser werden, je öfter die Schleife durchlaufen wird, vergleichst du so doch immer jeden Datensatz mit sich selbst oder nicht?
          Ich schätze mal, du willst jeden Datensatz mit allen anderen vergleichen und danach Punkte vergeben? Mal so versucht :

          PHP-Code:
          $data = array();

          $sql mysql_query("SELECT * FROM `table` ORDER BY `id` ASC");
          while(
          $row mysql_fetch_array($sql)){
                 
          $data[$row['id']] = $row;
          };

          foreach(
          $data as $id => $row) {
              foreach(
          $data as $id2 => $row2) {
                  if (
          $id2 != $id) {
                       if (
          $row['feld1']==$row2['feld1'])
                      
                      [ ... ]
              
                      
          $mysql_insert mysql_query($insert);
                  }
                     
          $punkte 0;
              }

          ich glaube

          Kommentar


          • #20
            @ministry: Vielen Dank für deinen Tipp, hat mich wirklich ein ganzes Stück weiter gebracht. Das Script läuft jetzt bei 5 Feldern in nur 108 Sekunden durch, was für meine Zwecke ausreichend wäre. Jetzt muss nur noch geschaut werden, wielange das für alle 50 Felder dauert.

            Dazu eine weitere Frage:
            Ich habe einige Felder in der Datenbank, die nur "ja" oder "nein" als Wert haben. Hier ist es natürlich leicht die beiden Felder miteinander zu vergleichen, nur was mache ich mit Feldern, die Zahlen als Wert haben (zum Beispiel Gewicht)?

            Hat jemand eine Idee, wie man das "automatisieren" kann?
            Das Genie überblickt das Chaos!

            Wer Rechtschreibfehler findet, darf sie behalten!

            Kommentar

            Lädt...
            X