23. februar 2002 - 17:37Der er
53 kommentarer og 1 løsning
Unlink funktion
Hej
Jeg leder efter en videreudbygning af nedenstående funktion, som indtil nu virker fint: Sletning af artikler, som er ældre end nr 80 artikel.
Det som funktionen skal kunne, udover det som den allerede kan, er at den skal slette de tilhørende billeder til de artikler, som er for gamle. Den skal lede efter ethvert billede i tabellen 'artikler’ og kolonnen 'tekst' og slette dem.
Så der er givetvis en UNLINK funktion som man skal have fat i.
Funktionen ser indtil nu således ud:
$result = mysql_query("SELECT id FROM artikler ORDER BY id DESC LIMIT 80,100"); while($row = mysql_fetch_array($result)) { $sletid = $row[id]; mysql_query("delete from artikler where id='$sletid'"); }
Øh... det ændrer da intet? Du vil gerne slette alle artikler med ID over 80 og under 100, ikke? mysql_query("DELETE FROM artikler WHERE id > 80 AND id < 100"); Det er alt du behøver.
apropos optimering af koden til at slette de artikler, som ikke hører til blandt de 80 med lavest id:
$result = mysql_query("SELECT id FROM artikler ORDER BY id DESC LIMIT 81,1"); $startid = mysql_result($result,0) mysql_query("delete from artikler where id > $startid");
<?php $tekst = 'hej med dig her er et billede <img src="test/test.img"> det er ikke det eneste, for her er et mere: <img src="nyt/billede.fil"> og så det sidste <img src="sidste/billede.bil"> det var det...'; $arr1 = explode('<img src="', $tekst); echo "<p>"; for ($i=1; $i<count($arr1); $i++) { $string = ereg_replace("\">[a-zA-ZæøåÆØÅ0-9!@#$%^&*()?<>,.;: ]*", "", $arr1[$i]); echo $string."<br>"; //@unlink($string); //måske skal du kringle det lidt mht. stien... } ?>
Jeg har aldrig fundet ud af hvordan man matcher alle tegn... derfor må du selv addere flere tegn til hvis du benytter andet end [a-zA-ZæøåÆØÅ0-9!@#$%^&*()?<>,.;: ]
Ja tak! Og det ville være lækkert at vide hvordan jeg kobler det til tabellen artikler og kolonnen tekst, jf den problemstilling jeg har snakket om ovenfor :-)
Jeg synes det er fair nok at stille flere spørgsmål end man besvarer - der vil altid være nogen som ved mere end andre - selvfølgelig til en vis grænse.
Jeg synes derimod ikke det er i orden med alle de bestillingsopgaver der kommer, hvor folk vil have kodet hele websites, ordresystemer eller lignende... - men det vil der selvfølgelig altid være, sålænge nogen indlader sig på arbejdet...
sux: Du skal passe på når du på den måde tager lidt fra mange forskellige løsninger - så er det ikke sikkert at du får det resultat du regner med - jeg kan ikke umiddelbart gennemskue om din kode gør det rigtige længere, men jeg kunne da genkende "LIMIT 81,1", som vist ikke giver meget mening i den nye kontekst...
sux: jeg har på intet tidspunkt antydet at du bryder reglerne, men jeg forsøger at få dig til at forstå at man ikke udelukkende kan tage - man må også give. Sådan er det jo også til jul ikk'...
Hvad hedder den række som teksten står i? - tekst?
Det eneste hvor jeg synes du ligger på grænsen (og ja, det er subjektivt) er at du poster opgaver, hvor du egentlig mest er interesseret i bare at få serveret en løsning i stedet for at finde ud af hvordan problemet løses og så selv bikse med det resten af vejen! Men det hænger så også sammen med at jeg hellere vil lære en metode, som jeg kan generalisere end jeg vil have en løsning, som jeg måske ikke helt forstår - at der så er mange ting jeg ikke kan lave endnu er bare ærgeligt - det kommer nok!
Velbekomme... her er den forbedrede der accepterer _alle_ tegn...
<?php $tekst = 'hej med dig her er et billede <img src="test/test.img"> det er ikke det eneste, for her er et mere: <img src="nyt/billede.fil"> og så det sidste <img src="sidste/billede.bil"> det var det...'; $arr1 = explode('<img src="', $tekst); echo "$tekst"; echo "<p>"; for ($i=1; $i<count($arr1); $i++) { $string = ereg_replace("\">.*", "", $arr1[$i]); echo $string."<br>"; //@unlink($string); //måske skal du kringle det lidt mht. stien... } ?>
<?php $tekst = 'hej med dig her er et billede <img src="test/test.img"> det er ikke det eneste, for her er et mere: <img src="nyt/billede.fil"> og så det sidste <img src="sidste/billede.bil"> det var det...'; preg_match_all('/<img.*?src=\"(.*?)\".*?>/', $tekst, $allimages); foreach ($allimages[1] as $images) { unlink $images; } ?>
NB: Har kun lige testet det på den streng repsac bruger - det ser ud til at virke fint, men du kan evt. teste det på nogle flere strenge og bare skrive indholdet ud med echo!
bemærk i'et i slutningen - så er sammenligningen ikke case-sensitive!
--tipsen--
Synes godt om
Ny brugerNybegynder
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.