Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Bilder werden nicht zugeordnet

    webmaster-uk

    • Mitglied
    • Beiträge: 238
    Bilder werden nicht zugeordnet
    am: 17. Januar 2011, 18:53:17
    Hallo,

    es geht um folgendes und zwar hab ich alle Bilder in den entsprechenden Ornder auf dem Server geladen und folgendes Script aufrufen lassen, dass mir vor einiger Zeit ein nettes Forenmitglied von hier geschickt hatte:

    Code: PHP  [Auswählen]
    <?php
    $mmmysqlhost="www.....";
    $mmmysqluser="Benutzer";
    $mmmysqlpwd="Passwort";
    $mmmysqldb="DB-Name";
    $connection=mysql_connect($mmmysqlhost, $mmmysqluser, $mmmysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
    mysql_select_db($mmmysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

    $sql = "SELECT products_id, products_model FROM products WHERE 1";
    $query = mysql_query($sql) or die("Anfrage nicht erfolgreich");
    while ($result = mysql_fetch_array($query)){
            if ($result['products_model'] != "") {
                $image = $result['products_model'].".jpg";
                echo  "id".$result['products_id']." Art.Nr. ".$result['products_model']." -> ".$image."<br />";
                mysql_query("UPDATE products SET products_image='$image' WHERE products_id='$result[products_id]'");
            } else {
                echo  "id".$result['products_id']." -> kein Bild da keine Artikel Nr. vorhanden <br />";
            }
    }
    ?>
    Dies hat auch gut funktioniert und anschließend habe ich das Imageprozessing Variante 3 darüber laufen lassen. Soweit wurden auf den ersten Blick auch alle Bilder verarbeitet nur bei den Artikeln, bei denen mehrere Bilder eingefügt werden sollen sind überhaupt keine Bilder dabei.
    Die Bilder wurden wie im Handbuch beschrieben wie folgt gespeichert. Z.B. bei Artikel 1234 sollen 2 Bilder hochgeladen werden und dann 1. Bild 1234_0.jpg und zweites Bild 1234_1.jpg
    - funktioniert aber leider nicht.

    Woran kann das liegen?
    hab es jetzt schon mehrfach ausprobiert



    Linkback: https://www.modified-shop.org/forum/index.php?topic=10727.0

    franky_n

    • Experte
    • Beiträge: 4.950
    Bilder werden nicht zugeordnet
    Antwort #1 am: 17. Januar 2011, 18:56:35
    Hallo webmaster-uk,

    das liegt daran, dass die Zusatzbilder in einer anderen Tabelle gespeichert werden.
    Nicht in "products" aber in "products_images" und das ist in dem Skript nicht berücksichtigt...

    Viele Grüße

    Franky

    webmaster-uk

    • Mitglied
    • Beiträge: 238
    Bilder werden nicht zugeordnet
    Antwort #2 am: 17. Januar 2011, 19:21:52
    ok und wie muss ich das in das Script einfügen, damit auch das mit übertragen wird?
    hab davon keine Ahnung was ich wo einfügen muss... wäre daher echt lieb, wenn du mir da helfen könntest.

    franky_n

    • Experte
    • Beiträge: 4.950
    Bilder werden nicht zugeordnet
    Antwort #3 am: 17. Januar 2011, 22:40:00
    Hallo webmaster-uk,

    ehrlich gesagt habe ich die logik des Skripts noch gar nicht richtig verstanden.
    Warum sollte das Skript deine Bilder in Artikelnummern umbenennen bzw. in die DB eintragen?

    Eigentlich wird ja die ID genommen...

    In welchem Format hast Du denn überhaupt die Bilder?
    Als Artikelnummer mit dahinter jeweils ein _1 _2 etc.? Ich vermute es! ;)

    Viele Grüße

    Franky

    webmaster-uk

    • Mitglied
    • Beiträge: 238
    Bilder werden nicht zugeordnet
    Antwort #4 am: 18. Januar 2011, 09:25:12
    Also ich wollte die Bilder automatisch zuordnen lassen den jeweiligen Artikeln und da hatte mir ein Forenmitglied von hier das oben genannte Skript geschickt das die jeweiligen Bilder automatisch den richtigen Artikeln zuordnen soll.

    Die Bilder sind alle im .jpg Format auf dem Server.
    Richtig... die Bilder sind nach Artikelnummer benannt. z.B. 1234.jpg oder bei zwei Bildern je Artikel 12345_0.jpg und 12345_1.jpg

    Diese Bilder sollen noch automatisch den einzelnen Artikeln zugeordnet werden und das sollte mit dem oben genannten Skript auch so gehen... tut es aber leider nur bei den Artikeln die ein Bild haben und nicht mehrere.

    franky_n

    • Experte
    • Beiträge: 4.950
    Bilder werden nicht zugeordnet
    Antwort #5 am: 18. Januar 2011, 10:54:04
    Hallo webmaster-uk,

    eigentlich falsch herum programmiert denn er muß erstmal schauen was Du an Dateien hast und diese dann in die DB einfügen und nicht umgekehrt...

    Hier mal ein Versuch.
    Bitte vorher an einem Testshop überprüfen!
    Die Datei sollte in dem Ordner liegen in dem die Artikelfotos drin sind.

    Code: PHP  [Auswählen]
    <?php

    $mysqlhost="www.....";
    $mysqluser="Benutzer";
    $mysqlpwd="Passwort";
    $mysqldb="DB-Name";
    $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
    mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

    $dir = ".";
    if (is_dir($dir)) {
      if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
          if ($file != "." && $file!=".." & $file !="index.html") {
            $filename = strstr($file, '_', true); // Ab PHP 5.3.0
            $sql = "SELECT products_id FROM products WHERE products_model='".$filename."'";
            $query = mysql_query($sql) or die("Anfrage nicht erfolgreich");
            while ($result = mysql_fetch_array($query)){

              if ((substr_count($file,"_") != 0)) {
                // More pictures
                if ((substr_count($file,"_0") == 1)) {
                  // Main picture
                  mysql_query("UPDATE products SET products_image='".$file."' WHERE products_id='".$result[products_id]."'");
                  echo  "id".$result['products_id']." Art.Nr. ".$result['products_model']." -> ".$file."<br />";
                } else {
                  // Other pictures
                  $file_prefix = str_replace("_", "", strstr($file, '_'));
                  $file_prefix = strstr($file_prefix, '.', true); // Ab PHP 5.3.0
                  mysql_query("UPDATE products_images SET image_name='".$file."' WHERE products_id='".$result[products_id]."' AND image_nr='".$file_prefix."'");
                }
              } else {
                // Main picture
                mysql_query("UPDATE products SET products_image='".$file."' WHERE products_id='".$result[products_id]."'");
                echo  "id".$result['products_id']." Art.Nr. ".$result['products_model']." -> ".$file."<br />";
              }
            }
          }
        }
        closedir($dh);
      }
    }
    ?>
    Man könnte das ganze auch noch so erweitern das er nicht als Dateiname die Artikelnummer nimmt sondern (wie eigentlich normal) die ID des Artikels...

    Viele Grüße

    Franky

    webmaster-uk

    • Mitglied
    • Beiträge: 238
    Bilder werden nicht zugeordnet
    Antwort #6 am: 18. Januar 2011, 13:05:47
    bekomme folgende Fehlermeldung wenn ich das Script aufrufen will

    Warning: Wrong parameter count for strstr() in /home/httpd/html/www/shop/images/product_images/original_images/Bilderscript.php on line 15
    Woran kann der Fehler liegen?

    franky_n

    • Experte
    • Beiträge: 4.950
    Bilder werden nicht zugeordnet
    Antwort #7 am: 18. Januar 2011, 14:25:18
    Hi webmaster-uk,

    shit dann hast Du keine 5.3.0 Version oder höher vom PHP...

    Dann muss das noch anders...

    Code: PHP  [Auswählen]
    $filename = strstr($file, '_', true); // Ab PHP 5.3.0
    muß dann das sein:

    Code: PHP  [Auswählen]
    $filename = str_replace(strstr($file, '_'), "", $file);
    und:

    Code: PHP  [Auswählen]
    $file_prefix = strstr($file_prefix, '.', true); // Ab PHP 5.3.0
    dann das:

    Code: PHP  [Auswählen]
    $file_prefix = str_replace(strstr($file_prefix, '.'),"",$file_prefix);
    Viele Grüße

    Franky

    webmaster-uk

    • Mitglied
    • Beiträge: 238
    Bilder werden nicht zugeordnet
    Antwort #8 am: 18. Januar 2011, 14:40:14
    hab es ausgetauscht und bekomme jetzt folgende Fehlermeldung:
    Zitat
    Fatal error: Call to undefined function strreplace() in /home/httpd/html/www/shop/images/product_images/original_images/Bilderscript.php on line 15
    PHP-Version ist Version ist 5.0.90

    franky_n

    • Experte
    • Beiträge: 4.950
    Bilder werden nicht zugeordnet
    Antwort #9 am: 18. Januar 2011, 14:44:02
    Hallo webmaster-uk,

    ein Schreibfehler.

    Mach mal:
    str_replace draus... hab's oben korrigiert. :)

    Viele Grüße

    Franky

    webmaster-uk

    • Mitglied
    • Beiträge: 238
    Bilder werden nicht zugeordnet
    Antwort #10 am: 18. Januar 2011, 15:03:23
    ok, der fehler ist weg aber jetzt bekomme ich folgende Fehlermeldung. :-(
    Zitat
    Warning: Wrong parameter count for strstr() in /home/httpd/html/www/shop/images/product_images/original_images/Bilderscript.php on line 29
    id5565 Art.Nr. -> 1070_0.jpg
    Denke das liegt aber an den Bildern oder an dem abspeichern, oder? wie beseitige ich den Fehler? ist ja nicht bei allen Bilder sondern nur bei denen die hinter der Atikel Nr. das _0 stehen haben.

    franky_n

    • Experte
    • Beiträge: 4.950
    Bilder werden nicht zugeordnet
    Antwort #11 am: 18. Januar 2011, 15:14:38
    Hallo webmaster-uk,

    ach menno!
    So muss es in Z.29 heißen:

    Code: PHP  [Auswählen]
    $file_prefix = str_replace(strstr($file_prefix, '.'),"",$file_prefix);
    Das kommt davon wenn man viele Sachen gleichzeitig macht! ;)

    Hab es oben korrigiert!

    Viele Grüße

    Franky

    webmaster-uk

    • Mitglied
    • Beiträge: 238
    Bilder werden nicht zugeordnet
    Antwort #12 am: 18. Januar 2011, 20:51:40
    so, hab es jetzt gemacht und das erste Bild greift er, also z.B. 1234_0
    Ist bei einem Artikel aber noch ein zweites bilder, welches auf dem Server mit 1234_1 abgespeichert ist, wird dies nicht im Shop angezeigt.

    Woran liegt das nun und wie kann man das beheben?

    Aber schonmal vielen Dank für die Hilfe bis jetzt. :-)

    franky_n

    • Experte
    • Beiträge: 4.950
    Bilder werden nicht zugeordnet
    Antwort #13 am: 19. Januar 2011, 07:42:35
    Hallo webmaster-uk,

    ok also dann hier noch mal die Version wo auch abgeprüft wird ob in der DB bereits die Zusatzbilder vorhanden sind oder nicht.
    Falls nicht werden diese eingefügt.

    Code: PHP  [Auswählen]
    <?php

    $mysqlhost="www.....";
    $mysqluser="Benutzer";
    $mysqlpwd="Passwort";
    $mysqldb="DB-Name";
    $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");
    mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

    $dir = ".";
    if (is_dir($dir)) {
      if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
          if ($file != "." && $file!=".." & $file !="index.html") {
            $filename = str_replace(strstr($file, '_'), "", $file);
    //        $filename = strstr($file, '_', true); // Ab PHP 5.3.0
            $sql = "SELECT products_id FROM products WHERE products_model='".$filename."'";
            $query = mysql_query($sql) or die("Anfrage nicht erfolgreich");
            while ($result = mysql_fetch_array($query)){

              if ((substr_count($file,"_") != 0)) {
                // More pictures
                if ((substr_count($file,"_0") == 1)) {
                  // Main picture
                  mysql_query("UPDATE products SET products_image='".$file."' WHERE products_id='".$result[products_id]."'");
                  echo "UPDATE id".$result['products_id']." Art.Nr. ".$result['products_model']." -> ".$file."<br />";
                } else {
                  // Other pictures
                  $file_prefix = str_replace("_", "", strstr($file, '_'));
    //              $file_prefix = strstr($file_prefix, '.', true); // Ab PHP 5.3.0
                  $file_prefix = str_replace(strstr($file_prefix, '.'),"",$file_prefix);
                  $products_images_query = mysql_query("SELECT * FROM products_images WHERE products_id='".$result[products_id]."' AND image_nr='".$file_prefix."'");
                  $products_images_num_rows = mysql_num_rows($products_images_query);
                  if ($products_images_num_rows == 0) {
                    // No image - insert
                    mysql_query("INSERT INTO products_images SET image_name='".$file."', products_id='".$result['products_id']."' , image_nr='".$file_prefix."'");
                    echo "UPDATE id".$result['products_id']." Art.Nr. ".$result['products_model']." -> ".$file."<br />";
                  } else {
                    // image available - update
                    mysql_query("UPDATE products_images SET image_name='".$file."' WHERE products_id='".$result['products_id']."' AND image_nr='".$file_prefix."'");
                    echo "INSERT id".$result['products_id']." Art.Nr. ".$result['products_model']." -> ".$file."<br />";
                  }
                }
              } else {
                // Main picture
                mysql_query("UPDATE products SET products_image='".$file."' WHERE products_id='".$result[products_id]."'");
                echo "UPDATE id".$result['products_id']." Art.Nr. ".$result['products_model']." -> ".$file."<br />";
              }
            }
          }
        }
        closedir($dh);
      }
    }
    ?>
    Bitte vorher DB Backup da ungetestet! Am Besten an einem Testsystem probieren! :)

    Viele Grüße

    Franky

    webmaster-uk

    • Mitglied
    • Beiträge: 238
    Bilder werden nicht zugeordnet
    Antwort #14 am: 19. Januar 2011, 13:26:03
    Wunderbar, vielen Dank für die Hilfe!

    Trade Republic - Provisionsfrei Aktien handeln