Suchen
Inside Forum
Nützliche Links
PHP Jobs
phpforum.de Tipp
 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 
PHP Test


werbung



Zurück   PHP Forum: phpforum.de > Datenbanken > Datenbanken

Datenbanken MySQL und co.

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 13.06.2006, 22:51
despo despo ist offline
Neuer Besucher
 
Registriert seit: 13.06.2006
Beiträge: 8
Standard

hallo,

ich habe für meine wörterbuch zwei tabelle erstellt.

1. tabelle: ID - wortID - redewendungID - zwei mal wörter feld



2.tabelle: ID - bedeutungID - bedeutung



ich wollte bei den gefundene wörter, wenn man darauf klickt den beduetung und wenn es beispiele gibt die auch ausgegeben haben.. weche sql befehl muss ich benutzen...

bis jetzt sieht meine suche.php so aus:
PHP Quellcode:
<?php
$suche = strip_tags($_POST["suche"]);
$type= strip_tags($_POST["type"]);
if ($suche == "")
{
$f = 1;
}
elseif (strlen($suche) < 1)
{
$f = 1;
}
else
{
echo "<div >";



$anfrage = "SELECT * FROM woerter WHERE TEXT LIKE '" . $suche . "%'  ORDER BY TEXT ASC";
$ergebnis = mysql_query($anfrage);
$anzahl = mysql_num_rows($ergebnis);
if ($myrow = mysql_fetch_array($ergebnis)) {
$f = 1;
$cf = 0;
if ($anzahl > 20) $get = 20;
else $get = $anzahl;
echo"<h2>";
do {
    $cf++;
    $TEXT = $myrow["TEXT"];
    $TEXTl = strlen($myrow["TEXT"]);
    if ($TEXTl > 25)
    {
    $TEXT = substr($TEXT, 0, 25);
    $TEXT = $TEXT . "...";
    }
   
?>
<div style="margin:0px 0px 0px 0px">
    
        <div class="smallfont" style="margin-bottom:2px">
            
        <input type="button" value="<?php echo $myrow['TEXT'] ?>" style="cursor:pointer; border: 0px; background-color:transparent; color: #420000; font-weight:bold;" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerTEXT = ''; this.value = '<?php echo  $myrow['TEXT'] ?>'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerTEXT = ''; this.value = '<?php echo  $myrow['TEXT'] ?>'; }\">
            
        </div>
            
        <div>
            
        <div style="display: none; margin: 0px; padding: 6px; background-image: url(scana.gif);">
            
        <div >
            
                <?php
               
                    // wie soll ich hier bedeutung und wenn es gibt beispiele ausgeben?
               
                ?>
                
                    
        </div>
            
        </div>
            
        </div>
        
        </div>
<?php
    $myrow = mysql_fetch_array($ergebnis);
   
    }
    while ($cf < $get);
    echo "</h2>";
 }
 }
 


?>
muss ich vieleicht noch eine query erstellen zb.
Code:
SELECT * FROM woerter,bedeutung WHERE woerter.ID = bedeutung.bedeutungID
das ganze sollte so aussehen


danke voraus
Mit Zitat antworten
  #2  
Alt 14.06.2006, 12:08
reloader reloader ist offline
Vorbildlicher Helfer
 
Registriert seit: 28.11.2003
Ort: Passau
Beiträge: 2.055
Standard

1.) sollten bei beiden tabellen einen identischen schlüssel haben (Primary key) womit man dann die beiden Tabellen joinen kann.
2.) dann formulierst du einfach deine abfrage...noch fragen? wenn ja dann posten
__________________
Tipp:

Code Verhau?
Abhilfe schafft der PHP Code beautifier
Mit Zitat antworten
  #3  
Alt 14.06.2006, 17:39
despo despo ist offline
Neuer Besucher
 
Registriert seit: 13.06.2006
Beiträge: 8
Standard

1. tabelle schlüssel = ID
2. tabelle schlüssel = ANLAMID sind identisch

wie kann ich die tabellen joinen?
Mit Zitat antworten
  #4  
Alt 14.06.2006, 17:59
Gary Gary ist offline
Forum-Mitarbeiter
 
Registriert seit: 25.05.2004
Beiträge: 13.400
Standard

http://dev.mysql.com/doc/refman/5.1/en/join.html
__________________
Gary
=============================
Schreie nach Besserem, bis du es auch erhältst. Das noch Bessere verabschiedet sich rechtzeitig vor deinem Lärm.
© Martin Gerhard Reisenberg (*1949)
Mit Zitat antworten
  #5  
Alt 14.06.2006, 19:15
despo despo ist offline
Neuer Besucher
 
Registriert seit: 13.06.2006
Beiträge: 8
Standard

danke Gary, mit join hats geklappt...

aber jetzt wenn ich eine wort suche und diese wort hat mehrere bedeutung, dann wird soviel den wort ausgegeben..
Mit Zitat antworten
  #6  
Alt 14.06.2006, 19:57
Swiftnick Swiftnick ist offline
Forum-Mitarbeiterin
 
Registriert seit: 03.03.2004
Beiträge: 6.176
Standard

Das musst du jetzt bei der Ausgabe mit PHP regeln.

Also eine zusätzliche Variable definieren, in der du das aktuelle Wort speicherst und beim nächsten Schleifendurchlauf überprüfen, ob sich das Wort geändert hat.
__________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
René Descartes
Mit Zitat antworten
  #7  
Alt 14.06.2006, 20:46
despo despo ist offline
Neuer Besucher
 
Registriert seit: 13.06.2006
Beiträge: 8
Standard

kannst du mir ein beispiel geben..bin in php nicht so gut
Mit Zitat antworten
  #8  
Alt 14.06.2006, 20:59
Swiftnick Swiftnick ist offline
Forum-Mitarbeiterin
 
Registriert seit: 03.03.2004
Beiträge: 6.176
Standard

Vom Grundprinzip und ganz vereinfacht so:

PHP Quellcode:
<?php
 $wort_aktuell="";
 $sql=mysql_query("SELECT wort, bedeutung FROM tabelle");
 while ($row=mysql_fetch_assoc($sql)) {
     if ($wort_aktuell!=$row['wort'])
          echo $row['wort'];
     echo $bedeutung;    
     $wort_aktuell=$row['wort'];
 }
?>
__________________
Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist überzeugt, dass er genug davon habe.
René Descartes
Mit Zitat antworten
  #9  
Alt 15.06.2006, 15:51
despo despo ist offline
Neuer Besucher
 
Registriert seit: 13.06.2006
Beiträge: 8
Standard

so,hab mit GROUP BY es erledigt...und die beduetungen mit eine for schleife ausgegeben...aber die suche dauert paar minute...weil die suche mit ajax livesearch ist hat keine sinn...

oder is es besser von schnelligkeit ,wenn ich die daten von datenbank dynamisch xml datei erstelle und aus dem xml suche

in 1. tabelle gibs 79204 daten und in 2. tabelle 209055

hier meine suche.php..vielleicht hab ich was überflüssig, den suche länger dauert..

PHP Quellcode:
<?php
$suche = strip_tags($_POST["suche"]);
$type= strip_tags($_POST["type"]);
if ($suche == "")
{
$f = 1;
}
elseif (strlen($suche) < 1)
{
$f = 1;
}
else
{
echo "<div >";



$abfrage = "SELECT  * FROM kelime  JOIN manasi ON kelime.ID=manasi.anlamID WHERE kelime.TEXT LIKE '" . $search . "%' AND kelime.DEYIMID='0' GROUP BY kelime.ID";
$ergebnis = mysql_query($anfrage);
$anzahl = mysql_num_rows($ergebnis);
if ($myrow = mysql_fetch_array($ergebnis)) {
$f = 1;
$cf = 0;
if ($anzahl > 20) $get = 20;
else $get = $anzahl;
echo"<h2>";
do {
    $cf++;
    $TEXT = $myrow["TEXT"];
    $TEXTl = strlen($myrow["TEXT"]);
    if ($TEXTl > 25)
    {
    $TEXT = substr($TEXT, 0, 25);
    $TEXT = $TEXT . "...";
    }
   
?>
<div style="margin:0px">
    
        <div class="smallfont" style="margin-bottom:2px">
            
        <input type="button" value="<?php echo $myrow['TEXT'] ?>" style="cursor:pointer; border: 0px; background-color:transparent; color: #420000; font-weight:bold;" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = '';this.innerTEXT = ''; this.value = '<?php echo  $myrow['TEXT'] ?>'; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerTEXT = ''; this.value = '<?php echo  $myrow['TEXT'] ?>'; }\">
            
        </div>
            
        <div>
            
        <div style="display: none; margin: 0px; padding: 6px; background-image: url(scana.gif);">
            
        <div >
            
            <?php
           
                $abfrage1 = "SELECT  manasi.aciklama FROM kelime  JOIN manasi ON kelime.ID=manasi.anlamID WHERE kelime.TEXT LIKE '" . $TEXT . "' ";
                $ergebnis1 = mysql_query($abfrage1);
                $anzahl1 = mysql_num_rows($ergebnis1);
               
                for( $i=0; $i<=$sayi; $i++)
                    {
                         $myrow1 = mysql_fetch_array($ergebnis1);
                        echo $myrow1['aciklama']."
"
;
                    }
           
            ?>
                
                    
        </div>
            
        </div>
            
        </div>
        
        </div>
<?php
    $myrow = mysql_fetch_array($ergebnis);
   
    }
    while ($cf < $get);
    echo "</h2>";
}
}



?>
Mit Zitat antworten
  #10  
Alt 15.06.2006, 15:57
Gary Gary ist offline
Forum-Mitarbeiter
 
Registriert seit: 25.05.2004
Beiträge: 13.400
Standard

http://dev.mysql.com/doc/refman/5.1/...xt-search.html
__________________
Gary
=============================
Schreie nach Besserem, bis du es auch erhältst. Das noch Bessere verabschiedet sich rechtzeitig vor deinem Lärm.
© Martin Gerhard Reisenberg (*1949)
Mit Zitat antworten


Antwort

Lesezeichen

Themen-Optionen
Ansicht

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.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
pspell - persönliches Wörterbuch prosbaer PHP 4 24.08.2006 20:35
Suche umfangreiches Script (Download, Upload, Suche etc.) baerenwurm Skriptsuche 2 09.01.2006 16:10
Texte in Eintrag ersetzen (Wörterbuch) Frederik PHP 2 05.12.2005 14:01
Datenbank für Wörterbuch jensr Datenbanken 3 30.04.2005 13:54
Suche in den Suchergebnissen (erweiterte Suche) visionmaster Datenbanken 1 22.09.2004 12:36


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr.


Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC