webForumDet fria alternativet

Hämta innehåll i <img src=""> och flytta till annan tabell

3 svar · 415 visningar · startad av SimOnline

SimOnlineMedlem sedan juli 20031 132 inlägg
#1

Hejsan!

Jag har en radda med databasposter som innehåller en img-tagg samt lite text i en kolumn. Hur gör jag för att söka igenom alla dessa poster, plocka ut det som ligger innan för src=" * " (alltså adressen till bilden), lägga in det i en en kolumn i en annan tabell, på rätt rad? Den nya tabellen har en kolumn vars id-nummer stämmer överens med id-numret på posten jag hämtar ifrån.

Vet inte om det blev luddigt det här, och det kanske borde ligga i SQL-forumet, men jag vet inte om man kan plocka ut src-värdet, enbart med hjälp av SQL?

Fråga om jag har krånglat till det!

Tackar på förhand!

aasahMedlem sedan mars 20034 471 inlägg
#2

Jag vet inte om det finns smidigare sätt, men jag hade nog gjort så här:

// 1)
$sql = "SELECT gemensamtID, imgKol FROM Tabell";
$res = mysql_query($sql) or die();
while ($row = mysql_fetch_array($res)) {
   // 2)
   //Använd preg_match till att plocka ut det du vill ur $row['imgKol'], lagra i $src
   // 3)
   $q = "UPDATE TabellNy SET SourceKol = $src WHERE ID = gemensamtID";
   $resQ = mysql_query($q) or die();
   if (mysql_affected_rows() != 1) 
      //Errorhandling
}
SimOnlineMedlem sedan juli 20031 132 inlägg
#3

aasah skrev:

Jag vet inte om det finns smidigare sätt, men jag hade nog gjort så här:

// 1)
$sql = "SELECT gemensamtID, imgKol FROM Tabell";
$res = mysql_query($sql) or die();
while ($row = mysql_fetch_array($res)) {
   // 2)
   //Använd preg_match till att plocka ut det du vill ur $row['imgKol'], lagra i $src
   // 3)
   $q = "UPDATE TabellNy SET SourceKol = $src WHERE ID = gemensamtID";
   $resQ = mysql_query($q) or die();
   if (mysql_affected_rows() != 1) 
      //Errorhandling
}

Aha, okej, tackar så mycket! Men hur ska jag utforma preg_match-"grejen" om jag sen vill ta bort bilderna från den gamla tabellen? Några bilder ligger också innanför <p align='center'> </p> och då vill jag att hela p-taggen ska försvinna.

aasahMedlem sedan mars 20034 471 inlägg
#4

SimOnline skrev:

Aha, okej, tackar så mycket! Men hur ska jag utforma preg_match-"grejen" om jag sen vill ta bort bilderna från den gamla tabellen? Några bilder ligger också innanför <p align='center'> </p> och då vill jag att hela p-taggen ska försvinna.

Jag har aldrig använt funktionen preg_match för egen del, så jag rekommenderar att du läser själv hur den fungerar också, men ung så här:

// 1) 
$sql = "SELECT gemensamtID, imgKol FROM Tabell"; 
$res = mysql_query($sql) or die(); 
while ($row = mysql_fetch_array($res)) { 
   // 2) 
   $src = array();
   $nr = preg_matches(/src="(^"*)"/i, $row['imgKol'], $src);  
   //" <-- knas för att återställa färgerna i inlägget, den här raden gör inget annat
   //*** se nedan
   if ($nr == 1) {
      // 3) 
      $q = "UPDATE TabellNy SET SourceKol = ".$src[1]." WHERE ID = gemensamtID"; 
      $resQ = mysql_query($q) or die(); 
      if (mysql_affected_rows() != 1) 
         //Errorhandling 
      else {
         //Antingen: Om du vill ta bort värdet i DEN KOLUMNEN
         $del = "UPDATE Tabell SET imgKol = <vad du nu vill ändra till> 
                   WHERE gemensamtID = ".$row['gemensamtID'];
         //ELLER: om du vill ta bort HELA RADEN OCH gemensamtID identifierar EN rad i Tabell också.
         $del = "DELETE FROM Tabell WHERE gemensamtID = ".$row['gemensamtID'];
         $resD = mysql_query($del) or die(); 
      }
   }
   else //Errorhandling - ingen src i imgKol
}

OBS! Att $del bara sätts en gång, antingen på ena sätter eller andra beroende på hur du menar.

Och eftersom det har sina sidor att ta bort saker ur en databas skulle jag börja med att lägga in:

print_r($src);
$nr = 0;

vid //*** och avkommentera den yttersta felhanteringen, innan jag utförde förflyttningen. På så sätt ser du att den hittar och använder rätt sträng innan du börjar förändra innehållet i databasen.

133 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
130 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)