Het is nu 12-11-2019, 10:04 AM Welkom, gast! (AanmeldenRegistreren)


Reactie plaatsen 
 
Waardering:
  • 0 stem(men) - gemiddelde waardering is 0
  • 1
  • 2
  • 3
  • 4
  • 5
Query
08-29-2013, 08:36 PM
Bericht: #1
Query
Beste myBBforum,

ik wil iets doen met een query in de DB maar weet niet goed hoe ik dit moet aanpakken.
Op het forum staan diverse tags bv [brake]eennaamhier[/brake]

Nu is mijn vraag..Kan ik dmv een query in phpMyadmin deze tags en wat ertussen staat verwijderen? Handmatig kan ook maar dan ben ik heel erg lang bezig. Meer dan 50.000 topics nalopenWink

deze query heb ik geprobeerd:

update `mybbdatabase`.`mybb_threads` SET `message` = REPLACE(`message`, '[brake]', '')

Maar krijg daarmee een error..Ik zou daarmee alle [brake] moeten kunnen verwijderen.. Het liefste beide tags en de variabele naam ertussen in 1 keer..

Wie maakt me blij?
Alle berichten van deze gebruiker zoeken
Reageren op dit bericht
08-29-2013, 11:01 PM
Bericht: #2
RE: Query
Je kan regexen uitvoeren via een query, maar vaak is het makkelijker om gewoon in php een kleine functie te schrijven en dan de pagina uit te voeren.

Hieronder heb je een voorbeeld van zo'n scripje. Een pagina aanmaken en de database gegevens wijzigen. Ik heb het kort even uitgetest, maar maak sowieso even een backup voor je het uitvoert, dan ben je altijd zeker.

Indien je iets anders gebruikt als [brake], moet je dit 3x aanpassen in het script.

PHP-code:
<?php
$dbhost 
'localhost';              //DB Hostname
$dbuser '';            //DB User
$dbpass '';            //DB Password
$dbname '';                //Your database name
ini_set('zend.ze1_compatibility_mode''0');

//Connect to Database
$conn mysqli_connect($dbhost$dbuser$dbpass) or die ('Error connecting to mysql');
mysqli_select_db($conn$dbname);

$result mysqli_query($conn"SELECT pid, message FROM mybb_posts WHERE 1 AND MATCH(message) AGAINST('[brake]' IN BOOLEAN MODE)");
while (
$row=mysqli_fetch_array($resultMYSQL_ASSOC)){
  
$message preg_replace("/\[brake\].*\[\/brake\]/"""$row['message']);
  
$pid $row['pid'];
  
$message mysqli_real_escape_string($conn$message);
  
mysqli_query($conn"UPDATE mybb_posts SET message = '$message' where pid=$pid");
}
?>

Mvg / kind regards
At Volg MyBB NL op Twitter
[Afbeelding: vote-for-mybb.gif]
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken
Reageren op dit bericht
08-30-2013, 08:57 PM
Bericht: #3
RE: Query
Ik krijg nu een error.
Fatal error: Call to undefined function mysqli_connect() in /home/*****/public_html/testing/nzb.php on line 9

***** is zelf veranderd.
Alle berichten van deze gebruiker zoeken
Reageren op dit bericht
08-30-2013, 09:28 PM
Bericht: #4
RE: Query
Je kan onderstaande code eens proberen, die maakt gebruik van een oudere functie.
Of wat heb je bij inc/config.php bij $config['database']['type'] staan?

PHP-code:
<?php
$dbhost 
'localhost';              //DB Hostname
$dbuser '';            //DB User
$dbpass '';            //DB Password
$dbname '';                //Your database name

//Connect to Database
$conn mysql_connect($dbhost$dbuser$dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);

$result mysql_query("SELECT pid, message FROM mybb_posts WHERE 1 AND MATCH(message) AGAINST('[brake]' IN BOOLEAN MODE)");
while (
$row=mysql_fetch_array($resultMYSQL_ASSOC)){
  
$message preg_replace("/\[brake\].*\[\/brake\]/"""$row['message']);
  
$pid $row['pid'];
  
mysql_query("UPDATE mybb_posts SET message = '$message' where pid=$pid");
}
?>

Mvg / kind regards
At Volg MyBB NL op Twitter
[Afbeelding: vote-for-mybb.gif]
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken
Reageren op dit bericht
08-31-2013, 06:57 PM
Bericht: #5
RE: Query
Ik heb in inc/config.php staan bij type 'mysql'.

Ik heb de bovenstaande code ook geprobeerd.
Bij deze krijg ik geen foutmelding maar een blanke pagina.
Alle berichten van deze gebruiker zoeken
Reageren op dit bericht
08-31-2013, 07:02 PM
Bericht: #6
RE: Query
Een blanke pagina is goed. Het script geeft geen melding, dus normaal zouden de tags moeten weg zijn uit de berichten op je forum.

Mvg / kind regards
At Volg MyBB NL op Twitter
[Afbeelding: vote-for-mybb.gif]
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken
Reageren op dit bericht
08-31-2013, 07:19 PM
Bericht: #7
RE: Query
Ze zijn niet verdwenen helaas..
Ik weet het verder ook niet zo gauw meer..
Alle berichten van deze gebruiker zoeken
Reageren op dit bericht
08-31-2013, 07:44 PM
Bericht: #8
RE: Query
Heb je iets aan die [brake] aangepast? Want met [brake]blabla[/brake] werkt het tijdens de test hier in ieder geval wel.

Je zou achter $pid = $row['pid']; dit lijntje code kunnen bijplaatsen:
echo "$message<br /><br />---<br /><br />";

Dan zie je welke berichten het scriptje vindt en of de code in die berichten is weggehaald.
Als je geen berichten krijgt vind het de [brake] niet goed en kan dat aangepast worden. Indien er wel berichten staan, maar de [brake] komt er nog in voor, dan werkt het verwijderen niet helemaal. Maar het is meestal maar een kleine aanpassing die nodig is om het gewenste resultaat te krijgen.

Mvg / kind regards
At Volg MyBB NL op Twitter
[Afbeelding: vote-for-mybb.gif]
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken
Reageren op dit bericht
09-01-2013, 11:58 AM
Bericht: #9
RE: Query
Ik heb de ''echo'' toegepast en vind niet de tags.
Als test een ander woord gebruikt en die vind hij wel.
De woorden die hij dan wel vindt blijven wel staan.
Alle berichten van deze gebruiker zoeken
Reageren op dit bericht
09-01-2013, 12:48 PM
Bericht: #10
RE: Query
Ok, het zou dan in principe wel moeten werken. Je kan dit nog eens vervangen:
PHP-code:
$result mysql_query("SELECT pid, message FROM mybb_posts WHERE 1 AND MATCH(message) AGAINST('[brake]' IN BOOLEAN MODE)"); 
door:
PHP-code:
$result mysql_query("SELECT pid, message FROM mybb_posts WHERE message LIKE '%[brake]%'"); 

Als je heel korte tags zou hebben, kan het zijn dat je webhost geen full text search ondersteund en het daarom niets vind. Het is hoofdletter gevoelig, dus misschien moet je met hoofdletters proberen.

Als hij de tags vind, vergeet dan ook niet dat je deze hier ook moet aanpassen:
$message = preg_replace("/\[brake\].*\[\/brake\]/", "", $row['message']);
waarbij de \ belangrijk zijn, dus best enkel het woord veranderen.

Mvg / kind regards
At Volg MyBB NL op Twitter
[Afbeelding: vote-for-mybb.gif]
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken
Reageren op dit bericht
Reactie plaatsen 


Ga naar locatie:


Gebruikers die deze discussie lezen: 2 gast(en)