tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
279
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von progafrog
    progafrog progafrog ist offline Mitglied Bronze
    Registriert seit
    Jul 2009
    Beiträge
    26
    Hey,

    ich bastel zur Zeit an einem script für eine php/ mysql Suche.
    Ich stehe nur vor folgenden Problemen:
    1. werden Datensätze teilweise doppelt ausgegeben
    2. Es soll nach einer art bestem Ergebnis gefiltert bzw. sortiert werden. (absteigend natürlich)

    Ich habe noch nicht allzuviel in PHP gemacht, daher weiss ich nicht genau ob mein Script korrekt ist einen kleinen Teil der Ausgabe sehr ihr hier:

    PHP-Code:
    while($row mysql_fetch_array($result)) 
    {
        if(
    $row['newstitle'] == true OR $row['newscontent']== true 
        {
            echo
    "<br />$row[newstitle]<br /><br />$row[newscontent] <br />"
        }
        if(
    $row['articletitle'] == true Or $row['articlecontent'] ==true )
        {
            echo
    "<br />$row[articletitle]<br /><br />$row[articlecontent] <br />";  
        }

    Es wäre günstig, wenn euch ein paar Tipps oder Verbesserungen einfallen ; ]

    mfg
     

  2. #2
    Avatar von Steusi
    Steusi Steusi ist offline Nasenbär
    Registriert seit
    Sep 2006
    Ort
    MV
    Beiträge
    431
    Bitte poste die SELECT Anweisung, dann können wir dir auch helfen!
     
    Gruß Steusi

    Sollte dir ein Tipp von mir geholfen haben, freue ich mich auch über eine kleine Bewertung.
    Und wenn ein Problem gelöst ist, markiere deinen Beitrag bitte als erledigt.
    PHP-Code:
    $fehler "dummer Tippfehler";
    echo(
    "Und ist das Programm noch so klein, es passt immer noch ein ".$fehler". rein!"); 

  3. #3
    Avatar von progafrog
    progafrog progafrog ist offline Mitglied Bronze
    Registriert seit
    Jul 2009
    Beiträge
    26
    Okay, Hier ist die Select Anweisung:


    PHP-Code:
    $select "Select newsdb.newstitle, newsdb.newsid, 
    newsdb.newscontent, articledb.articleid, 
    articledb.articletitle, articledb.articlecontent, 
    tutorialdb.tutid, tutorialdb.tuttitle, 
    tutorialdb.tutcontent
    FROM 
    articledb, newsdb, tutorialdb 
    WHERE 
    newsdb.newstitle LIKE '%"
    .$suche."%' OR 
    newsdb.newscontent LIKE '%"
    .$suche."%' OR 
    articledb.articletitle LIKE '%"
    .$suche."%' OR 
    articledb.articlecontent LIKE '%"
    .$suche."%' OR 
    tutorialdb.tuttitle LIKE '%"
    .$suche."%' OR 
    tutorialdb.tutcontent LIKE '%"
    .$suche."%' " 
     

  4. #4
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Mir fällt spontan auf, dass du auf $row["articletitle"] zugreifst aber in der Abfrage "articledb.articletitle" abfragst. So auch bei den anderen Werten.

    Schreibe an den Anfang von deinem Skript einmal:
    PHP-Code:
    error_reporting(E_ALL); 
    und schau dir die Fehlermeldungen an.
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  5. #5
    Avatar von progafrog
    progafrog progafrog ist offline Mitglied Bronze
    Registriert seit
    Jul 2009
    Beiträge
    26
    Ist das nicht richtig Zodiac?

    Ich habe die Codezeile eingefügt aber das einzige was error report ausgibt ist :
    *******
    und damit kann ich nichts anfangen .
     

  6. #6
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    Zitat Zitat von progafrog Beitrag anzeigen
    Ist das nicht richtig Zodiac?
    Oha. Gerade getestet und doch klappt anscheinend. Sah nur sehr ungewohnt aus.

    Zitat Zitat von progafrog Beitrag anzeigen
    Ich habe die Codezeile eingefügt aber das einzige was error report ausgibt ist :
    *******
    und damit kann ich nichts anfangen .
    Ich auch nicht, da dies eine unübliche Ausgabe ist. Vielleicht steht ja im Quelltext der ausgegebenen Seite mehr.

    Zu deinem zweiten Anliegen:
    Jeden Eintrag könnte man auf mehrere Kriterien prüfen und dafür "Punkte" geben, z.B. :
    • Anzahl der Fundstellen
    • Aktualität
    • Zugriffe nach der Suchmaske
    • Schlagwörter
    • etc.

    Dies in einem neuen Array speichern (Key: "Punkte", Value: Array mit dem Eintrag), sortieren lassen mit ksort() und demnach ausgeben.

    Nur eine von vielen Möglichkeiten.
    Das mit dem Fundstellen zählen oder andere Kriterien bilden, geht sicherlich auch schon direkt in SQL.
    http://dev.mysql.com/doc/refman/5.1/en/string-functions.html
    Geändert von ZodiacXP (13.07.09 um 13:44 Uhr)
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  7. #7
    Avatar von progafrog
    progafrog progafrog ist offline Mitglied Bronze
    Registriert seit
    Jul 2009
    Beiträge
    26
    ähm ich verstehe nicht so ganz wie das funktioniert ...
    Sehr nett wäre ein kleines Beispiel .

    mfg
    progAfrog
     

  8. #8
    Registriert seit
    Mar 2004
    Beiträge
    1.856
    Blog-Einträge
    2
    In dem Post siehst du einen Link, den du unter anderem lesen kannst.

    Da endlos viele Beispiele / Kombinationen möglich sind hier nur einmal die Anzahl der Fundstellen über PHP.
    $row["topic"] ist jeweils der Titel,
    $row["content"] ist jeweils der Inhalt,
    $search ist jeweils der gesuchte String,
    $a ist unser neues Array,
    das folgende ist eingefasst in eine while-Schleife zum lesen der SQL-Daten
    PHP-Code:
    $asubstr_count$row["content"], $search) ][] = array(
      
    "topic" => $row["topic"],
      
    "content" => $row["content"]
    ); 
    Nun hat das Array ungefähr den Aufbau
    [Anzahl Fundstellen] => Array( ... Einzelne Einträge ... )
    Dazu lässt sich krsort verwenden, da es absteigend die Schlüssel (hier: Anzahl Fundstellen) sortiert.
    PHP-Code:
    krsort($a);

    // Nacheinander Fundstellen-Anzahl-Blöcke auslesen
    foreach ($a as $sub_a)
    {
      
    // Beiträge einzeln auslesen
      
    foreach ($sub_a as $entry)
      {
        
    // nun ist der Titel in $entry["topic"]
        // und der Inhalt in $entry["content"]
      
    }

    Beachte: Je mehr du machst umso mehr muss dein Server rumrechnen.
     
    Gebe keine Hilfe per PN, Mail, Instant Messenger etc.
    und keine Copy&Paste-Lösungen - ein bisschen selbst nachdenken sollte drin sein. Konstruktivismus 4tw!


    MfG, Zod

    __________________
    rpd Framework: Rapid Web-Engineering in PHP (Manual | Google Code)

  9. #9
    Avatar von progafrog
    progafrog progafrog ist offline Mitglied Bronze
    Registriert seit
    Jul 2009
    Beiträge
    26
    Okay, danke für die Hilfe ich werde mir das heute mal ein wenig angucken

    ich würde dann mal sagen "erledigt".
     

Ähnliche Themen

  1. Suchmaschine
    Von MaxivB im Forum PHP
    Antworten: 15
    Letzter Beitrag: 07.10.08, 13:51
  2. Suchmaschine ?
    Von Nohh im Forum Delphi, Kylix, Pascal
    Antworten: 3
    Letzter Beitrag: 09.10.06, 03:44
  3. Suchmaschine: <p> ver. <div>
    Von online im Forum HTML & XHTML
    Antworten: 12
    Letzter Beitrag: 05.02.05, 20:29
  4. PHP-Suchmaschine
    Von Experience1986 im Forum PHP
    Antworten: 7
    Letzter Beitrag: 17.02.03, 20:18
  5. Suchmaschine
    Von Daniel im Forum Sonstige Sprachen
    Antworten: 5
    Letzter Beitrag: 29.11.00, 00:21

Stichworte