Problem mit MySQL Abfrage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit MySQL Abfrage

    Hallo,

    ich habe einen vServer von 1und1, und wollte nun eine Testseite machen. dazu habich 2 Tabellen angelegt, und befüllt.
    Die Tabelle Rezepte enthält ca. 300 Einträge, die Tabelle Zutaten ca. 3000, mit einem Fremdschlüssel auf die Rezepte.

    meine PHP-Datei sieht so aus:
    PHP-Code:
    <?php @include "header.inc.php";?>
    <style type="text/css">
    </style>
     <h1>Rezepte</h1>
    <?

     $verbindung = mysql_connect("XXX",
      "XXX","XXX") or die
      ("Keine Verbindung moeglich");
      mysql_select_db("cc") or die
      ("Die Datenbank existiert nicht");
        

        
                    $abfrage = "SELECT DISTINCT Rezepte.ID,
     Rezepte.Name, Rezepte.Beschreibung FROM Rezepte, Zutaten ". 
                               "WHERE Rezepte.ID IN (
    select Rezept_ID from Zutaten WHERE Name LIKE '%$zutat1%' 
    OR '%$zutat2%' OR '%$zutat3%' OR '%$zutat4%' 
    OR '%$zutat5%') ".
    "Limit 0,30";     
                             
                
                
                
                //echo $abfrage;
            
                $ergebnis = mysql_query($abfrage) or die ("Fehler"); 
                echo '<h2>Ergebnisse</h2>';
                echo '<table width="400">';
                $i = 0;
                while($row = mysql_fetch_assoc($ergebnis)) 
                {
                    $id = $row['ID'];
                    $name = $row['Name'];
                    $beschreibung = $row['Beschreibung'];
                    echo '<tr>';
                     echo '    <td width="200">'.$name.'</td>';
                     echo '     <td width="200">'.$beschreibung.' -> <a href="suche_erg2.php?id='.$id.'">mehr</a></td>';
                      echo '</tr>';
                    $i++;
             } 
                echo '</table>';
                echo '<br />';
                echo 'Es werden max. 30 Ergebnisse angezeigt';

                 
    mysql_close($verbindung); 

    ?>      

    <?
    if (mysql_errno()) die ("MySQL-Error: " . mysql_error());


    ?>

    <?php @include "footer.inc.php";?>
    Dabei braucht das ganze zum ausführen immer so ca. 2Minuten. Kann das sein, oder hab ich was falsch gemacht, mit der MySQL einbindung??

    Wusste nicht ob der Thread in Mysql oder PHP gehört, sorry.
    Zuletzt geändert von csigg; 26.04.2007, 14:00.

  • #2
    setze die query direkt an die db ab, z.b. mit phpmyadmin. wie lange braucht sie dort?

    evtl. brauchst du einen einfachen JOIN.

    Kommentar


    • #3
      Regeln lesen, Code umbrechen.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        das mit dem Zeilenumbruch kommt durch zu vieles Probieren, und noch mal schnell was dazu schreiben.

        Ich hab mir inzwischen sagen lassen, dass es an dem "IN" liegen könnte im SQL-Statement, aber wie kann ich das ganze am einfachsten umgehen? Ohne dass sich die Funktion ändert.

        Kommentar


        • #5
          Ev wie bereits erwähnt ein JOIN (hier im Forum danach suchen) oder erst mit einer Query nur die betroffenen Rezept_ ID auslesen in ein Array knallen und der zweiten Query übergeben

          Aber 2 Minuten für eine solche Query sind doch etwas gar arg

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            allerdings weiss ich mit dem normalen JOIN nicht, wie ich es hinbekommen soll, dass mir die Richtigen Rezepte ausgegeben werden. Ich versuche es hier mal ein wenig zu beschreiben:
            Tabelle1:
            PHP-Code:
            CREATE TABLE `Rezepte` (
              `
            idint(11NOT NULL auto_increment,
              `
            Namevarchar(255NOT NULL default '',
              `
            Beschreibungvarchar(255) default NULL,
              `
            Anleitungtext NOT NULL,
              
            PRIMARY KEY  (`id`)

            Tabelle 2:
            PHP-Code:
            CREATE TABLE `Zutaten` (
              `
            idint(11NOT NULL auto_increment,
              `
            Namevarchar(255NOT NULL default '',
              `
            Mengevarchar(255) default NULL,
              `
            Rezept_idint(11NOT NULL default '0',
              
            PRIMARY KEY  (`id`)

            Nun will ich, dass 5 Zutaten in ein Feld eingegeben werden können.
            Dann soll ein oder mehrere Rezepte gefunden werden, die alle eingegeben Zutaten enthalten.

            Kommentar


            • #7
              Original geschrieben von wahsaga
              Regeln lesen, Code umbrechen.
              JETZT, sonst *trash*
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Original geschrieben von penizillin
                setze die query direkt an die db ab, z.b. mit phpmyadmin. wie lange braucht sie dort?

                Kommentar


                • #9
                  das hab ich dann wohl vergessen zu schreiben,
                  die braucht über phpMySql fast genauso lange wie über PHP, also muss ich wohl mein Statement optimieren....

                  Kommentar

                  Lädt...
                  X