php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 11-07-2009, 21:28
basst
 Registrierter Benutzer
Links : Onlinestatus : basst ist offline
Registriert seit: Jul 2009
Beiträge: 3
basst befindet sich auf einem aufstrebenden Ast
Standard Kurze Wörter aud Mysql Table "Tags_Keywords" entfernen

Hallo,
ich habe folgende Herausvorderung und wäre dankbar für Angegungen.

Ich habe eine große Mysql DB Tabelle in der Artikel verschlagwortet sind.
D.H. es existiert eine Spalte "Tags_Keywords".

Ich benötige ein Script das ich in regelmäßigen Abständen benutzen möchte um alle Wörter unter 5 Zeichen zu entfernen.

Also so eine Art Wartungsscript zur Keyword-Bereinigung.

Danke.
Mit Zitat antworten
  #2 (permalink)  
Alt 12-07-2009, 01:06
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Wenn es in einem Wald ein großes Loch gibt und immer wieder Tiere hinein stürzen, dann kaufst du einen Kran, um die Bergung zu erleichtern? Warum schüttest du das Loch nicht zu oder ziehst einen Zaun ringsum?

Sorge dafür, dass die unerwünschten Daten gar nicht erst in die DB geschrieben werden!

Klingt auch nicht sehr normalisiert ...
Mit Zitat antworten
  #3 (permalink)  
Alt 12-07-2009, 10:01
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

OffTopic:
Ich würde den Kran kaufen ...
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #4 (permalink)  
Alt 13-07-2009, 10:33
mkb_webprint
 Registrierter Benutzer
Links : Onlinestatus : mkb_webprint ist offline
Registriert seit: May 2009
Beiträge: 53
mkb_webprint befindet sich auf einem aufstrebenden Ast
Standard

Auch wenn onemorenerd schon eine sehr schöne Antwort gefunden hat, auch wenn sie das Problem der schon vorhandenen Datensätze nicht löst. Hier noch meine Gedanken wie du das Problem lösen kannst.

1. Verhindere, wie onemorenerd schon gesagt hat, das die unerwünschten Daten in die DB kommen.

2. SQL-Query zum löschen von den vorhandenen Datensätzen:
PHP-Code:
<?php
mysql_query
("DELETE * FROM deine_tabelle WHERE LENGTH(deine_tabelle.Tags_Keywords) < 5");
?>
3. Kein Gewähr auf 100%-ige Funktionsfähigkeit. Meine gelesen zu haben das die Funktionen LENGTH() Probleme mit UTF-8 codierten Strings haben kann... Teste es am besten erstmal indem du DELETE mit SELECT tauschst..

Viel Erfolg.

Grüße

Björn
Mit Zitat antworten
  #5 (permalink)  
Alt 13-07-2009, 13:08
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ich befürchte, dass er in der Spalte Tags_Keywords nicht einzelne Wörter sondern Wortkolonnen stehen hat. Das meinte ich mit "nicht normalisiert".

Egal, er spricht anscheinend nicht mehr mit uns. Er wollte wohl ein fertiges Script und keine guten Ratschläge.
Mit Zitat antworten
  #6 (permalink)  
Alt 27-07-2009, 16:52
basst
 Registrierter Benutzer
Links : Onlinestatus : basst ist offline
Registriert seit: Jul 2009
Beiträge: 3
basst befindet sich auf einem aufstrebenden Ast
Standard

Danke euch für die Hilfe und entschuldigt die späte Reaktion,

ich habe eine Tabelle "texte" mit einer Spalte "Tags" mit folgendem Inhalt:

"Langwort kurz langwort1 kurz und Längereswort"

Nach der SQL Anweisung soll dann nur noch:

"Langwort langwort1 Längereswort"

erhalten bleiben.

Ich fürchte diese funktion kann das nicht leisten

"DELETE * FROM deine_tabelle WHERE LENGTH(deine_tabelle.Tags_Keywords) < 5"

oder?


Mit Zitat antworten
  #7 (permalink)  
Alt 27-07-2009, 17:24
mkb_webprint
 Registrierter Benutzer
Links : Onlinestatus : mkb_webprint ist offline
Registriert seit: May 2009
Beiträge: 53
mkb_webprint befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von basst Beitrag anzeigen
Ich fürchte diese funktion kann das nicht leisten
"DELETE * FROM deine_tabelle WHERE LENGTH(deine_tabelle.Tags_Keywords) < 5"
Da befürchtest du richtig. Eine Möglichkeit die mir noch einfällt ist, ein Script zu schreiben das deine Tag-Felder ausliest, das Ergebnis dann mit explode(" ", $deine_spalte) in einen array zerlegt und dann die elemente einzeln durchlaufen und schauen ob die weniger als 5 Zeichen haben.

Auf die Schnelle ungefähr so:
PHP-Code:
<?php
$res 
mysql_query("SELECT Tags FROM deine_tabelle ORDER BY was_weiss_ich ASC");
while(
$row mysql_fetch_array($res)) {
$tmp explode(" "$row['Tags']);
     foreach(
$tmp as $key=>$tag) {
        if(
strlen($tag) < 5) {
           unset(
$tmp[$key]);
        }
     }
 
$neue_tags implode(" "$tmp);
}
?>
Innerhalb der while-Schleife musst du jetzt noch UPDATE-Queries einbauen, damit deine bereinigten Tags wieder in die DB kommen.
Mit Zitat antworten
  #8 (permalink)  
Alt 27-07-2009, 19:34
basst
 Registrierter Benutzer
Links : Onlinestatus : basst ist offline
Registriert seit: Jul 2009
Beiträge: 3
basst befindet sich auf einem aufstrebenden Ast
Standard

Vielen Vielen Dank,
das hab ich jetzt daraus gemacht, ich fürchte aber es fehlt noch was.
Prinzipiell würde ich auch lieber alles in MYSQL abfeuern z.B. über MYSQL Querybrowser oder phpMyadmin, geht das überhaupt nur mit Mysql, wenn ja wie?


PHP-Code:
<?php
$db_server   
'localhost';
$db_name     'db';
$db_username 'root';

$db_connection_charset 'utf8';

$res mysql_query("SELECT tags FROM group_profile");
while(
$row mysql_fetch_array($res)) {
$tmp explode(" "$row['tags']);
     foreach(
$tmp as $key=>$tag) {
        if(
strlen($tag) < 5) {
           unset(
$tmp[$key]);
        }
     }
 
$neue_tags implode(" "$tmp);
$sql "UPDATE group_profile SET tags ='$neue_tags'";
@
mysql_query($sql);

}
?>
Mit Zitat antworten
  #9 (permalink)  
Alt 27-07-2009, 19:38
mkb_webprint
 Registrierter Benutzer
Links : Onlinestatus : mkb_webprint ist offline
Registriert seit: May 2009
Beiträge: 53
mkb_webprint befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von basst Beitrag anzeigen
Vielen Vielen Dank,
das hab ich jetzt daraus gemacht, ich fürchte aber es fehlt noch was.
Jop, wenn deine Gruppen-Profile (leite ich jetzt mal ab) eine ID haben (davon gehe ich mal aus), musst du die natürlich in deinem Query mit angeben. Sprich "UPDATE ..... SET ...=... WHERE dein_id_feld=ID_des_Profils"

Du kannst die ID genau wie die Tags aus dem Ergebnis-Array ziehen (z.B. $id = $row['group_id'])
Mit Zitat antworten
  #10 (permalink)  
Alt 29-07-2009, 17:30
piratos
 Guest
piratos
Beiträge: n/a
Standard

Ja sicher die Verbindung:

PHP-Code:
<?php
function filter($var)
{
    return 
strlen($var) > 4;
}

$db_server   'localhost';
$db_name     'test';
$db_username 'root';
$db_passwort '';

$db=mysql_connect($db_server,$db_username,$db_passwort);
mysql_select_db($db_name);
$res mysql_query("SELECT text FROM a");
while(
$row mysql_fetch_array($res))
{
  
$tmp explode(" "$row['text']);
  
$t=array_filter($tmp,'filter');
  
$sql "UPDATE a SET text ='".mysql_real_escape_string(implode(" "$t))."'";
  @
mysql_query($sql);
}
?>

Geändert von piratos (29-07-2009 um 17:33 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mysql einrtag bei <input type="submit" name="Submit" value="Posten" Mathes HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 1 05-07-2006 16:05
Sessions, Smarty,Unicode, MySQL und IE "Speichern" bzw. NC "contains POSTDATA" . ready_two PHP Developer Forum 2 16-01-2006 15:23
[Script] Wort im Formular angeben - soll "ähnliche" Wörter ausgeben Natheedo Apps und PHP Script Gesuche 2 08-01-2006 16:20
einzelne Wörter einer "textarea" mittels Button formatieren mnjakob HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 6 03-12-2003 15:06
[MySQL 3.23.X] Welches Format / Passwörter in DB -> "MySQL" -> Table "User" TheUser SQL / Datenbanken 2 18-08-2003 15:09

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:19 Uhr.