php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 15.03.2008, 15:48  
Goreo
Gast
 
Beiträge: n/a
Standard [Erledigt] Doppelte Datensätze anzeigen

Hallo allerseits,

ich habe ein Problem mit meinem Deutsch Griechisch Lexikon. Und zwar möchte ich alle Datensätze aus der Datenbank auslesen und dann mit html_entity_decode und strcmp kontrollieren, ob es Datensätze gibt, die doppelt vorkommen. Problem ist nämlich, dass einige Daten mit einem anderen charset gespeichert wurden.

Folgenden Ansatz habe ich bereits. Allerdings ist es mir schleierhaft wie man jeden einzelnen Eintrag mit den anderen verlgeichen muss.

PHP-Code:
$ask"SELECT griechisch FROM word WHERE griechisch LIKE '%&#x%'";
$remysql_query($ask) or die('Abfrage fehlgeschlagen'mysql_error());
while (
$datensatzmysql_fetch_array($re)) {
$test html_entity_decode($datensatz["griechisch"]);
$ask2"SELECT griechisch FROM word WHERE griechisch LIKE '%&#9%'";
$re2mysql_query($ask) or die('Abfrage fehlgeschlagen'mysql_error());
while (
$datensatz2mysql_fetch_array($re2)) {
$vergleich strcmp($datensatz["griechisch"], $datensatz2["griechisch"]); 
PS: Das Griechisch LIKE soll bezwecken, dass er nach der bestimmten Kodierung sucht. Also alle Einträge mit der einen Kodierung beinhalten %#x und die anderen &#9. Nun sollen alle ausgewählt und miteinander verglichen werden. Gibt es Übereinstimmungen sollen diese angezeigt werden.


Kann mir jemand behilflich sein?

Dank im Vorraus,

Goreo
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.03.2008, 10:55  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Du kannst zwei Arrays auch einfach mit if($arr1 == $arr2) vergleichen, strcmp() ist ja für einen Stringvergleich wie der Name schon sagt.... (string compare)
cycap ist offline   Mit Zitat antworten
Alt 17.03.2008, 13:20  
Goreo
Gast
 
Beiträge: n/a
Standard Fehler

Mit folgendem Code
PHP-Code:
$ask"SELECT griechisch, deutsch FROM word WHERE griechisch LIKE '%&#x%'";
$remysql_query($ask) or die('Abfrage fehlgeschlagen'mysql_error());
while (
$datensatzmysql_fetch_array($re)) {
$test html_entity_decode($datensatz["griechisch"]);
$ask2"SELECT griechisch, deutsch FROM word WHERE griechisch LIKE '%&#9%'";
$re2mysql_query($ask) or die('Abfrage fehlgeschlagen'mysql_error());
while (
$datensatz2mysql_fetch_array($re2)) {
$test2 html_entity_decode($datensatz2["griechisch"]);

if(
$test == $test2)) { echo " | ".$test2.""; }}} 
bekomm ich ein Maximum execution time of 30 seconds exceeded


Was mache ich falsch?
  Mit Zitat antworten
Alt 17.03.2008, 14:27  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Also so wie du den Code gepostet hast müsstest du eigentlich einen Parse Error bekommen, siehe doppelte Klammer am ende vom if
cycap ist offline   Mit Zitat antworten
Alt 17.03.2008, 14:46  
Goreo
Gast
 
Beiträge: n/a
Standard

Ups, das hatte ich falsch hierhineinkopiert, sorry.
Also, das steht in der Datei ohne zweite Klammer da. Und dann bekomm ich halt die Maximum execution time of 30 seconds exceeded.

Beziehungsweise er fängt an, mir die ersten ca. 500 Datensätze anzuzeigen und dann bricht er ab wegen Maximum execution time of 30 seconds exceeded. Aber die Datensätze, die er ausgibt, sind auch nicht richtig, also er gibt nicht die doppelten Datensätze aus, sondern einfach die ersten 500.

Geändert von Goreo (17.03.2008 um 14:49 Uhr).
  Mit Zitat antworten
Alt 17.03.2008, 15:13  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Habe mir mal die Mühe gemacht, den Code lesbar zu formatieren, damit Leute, die nach mir kommen, schneller sehen, was los ist.
PHP-Code:
$ask"SELECT griechisch, deutsch FROM word WHERE griechisch LIKE '%&#x%'";
$remysql_query($ask) or die('Abfrage fehlgeschlagen'mysql_error());

while (
$datensatzmysql_fetch_array($re)) {
    
$test html_entity_decode($datensatz["griechisch"]);
    
$ask2"SELECT griechisch, deutsch FROM word WHERE griechisch LIKE '%&#9%'";
    
$re2mysql_query($ask) or die('Abfrage fehlgeschlagen'mysql_error());
    while (
$datensatz2mysql_fetch_array($re2)) {
        
$test2 html_entity_decode($datensatz2["griechisch"]);
        
        if (
$test == $test2) {
            echo 
" | ".$test2."";
        }
    }

Also dass du eine Execution Time Error bekommst, liegt daran, dass du viele Einträge hast und jeden einzeln aufwändig bearbeitest. Du hast ja sogar noch einen SQL-Query innerhalb der Schleife.
Das alles hat zu Folge, dass das Skript sehr lange braucht und dann nach 30 Sekunden abbricht.

Vielleicht hilft dir ein JOIN, das ganze schneller zu gestalten. Etwa wie der:
Code:
SELECT a.griechisch AS griechisch_1, a.deutsch AS deutsch_1, b.griechisch AS griechisch_2, b.deutsch AS deutsch_2
FROM word a
FULL OUTER JOIN word b
WHERE a.griechisch LIKE '%&#x%' OR b.griechisch LIKE '%&#9%';

Geändert von Manko10 (17.03.2008 um 15:16 Uhr).
Manko10 ist offline   Mit Zitat antworten
Alt 17.03.2008, 15:45  
Goreo
Gast
 
Beiträge: n/a
Standard

Danke Manko10,

aber ich kriege die Fehlermeldung Abfrage fehlgeschlagenYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULL OUTER JOIN word b WHERE a.griechisch LIKE '%�%' OR b.griechisch LIKE '%�'
  Mit Zitat antworten
Alt 17.03.2008, 16:08  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Tatsächlich, habe ich doch einen wesentlichen Bestandteil vergessen...

1.) ON-Klausel fehlte (Asche über mein Haupt - das kommt davon, wenn man das aus dem Kopf schreibt)
2.) MySQL unterstützt doch gar kein OUTER JOIN. Ein INNER JOIN sollte es aber letztendlich auch tun.

Code:
SELECT a.griechisch AS griechisch_1, a.deutsch AS deutsch_1, b.griechisch AS griechisch_2, b.deutsch AS deutsch_2
FROM word a
INNER JOIN word b
ON a.griechisch = b.griechisch
WHERE a.griechisch LIKE '%&#x%' OR b.griechisch LIKE '%&#9%';
An sich würde auch es auch ein impliziter JOIN tun:
Code:
SELECT a.griechisch AS griechisch_1, a.deutsch AS deutsch_1, b.griechisch AS griechisch_2, b.deutsch AS deutsch_2
FROM word a, word b
WHERE a.griechisch LIKE '%&#x%' OR b.griechisch LIKE '%&#9%' AND a.griechisch = b.griechisch;
Manko10 ist offline   Mit Zitat antworten
Alt 17.03.2008, 16:36  
Goreo
Gast
 
Beiträge: n/a
Standard

Der lädt die Seite jetzt schon seit ca. 15 Minuten...

Kann das solange dauern bei 16000 Datensätzen?
  Mit Zitat antworten
Alt 17.03.2008, 16:54  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.425
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Kann, ja. Sollte natürlich nicht. Komisch, dass das Skript noch nicht abgebrochen wurde.
JOINs sind nicht unbedingt schnell, aber oft die einzige Möglichkeit. Wenn du dazu noch Schleifen in PHP verwendest, kann so eine Skriptlaufzeit durchaus zustande kommen.
Ich kenne ja auch nicht dein ganzes Skript und ebenso wenig den Aufbau deiner Datenbank.
Manko10 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Bild anzeigen, wenn ein bestimmter Name aus MySQL gelesen wird AJ79 Datenbanken 3 15.07.2008 13:16
[Erledigt] leere Formularfelder in Email nicht anzeigen pixelprinzessin PHP Tipps 2008 66 26.06.2008 15:32
Daten aus MySQL korrekt anzeigen sams9 PHP Tipps 2008 21 19.06.2008 20:58
[Erledigt] DB-Einträge nach Anfangsbuchstabe auslesen - Problem bei Zahlen/Sonderzeic Teela PHP Tipps 2008 6 19.05.2008 19:29
[gelöst]LEFT JOIN, DINSTINCT und trotzdem doppelte?!?! stefanjann Datenbanken 10 06.02.2008 11:49
Mehrere div's mit gleichen ID anzeigen / ausblenden phpbeginner HTML, Usability und Barrierefreiheit 9 06.09.2007 02:48
Baumstruktur anzeigen PHP-Fortgeschrittene 13 31.03.2006 21:37
Bilder anzeigen und nicht anzeigen Cyrus PHP Tipps 2005-2 7 26.10.2005 20:23
Doppelte Einträge in tabelle über mehrere Spalten anzeigen PHP Tipps 2005-2 8 22.07.2005 09:29
doppelte Einträge aus Datenbank anzeigen Lia PHP Tipps 2005 9 24.05.2005 14:49
Emails anzeigen mit PHP Tobias Beitragsarchiv 43 04.04.2005 06:57
Bilder nach Namen anzeigen PHP Tipps 2005 11 06.03.2005 15:41
[Erledigt] Cookie - Seite anzeigen / nicht anzeigen PHP Tipps 2004-2 2 11.11.2004 15:59
[Erledigt] Doppelte Datensätze anzeigen! Datenbanken 3 25.09.2004 17:42
Alle Datenbanken und Tabellen anzeigen anzeigen imported_Lumio PHP Tipps 2004 4 13.09.2004 14:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql doppelte anzeigen, mysql doppelte einträge finden, mysql doppelte einträge anzeigen, http://www.php.de/php-fortgeschrittene/689-erledigt-doppelte-datensaetze-anzeigen.html, word doppelte sätze finden, mysql alle doppelten anzeigen, mysql dubletten anzeigen, mysql doppelte einträge nicht anzeigen, php mysql doppelte einträge finden, doppelte einträge anzeigen php, alle doppelten einträge ausgeben php mysql, mysql doppelte mysql_fetch_array, mysql alle doppelten datensätze anzeigen, word identische sätze finden, mysql doppelte werte anzeigen, php mysql doppelten eintrag anzeigen, mysql doppelte datensätze, php mysql doppelte datensätze finden, sql abfrage doppelte einträge anzeigen, sql doppelte einträge ausblenden

Alle Zeitangaben in WEZ +1. Es ist jetzt 20:43 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum