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





Premium
Vigtig opdatering på vej til Windows: Får omsider din HDR-skærm til at funkle
Microsofts Windows 10-styresystem vil i fremtiden kunne arbejde bedre med de flotte farver og den høje kontrast, som HDR-skærme tilbyder.
Computerworld
Nye informationer om det største iPhone-hack nogensinde ser dagens lys: 128 millioner brugere blev ramt
Hidtil hemmeligholdte detaljer om verdens største iPhone-hack er kommet frem under retssagen mellem Apple og Epic Games. 128 millioner brugere blev ramt, og mere end 4.000 apps blev inficeret. Se detaljerne her.
CIO
Har du rost din mellemleder i dag? Snart er de uddøde - og det er et tab
Computerworld mener: Mellemledere lever livet farligt: Topledelsen får konstant ideer med skiftende hold i virkeligheden, og moden går mod flade agile organisationer. Men mellemlederen er en overset hverdagens helt med et kæmpe ansvar. Her er min hyldest til den ofte latterliggjorte mellemleder.
Job & Karriere
Eva Berneke stopper som topchef i KMD og flytter til Paris: Her er KMD's nye topchef
Efter syv år på posten som topchef for KMD forlader Eva Berneke selskabet. Nu flytter hun med familien til Paris, hvor hun vil fortsætte sit bestyrelsesarbejde. KMD har allerede afløser på plads.
White paper
Sådan sikrer du hovednøglen til jeres data
80% af alle ransomwareangreb skyldes misbrug af privilegerede brugeradgange. Ved at begrænse og overvåge adfærden på de privilegerede konti samt kontrollere mængden af tildelte rettigheder kan du mindske skaden ved hackerangreb mod din virksomhed og i visse tilfælde helt blokere dem. Internt kan du bruge kontrollen med brugeradgange til at dokumentere, hvem der bevæger sig i hvilke systemer, og hvad der foregår derinde. Privilegeret brugerstyring har de seneste to år stået øverst på Gartners Top10-liste over it-sikkerhedsprojekter, der bør få højeste prioritet. Alligevel er teknologien kun så småt ved at finde fodfæste i Danmark. Det kan viden om åbenlyse gevinster, relativ kort implementeringstid og yderst rimeligt budget være med til at ændre på. I dette whitepaper folder vi temaet privilegeret brugerstyring ud og placerer teknologien i det væld af prioriteringer, som CISO’en hver dag skal foretage.