Avatar billede martin_shearer Nybegynder
12. marts 2014 - 13:15 Der er 11 kommentarer

hvordan undgåes dobbelt post ?

Hej.
jeg har nedenstående kode. hvordan kan jeg gøre, så fx pubDate feltet tjekker at denne date ik allerede findes igen, sådan at jeg ikke få samme 10 post, hver gang scriptet køres ?

<?php

require_once("connect.php");
$feeds = array('http://112-aarhus.dk/feeds/news2.php' );
foreach( $feeds as $feed ) {
    $xml = simplexml_load_file($feed);

    mysql_set_charset('utf8');
   
    foreach($xml->channel->item as $item)
    {
   
    $date_format = "j-n-Y"; // 7-7-2008
    echo date($date_format,strtotime($item->pubDate)); 
            echo ' <a href="'.$item->link.'" target="_blank">'.$item->title.'</a>';
            echo ' <div>' . $item->description . '</div>';
           
   
    mysql_query("INSERT INTO rss_112 (id, title, description, comments, pubdate, image, link, datotid)
    VALUES (
        '',
        '".mysql_real_escape_string($item->title)."',
        '".mysql_real_escape_string($item->description=htmlspecialchars(trim($item->description)))."',
        '".mysql_real_escape_string($item->comments)."',
        '".mysql_real_escape_string($item->pubDate)."',   
        '".mysql_real_escape_string($item->image)."',   
        '".mysql_real_escape_string($item->link)."',
        '".mysql_real_escape_string($item->NOW())."'
       
       
        )");     
    }
}
?>
Avatar billede Slater Ekspert
12. marts 2014 - 13:32 #1
Du kunne evt. bare sætte en UNIQUE nøgle på feltet i databasen, og så sige INSERT IGNORE INTO i stedet for bare INSERT INTO.

Men er du sikker på, at pubDate aldrig vil være den samme på to forskellige poster?
Avatar billede martin_shearer Nybegynder
12. marts 2014 - 13:36 #2
pubdate er noget ala

Tue, 11 Mar 2014 20:32:19 +0000

det er vel ik stor sandsynlighed for at 2 post, rammer det samme. med samme sekund osv ?

hvordan kan det ellers laves ?
får også en fejl ved denne linie
'".mysql_real_escape_string($item->NOW())."'

tror ik den NOW() function virker. har ik lige så meget tjek på det,
Avatar billede Slater Ekspert
12. marts 2014 - 13:54 #3
Nej, der er ikke nogen funktioner i XML-data. Du prøver sandsynligvis at køre den MySQL-funktion der hedder NOW() - og der skal du bare give MySQL den streng.

Altså i stedet for
'".mysql_real_escape_string($item->NOW())."'

prøv
'NOW()'
Avatar billede arne_v Ekspert
12. marts 2014 - 14:02 #4
NOW() uden ''

:-)
Avatar billede Slater Ekspert
12. marts 2014 - 14:19 #5
Ja for satan. Jeg læste det som om hver linje var en afsluttet PHP-streng, men det er jo omvendt - hver linje afslutter strengen for at køre en funktion. Du har ret, Arne.

PHP skal opfatte funktionen NOW() som en streng, men MySQL skal ikke.
Avatar billede martin_shearer Nybegynder
12. marts 2014 - 14:34 #6
tak tak. begge to. kom til at tænke på. skal det være noget i slutningen af scriptet for at luk mysql ?
Avatar billede Slater Ekspert
12. marts 2014 - 17:43 #7
Det er god praksis at lukke alt man bruger, men det gør sådan set ikke noget. PHP er klog nok til at lukke alle aktive forbindelser i slutningen af et script.
Avatar billede martin_shearer Nybegynder
22. marts 2014 - 16:13 #8
smid lige et svar ;)
Avatar billede Slater Ekspert
22. marts 2014 - 20:21 #9
.
Avatar billede martin_shearer Nybegynder
23. marts 2014 - 10:48 #10
jeg har lige et enkelt problem mere. kan en af jer måske hjælpe her ?

jeg bruger denne kode
    mysql_set_charset('utf8');
   
    foreach($xml->channel->item as $item)
    {
   
    mysql_query("INSERT INTO rss (id, title, description, comments, pubdate, image, link, datotid)
    VALUES (
        '',
        '".mysql_real_escape_string($item->title)."',
        '".mysql_real_escape_string($item->description=htmlspecialchars(trim($item->description)))."',
        '".mysql_real_escape_string($item->comments)."',
        '".mysql_real_escape_string($item->pubDate)."',   
        '".mysql_real_escape_string($item->image)."',   
        '".mysql_real_escape_string($item->link)."',
        NOW()

hvordan kan det være min description. ikke sortere alle html tegn fra, og bare henter rent tekst ?

jeg får ting som dette:
imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://1.bp.blogspot.com/-TQcC1ibRvXI/UytHNrgnI4I/AAAAAAAABxA/

altså i stedet for &quot; burde den vil gemme det som " i stedet for ?
er det ikke det, som dette betyder ? description=htmlspecialchars
Avatar billede Slater Ekspert
23. marts 2014 - 12:08 #11
Jeg har svaret i det nye emne, du har lavet om det. Har først set denne efter.
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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