SELECT alla poster innehållande Facebook adress

PHPportalen Forum Index » Databaser
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
snylften



Medlem i: 3932 dagar

Status: Offline



#741156
Inlägg Skrivet: 2016-10-28 11:17      Ämne: SELECT alla poster innehållande Facebook adress Citera

Jag behöver leta upp alla poster som hae en facebook adress i sig. Varje fält består kolumnerna id och text
Facebookadressen kan förekomma i textkolumnen, kolumnen innehåller också en hel del html kod.
För att få reda på fila poster som innehåller facebook adress skriver jag den här sql raden
KOD:
1:
SELECT * FROM `profilsite` WHERE `tekst` LIKE '%facebook.com%'


Det jag vet är att där facebookadress förekommer ser det ut på följade sätt.
KOD:
1:
<a href="https://www.facebook.com/Bo-Jimmy-Bilservise-AB-480324642066698/" target="_blank" class="btn btn-primary"><i class="fa fa-facebook"></i> facebook</a>

Jag vill få ut allt detta i mitt resultat tillsamman med ID´t från den andra kolumnen.

Då är frågan hur får jag ut hela den här <a href taggen med innehållande facebook adress när det är olika facebook adresser för varje post?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4139 dagar
Från: Tavesta
Status: Offline



#741160
Inlägg Skrivet: 2016-10-29 01:06      Ämne: Citera

Jag känner inte till hur man löser detta med sql. Men om det kan vara ett alternativ att ladda hem hela fältet "tekst", och sedan med hjälp av t.ex PHP, DOM och getElementsByTagName fiska fram alla <a> element och testa om deras href-attribut matchar rätt domännamn?
DOMDocument::saveHTML() kan användas även för att få ut html-koden för ett enstaka element.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Koenigsegg



Medlem i: 3200 dagar

Status: Offline



#741162
Inlägg Skrivet: 2016-10-30 14:26      Ämne: Citera

Jag förstår inte vad som ska göras. "facebook.com" finns väl i alla poster med länkar i sig? Och i så fall så hämtar väl databas-frågan dem?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
snylften



Medlem i: 3932 dagar

Status: Offline



#741163
Inlägg Skrivet: 2016-10-31 08:09      Ämne: Citera

Slutgiltigt så vill jag ha hittat alla Facebook adresser i ett stort textfält i varje post, sedan lägga in adressen i en annan tabell och slutligen radera alla facebookadresser i ursprungliga textfältet. Och när jag raderar adressen så vill jag radera hela A href taggen så jag inte lämnar efter mig något spår av att det varit någon länk.

Jag har klarat lite i helgen och kommit en bit på vägen. Jag har nu lyckats att få ut hela facebookadressen och skapat en update query för att lägga in facebookadressen i den andra tabellen.

KOD:
1:
$query = " SELECT kundenr, tekst FROM profilsite WHERE tekst LIKE '%facebook.com%' "; // lefar upp alla poster där det finns en facebookadress
2:
if ($stmtSelsect = mysqli_prepare($connection, $query)) {
3:
   mysqli_stmt_execute($stmtSelsect); /* execute query */
4:
   mysqli_stmt_bind_result($stmtSelsect, $reference, $tekst );  /* bind result variables */
5:
   while ( mysqli_stmt_fetch($stmtSelsect) ){
6:
 
7:
      $dom = new DOMDocument;
8:
      $dom->loadHTML($tekst);
9:
      $xpath = new DOMXPath($dom);
10:
      $nodes = $xpath->query('//a/@href');
11:
      foreach($nodes as $href) {
12:
          //echo $reference." ".$href->nodeValue; // echo current attribute value
13:
          //$href->nodeValue = 'new value';  // set new attribute value
14:
          //$href->parentNode->removeAttribute('href');  // remove attribute
15:
          $haystack = $href->nodeValue;
16:
          $needle = "facebook";
17:
          if (strpos($haystack,$needle) !== false) {
18:
             //echo $reference." ".$haystack;
19:
             echo "UPDATE `tabell` SET `facebook_link` = '".$haystack."' WHERE `customers`.`reference` = ".$reference.";<br>";
20:
         }
21:
      }
22:
 
23:
 
24:
   } // end while
25:
   mysqli_stmt_close($stmtSelsect); /* close statement */
26:
} else {
27:
  //echo ("<p>Fel i SQL fråga 2</p>");
28:
  exit;
29:
} //end if query2 (create a prepared statement)
30:
 


Nu återstår bara att radera hela Facebook länken från ursprungliga fältet i databasen. Jag antar att det också går att göra med php på något sätt?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Koenigsegg



Medlem i: 3200 dagar

Status: Offline



#741164
Inlägg Skrivet: 2016-10-31 15:52      Ämne: Citera

snylften skrev:
Slutgiltigt så vill jag ha hittat alla Facebook adresser i ett stort textfält i varje post, sedan lägga in adressen i en annan tabell och slutligen radera alla facebookadresser i ursprungliga textfältet. Och när jag raderar adressen så vill jag radera hela A href taggen så jag inte lämnar efter mig något spår av att det varit någon länk.


Nåt sånt här?
KOD:
1:
trim(parse_url('https://www.facebook.com/Bo-Jimmy-Bilservise-AB-480324642066698/')['path'], '/')

För att plocka ut den unika delen av fb-länken, alltså.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » Databaser
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic