php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > Apps und PHP Script Gesuche
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


Apps und PHP Script Gesuche Hier könnt ihr nach PHP Skripten und Programmen fragen. Postet eure Wünsche

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 7 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 12-12-2006, 15:44
Nosferatu_v
 Newbie
Links : Onlinestatus : Nosferatu_v ist offline
Registriert seit: Dec 2006
Beiträge: 4
Nosferatu_v ist zur Zeit noch ein unbeschriebenes Blatt
Nosferatu_v eine Nachricht über ICQ schicken
Question php search script

Hallo,

ich suche ein script, das meine page durchsucht, also der User soll Begriff eingeben und dann sollen drunter die Ergebnisse kommen mit link dazu.

Die Page ist zu 95% inhaltlich in einer mysql datenbank.
kann mir da jemand helfen ?

Für die News hab ich selbst schon was gemacht, aber das funkt nich so wie ich es will, ich kann lediglich mit nur 1nem wort suchen damit ergnisse erzielt werden sobald es dann 2 oder 3 oder 4 worte sind kommt entweder nichts oder man hat zufall das diese 2 worte neben einander stehen

also benötige ich 2 dinge:

1) ein scirpt das einfach die ganze datenbank durchsucht und mir ergebnisse mit den dazugehörigen links auspuckt

2) hilfe bei meinem suchscript für die news das nur in den news sucht

PHP-Code:
<form method="post" <?php echo "action=site.php?page=53&d=$d&lan=$lan"?>
<?php echo "$text203"?>: <input type='text' name='suche'> 
<input type='submit' value='Suchen!'> 
</form> 

$sql = "SELECT * FROM ".$dblan."_news WHERE eintrag LIKE '%$suche%' 
OR titel LIKE '%$suche%' OR kategorie LIKE 
'%$suche%' ORDER BY id DESC";

und dann lese ich einfach die dazugehörigen news tabellen aus

Geändert von wahsaga (12-12-2006 um 23:06 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 12-12-2006, 19:13
Mathis
 Registrierter Benutzer
Links : Onlinestatus : Mathis ist offline
Registriert seit: Nov 2006
Beiträge: 119
Mathis ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nimm doch einfach den eingegebenen String mit expode auseinander uns suche dann nach den einzelnen Teilen

Beispiel:

PHP-Code:
<?php
    $suchstring 
"Wort1, Wort2, Wort3 + Wort4"//Eingegebener String
    
    //Dann solltest du noch Kommas, Pluszeichen etc., die der  
    //Benutzer evtl. für die Aufzählung eingegeben hat entfernen:
      
$suchstring str_replace (","" "$suchstring); //Ersetzt alle Kommas durch Leerzeichen
    
$suchstring str_replace ("+"" "$suchstring); //Ersetzt alle + durch Leerzeichen
    
    //Dann teilst du den String anhand der Leerzeichen auf und
    //bekommst ein Array mit den Teilen zurück
    
$suchstring explode (" "$suchstring);
    
    
//Zähle die Werte des Arrays:
    
$anz count ($suchstring);
    
    
//Sende die einzelnen Anfragen an die DB
    
for ($i=0$i<$anz; ++$i) {
        
$suche $suchstring[$i];        
        
//Dieses Suchwort kannst du jetzt an die DB senden
        
$sql "SELECT * FROM ".$dblan."_news WHERE eintrag LIKE '%$suche%' 
OR titel LIKE '%$suche%' OR kategorie LIKE 
'%$suche%' ORDER BY id DESC"
;
        
//...
    
}
?>
Habs jetzt nicht ausprobiert, aber vom Prinzip her sollte es funktionieren!

Geändert von wahsaga (12-12-2006 um 23:06 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 12-12-2006, 22:54
nOe
 Registrierter Benutzer
Links : Onlinestatus : nOe ist offline
Registriert seit: Nov 2006
Ort: GAMERny
Beiträge: 253
nOe ist zur Zeit noch ein unbeschriebenes Blatt
nOe eine Nachricht über ICQ schicken
Standard

Macht da mal irgendwie was gegen die Überbreite, ist ja furchtbar sowas!

Also ich hatte damals ein Script entworfen, wo man News eintragen konnte. Dann wurde jedes Wort innerhalb dieses Newseintrages in eine separate Datenbank gepackt. (Erst wird der String in Arrays gepackt und ,.- & Konsorten rausgenommen...) Jedes Wort bekommt eine eigene ID (Haupt-ID) und eine Newseintrags-ID (Neben-ID).
Beispiel: Würde der Newseintrag "Ich lebe noch immer bei Mutti." heißen, würden die Datenbankeinträge so aussehen:

PHP-Code:
-------------------------------
ID |     News_ID    Wort  |
-------------------------------
|  
|       1        Ich   |
|  
|       1        lebe  |
|  
|       1        noch  |
|  
|       1        immer |
|  
|       1        bei   |
|  
|       1        Mutti |
------------------------------- 
Und dann brauchst du nur diese "Neben-Tabelle" Abfragen. Da wo dann die meisten Übereinstimmungen gefunden werden, sollte dir natürlich ausgegeben werden... Klappt auf jeden Fall

mfg nOe

PS: Und für die "Schlaumeier" unter euch: Ja, die Neben-Tabelle wird ziemlich schnell ziemlich sehr viel groß. Aber selbst bei einer Million-IDs bekommt der User nicht wirklich viel von der Wartezeit mit. Es sei denn, ihr habt noch einen 486er mit 100MHz und ein 28,8k Modem
__________________
"I am what I am and I do what I can..."
Meine HP -- Mein GPG-Key
Meine Projekte: WebStorage 2.0 -- easyAJAX-Chat 2.2.0 (beta)

Geändert von nOe (12-12-2006 um 22:56 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 27-12-2006, 18:23
Nosferatu_v
 Newbie
Links : Onlinestatus : Nosferatu_v ist offline
Registriert seit: Dec 2006
Beiträge: 4
Nosferatu_v ist zur Zeit noch ein unbeschriebenes Blatt
Nosferatu_v eine Nachricht über ICQ schicken
Standard

@Mathis sry das ich mich jetzt erst melde hab es nun ausprobiert, zur hälfte läuft es, jedoch gibts ein etwas großes problem

wenn ich zb nun:

Games Serie mache, werden 5 einträge angezeigt was ok ist. wenn ich aber

Games + Serie oder Games, Serie mache, so werden dann wieder alle angezeigt und nicht diese 5 sondern einfach alles

und mein eintragszähler der nach einträgen blättern sollte zeigt immer das falsche ergebnis an immer die einträge vom ersten such wort, also wie beim ersten sind es Games 4 und serie 1 somit werden dann 4 einträge angezeigt obwohl 5 sichtbar sind wenn ich serie games mache wird 1 angezeigt statt 5

woran liegt das ?

hier der test

http://www.pj-firepower.com/site.php?page=53&d=&lan=1

und hier mein code

PHP-Code:
<form method="post" <?php echo "action=site.php?page=53&d=$d&lan=$lan"?>>
<?php echo "$text203"?>: <input type='text' name='suchen'>
<input type='submit' value='Suchen!'>
</form>


<?
    
require_once("include/queryList.php");

$suchstring "$suchen";

$suchstring str_replace (","" "$suchstring);
$suchstring str_replace ("+"" "$suchstring);

$suchstring explode (" "$suchstring);

$anzz count ($suchstring);

for ( 
$i=0$i<$anzz; ++$i) {
     
$suche $suchstring[$i];

$sql "SELECT * FROM ".$dblan."_news WHERE eintrag LIKE '%$suche%' OR titel LIKE '%$suche%' OR kategorie LIKE '%$suche%' ORDER BY id DESC";

# syntax: queryList( $sql, $link, $page, [$rowsPerPage [, $pageLimit ]])
    
$queryList = new queryList$sql"site.php?page=53&d=$d&lan=".$lan."&"$pa );
    
$result mysql_query ($queryList->sql);
?>
<?

    
if(mysql_num_rows($result))
{
while(
$row=mysql_fetch_array($result))
{
$id $row['id'];

$new_query "SELECT * FROM ".$dblan."_knews WHERE id='$id'";

$res mysql_query($new_query);

$anzahl mysql_num_rows($res);
{
$id $row['id'];

echo 
"<table border='0' width='500' class='ntable'>
<tr hight=1 class='ntr'><td width='500' class='newstitle'><b>"
; echo "$row[kategorie]"; echo "&nbsp;:&nbsp;"; echo "$row[titel]"; echo "</b></td></tr>
<tr class='nntr'><td width='500' class='ntd'>$text204: <a href='mailto:"
.$row[email]."'>".$row[name]."</a></td></tr>
<tr class='nntr'><td width='500' class='ntd'>"
.$row[datum]."</td></tr>
<tr class='nntr'><td width='500' class='ntd'>"
;
eval(
"?>".nl2br($row['eintrag']));

echo 
"</td></tr>
<tr class='nntr'><td width='500' class='ntd'><p align='right'><a href='"
;
echo 
"site.php?page=52&lan=$lan&id=$id&d=$d'>$text205 $anzahl";
echo 
"</a></p></td></tr></table><br>";
}
}
}
}
?>
<?
    
if($queryList->total >= 1) { echo "<br>Displaying records <font color=red>$queryList->start</font> - 
    <font color=red>$queryList->stop</font> of <font color=red>$queryList->total</font>."
; }
    if(
$queryList->pas 1) { echo "<br>Pages ( $queryList->pas ) : $queryList->result "; }
?>

und @nOe deines würde in kürzerster zeit enorm viel datenbank speicher fressen wenn ich da dann richtig los lege wenn es läuft und ich dann pro tag 2-3 news online stell brauch ich ja bald ne eigene db nur für die news lol aber danke dir trozdem
Mit Zitat antworten
  #5 (permalink)  
Alt 27-12-2006, 18:29
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

Die nativen Volltext-Suchmöglichkeiten von mySQL sind bekannt? Die decken eine Menge ab, auch und vor Allem die Suche nach mehreren Schlüsselwörtern, Wildcards und Gewichtung.
Mit Zitat antworten
  #6 (permalink)  
Alt 28-12-2006, 10:15
Nosferatu_v
 Newbie
Links : Onlinestatus : Nosferatu_v ist offline
Registriert seit: Dec 2006
Beiträge: 4
Nosferatu_v ist zur Zeit noch ein unbeschriebenes Blatt
Nosferatu_v eine Nachricht über ICQ schicken
Standard

naja mein englisch ist nicht wirklich so besonders
könntest mir jemand das an hand meines scriptes erklären ?
Mit Zitat antworten
  #7 (permalink)  
Alt 28-12-2006, 14:49
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

http://www.schefter.net/deutsch/tech...textsuche.html
Mit Zitat antworten
  #8 (permalink)  
Alt 29-12-2006, 09:02
Nosferatu_v
 Newbie
Links : Onlinestatus : Nosferatu_v ist offline
Registriert seit: Dec 2006
Beiträge: 4
Nosferatu_v ist zur Zeit noch ein unbeschriebenes Blatt
Nosferatu_v eine Nachricht über ICQ schicken
Standard

ah ok danke sehr.


wenn ich das richtig verstehe brauch ich

PHP-Code:

$suchstring 
str_replace (","" "$suchstring);
$suchstring str_replace ("+"" "$suchstring); 
den teil nicht mehr


und mache statt
PHP-Code:
$sql "SELECT * FROM ".$dblan."_news WHERE eintrag LIKE '%$suche%' OR titel LIKE '%$suche%' OR kategorie LIKE '%$suche%' ORDER BY id DESC"
das
PHP-Code:
SELECT FROM autoren WHERE MATCH (nameAGAINST ('$suche' IN BOOLEAN MODE); 
und lass den wörtern das + und - ist das richtig ???

und wie mache ich das mit den "ganzer text" ?
Mit Zitat antworten
Antwort

Lesezeichen


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

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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
FAQ Script PHP ansehen FAQ Script PHP

FAQ Script PHP is a simple knowledgebase script and you could use it as a Frequently Asked Question section on your website. It is written in PHP and MySQL.

14.01.2019 nevenov | Kategorie: PHP/ FAQ
Admidio Mitgliederverwaltung

Admidio ist eine kostenlose Online-Mitgliederverwaltung, die für Vereine, Gruppen und Organisationen optimiert ist. Sie besteht neben der Mitgliederverwaltung aus einer Vielzahl an Modulen (Foto-, Download-, Terminverwaltung), die in eine neue oder besteh

08.01.2019 webmaster52@ | Kategorie: PHP/ Groupware
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:48 Uhr.