Avatar billede Morten Professor
07. april 2021 - 06:40 Der er 2 kommentarer

Duplicated content "Group by og distinct" Virker ikke på min kode

Hej
Hvordan man får fjernet duplicated content.
For selv om jeg har bruget Group by og distinct vil det stadig ikke virke.
Har kæmpet med det men kan bare ikke få det til at virke.

En stor lang smøre håber i kan overskue det, eller sig endelig til.
Er ikke så god til at få lavet beskrivelser til min kode.
Noget jeg skal have øvet min på
Min kode:
global $wpdb;
$xml = new XMLWriter();

// Used to write to xml file - uncomment the next line to print xml to a file
$xml->openURI('****_nyhedsbrev.xml');

// used for string output from memory
// $xml->openMemory(); // comment this line to print xml to a file

//set the indentation to true
$xml->setIndent(true);

//create the document tag
$xml->startDocument('1.0', 'utf-8');

$xml->startElement("items"); // start Items
// faste værdier
$antal_pr_side = 200; // denne værdi skal ændres
$offset = 0;
$data = array();
$data1 = array();

$run = true;
while ($run) {
    $con = $wpdb->__get('dbh');
    $stmt = $con->prepare("SELECT **_posts.ID, **_posts.post_date, **_posts.guid, **_posts.post_modified, **_posts.post_parent, **_posts.post_title, **_posts.post_type, **_postmeta.post_id, **_postmeta.meta_value, **_postmeta.meta_key
    FROM **_posts INNER JOIN **_postmeta ON **_posts.ID = **_postmeta.post_id WHERE **_posts.post_type in ('product', 'attachment' ) and **_postmeta.meta_key in ('_wp_attached_file', '_stock', '_sku', '_regular_price', '_sale_price', '_thumbnail_id') LIMIT " . $offset . "," . $antal_pr_side." ");
    $stmt->execute();
    $rs = $stmt->get_result();
    $lng = $rs->num_rows;

    $stmt1 = $con->prepare("SELECT **_posts.ID, **_posts.post_type, **_postmeta.post_id, **_postmeta.meta_value, **_postmeta.meta_key
    FROM **_posts INNER JOIN **_postmeta ON **_posts.ID = **_postmeta.post_id WHERE **_posts.post_type in ('attachment' ) and **_postmeta.meta_key in ('_wp_attached_file') LIMIT " . $offset . "," . $antal_pr_side." ");
    $stmt1->execute();
    $rs1 = $stmt1->get_result();
    while ($row = $rs->fetch_array(MYSQLI_ASSOC)) {
        $data[] = $row;

        while ($row1 = $rs1->fetch_array(MYSQLI_ASSOC)) {

            $data1[] = $row1;

            if ($row1['meta_key'] == "_wp_attached_file") {
                global $meta_image_url;
                $meta_image_url = $row1['meta_value'];
            }
        }

        global $meta_regular_price;
        global $meta_sale_price;
        global $meta_sku;
        global $post_title;
        global $post_type;
        global $meta_image_url;
        global $meta_stock;
        global $brand;
        global $post_parent;
        global $guid;
        global $koen;
        if ($row['meta_key'] == "_sku") {
            global $meta_sku;
            $meta_sku = $row['meta_value'];
        }
        $brand_name = get_the_terms($row['ID'], 'product_brand');

        foreach ($brand_name as $item) {
            global $brand;
            $brand = $item->name;

        }
        $koen = get_the_terms($row['ID'], 'product_cat');
        foreach ($koen as $item) {
            global $koenet;
            $koenet = $item->parent;
        }
        global $koen;
        $koen = $koenet;

        $terms = get_the_terms($row['ID'], 'product_cat');

        foreach ($terms as $term) {
            if ($term->parent == 0) {
                global $koen;
                $koen = $term->name;
            }
        }
        $post_title = $row['post_title'];

        $guid = get_permalink($row['ID']);

        if ($row['meta_key'] == "brand") {
            global $product_brand;
            $product_brand = $row['value'];

        }
        $post_modified = $row['post_modified'];

        $post_parent = $row['post_id'];


        if ($row['meta_key'] == "_regular_price") {
            global $meta_regular_price;
            $meta_regular_price = $row['meta_value'];

        }

        if ($row['meta_key'] == "_sale_price") {
            global $meta_sale_price;
            $meta_sale_price = $row['meta_value'];

        }

        if ($row['meta_key'] == "_stock") {
            global $meta_stock;
            $meta_stock = $row['meta_value'];
        }


        $xml->startElement("item"); // start Item

        $xml->writeAttribute('ExternalId', $meta_sku);
        $xml->writeAttribute('Modified', $post_modified);
        $xml->writeAttribute('Name', $post_title);
        $xml->writeAttribute('ImageLink', $meta_image_url);
        $xml->writeAttribute('AdditionalImageLink', $meta_image_url);
        $xml->writeAttribute('Link', $guid);
        $xml->writeAttribute('Gender', $koen);
        $xml->writeAttribute('Brand', $brand);
        $xml->writeAttribute('InStock', $meta_stock);
        $xml->writeAttribute('ItemGroupId', $post_parent);
        $xml->writeAttribute('RegularPrice', $meta_regular_price);
        $xml->writeAttribute('SalePrice', $meta_sale_price);

        $xml->endElement(); //End Item

    }
    if ($lng < $antal_pr_side) {
        $run = false;
    }
    if ($lng == 0) {
        break;
    }
    $offset += $antal_pr_side;
}
$xml->endElement();
// Display thue current buffer
$xml->flush();
Avatar billede olsensweb.dk Ekspert
07. april 2021 - 12:43 #1
>Hvordan man får fjernet duplicated content.
hvor er det du har dublicate content ?? (er det i xml filen eller en fejl du får)


jeg har prøvet at tage et det nederste eks fra https://www.computerworld.dk/eksperten/spm/1036897?k=8377940
om smidt output direkte i en xml fil dvs uden om data arrayet:

<?php
require_once("connection.php"); // $mysqli
// faste værdier
$antal_pr_side = 5; // denne værdi skal ændres
$offset = 0;
$data = array();

$run = true;

$xml = new XMLWriter();

$xml->openURI('nyhedsbrev.xml');

// used for string output from memory
// $xml->openMemory(); // comment this line to print xml to a file


$xml->setIndent(true);


$xml->startDocument('1.0', 'utf-8');

$xml->startElement("items"); // start Items



while ($run) {   
    $sql = "SELECT * FROM tbl_users LIMIT " . $offset . "," . $antal_pr_side;
    $rs = $mysqli->query($sql);
    $lng = $rs->num_rows;
    while ($row = $rs->fetch_array(MYSQLI_ASSOC)) {


$xml->startElement("item");

$xml->startElement("id");
$xml->Text($row['id']);
$xml->endElement();

$xml->startElement("dob");
$xml->Text($row['dob']);
$xml->endElement();

$xml->startElement("firstname");
$xml->Text($row['firstname']);
$xml->endElement();

$xml->startElement("lastname");
$xml->Text($row['lastname']);
$xml->endElement();

$xml->startElement("postnummer");
$xml->Text($row['postnummer']);
$xml->endElement();

$xml->startElement("lande_id");
$xml->Text($row['lande_id']);
$xml->endElement();

$xml->startElement("username");
$xml->Text($row['username']);
$xml->endElement();

$xml->startElement("password");
$xml->Text($row['password']);
$xml->endElement();

$xml->startElement("last_logon");
$xml->Text($row['last_logon']);
$xml->endElement();

$xml->startElement("role_id");
$xml->Text($row['role_id']);
$xml->endElement();



$xml->endElement();



        //$data[] = $row;
    }   
    if ($lng < $antal_pr_side) {
        $run = false;
    }
    if ($lng == 0) {
        break;
    }
    $offset += $antal_pr_side;
}

$xml->endElement();
$xml->flush();
?>



test tabel
--
-- Database: `test`
--

CREATE TABLE `tbl_users` (
  `id` int(11) NOT NULL,
  `dob` date NOT NULL,
  `firstname` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `lastname` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `postnummer` varchar(4) COLLATE utf8_danish_ci NOT NULL,
  `lande_id` int(1) NOT NULL,
  `username` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `password` varchar(255) COLLATE utf8_danish_ci NOT NULL,
  `last_logon` datetime NOT NULL,
  `role_id` int(11) NOT NULL DEFAULT 0
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_danish_ci;

INSERT INTO `tbl_users` (`id`, `dob`, `firstname`, `lastname`, `postnummer`, `lande_id`, `username`, `password`, `last_logon`, `role_id`) VALUES
(1, '2010-03-05', 'rip', 'andemad', '4000', 1, '1', '1234', '0000-00-00 00:00:00', 0),
(3, '2009-12-04', 'rap', 'and', '2500', 1, '3', '1234', '0000-00-00 00:00:00', 0),
(4, '2015-07-03', 'rup', 'and', '8000', 1, '4', '1234', '0000-00-00 00:00:00', 0),
(5, '2012-07-04', 'mickey', 'mouse', '4000', 1, '5', '1234', '0000-00-00 00:00:00', 0),
(7, '2013-07-07', 'bimmer', 'vildmand', '4000', 1, '7', '1234', '0000-00-00 00:00:00', 0),
(8, '2017-12-24', 'jule', 'mand', '2412', 2, '8', '1234', '0000-00-00 00:00:00', 0);


ALTER TABLE `tbl_users`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_username_password` (`username`,`password`),
  ADD KEY `idx_lastname` (`lastname`);


ALTER TABLE `tbl_users`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;
COMMIT;
Avatar billede Morten Professor
07. april 2021 - 13:07 #2
Hej

Det er en masse med samme ExternalId
På grund af noget som er oprettet i databasen.
Det er for at undgå de kommer med når der er dobbelt af den.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester