php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.07.2010, 14:36  
Benutzer
 
Registriert seit: 11.09.2006
Beiträge: 48
zoro
Standard Suche in Datenbank

Hallo zusammen,

ich habe folgendes zu bewältigen:

Datenbank mit Tabelle dokumente
Diese hat folgende Spalten: id, file

Ich möchte jetzt durch eine Suche auf der Webseite die Spalte file durchsuchen lassen, und jede Zeile die mit der Suche übereinstimmt soll ausgegeben werden.

Habe bereits dies mir zusammengesucht:

Formular:
HTML-Code:
<form action="suche.php" method="post">
            <label for="search" style="float:left; margin-right:15px; color:#999;">Suche</label>
            <input name="search" id="search" type="text" class="formfeld" value="<?=$_SESSION['search']?>" />
            <input name="suche" id="suche" type="submit" class="formbutton" value="s" />
            </form> 
Ausgabe:

PHP-Code:
<?php
// Suche
if ($_GET["suche"]!=""){
    
$_GET["suche"] = stripslashes ($_GET["suche"]);
    
$_SESSION['suchstring']=$_GET["suche"];
    
$_SESSION['suche']=true;
}
else{
    if (
$_POST['suche']) {
        
$_SESSION['suche']=true;
    }
    
$suchstring "";
    
// Fulltext
    
if ($_POST['suche']) {
        if (
$_POST['search']) {
            
$_SESSION['search']=$_POST['search'];
        }
        else {
            unset (
$_SESSION['search']);
        }
    }
    if (
$_SESSION['search']) {
        
$suchstring " match(file) against('".$_SESSION['search']."' IN BOOLEAN MODE)";
    }
    
// Ende Fulltext
    
$_SESSION['suchstring']=$suchstring;
}
if (
$_GET["seite"] == "") {
    
$_GET["seite"] = 1;
}

// Alle Einträge
if ($_SESSION['suche']==true) {
    
$db_all_string "SELECT * FROM dokumente WHERE";
    
$db_all_string .= $_SESSION['suchstring'];
    
#echo $db_all_string;
    
$db_all_abfragen = @mysql_query ($db_all_string,$db_connect);
    
$max_all=mysql_num_rows($db_all_abfragen);
    
// Ende Alle Einträge
    
    
$maxanzahl=10;
    
$maxseiten=ceil($max_all/$maxanzahl);
    
$start=($_GET["seite"]-1)*$maxanzahl;
}
#echo $max_all;
?>
<!--Datenbank abfrage-->
<?php
if ($max_all>0) {
    
$db_sort_string "SELECT * FROM dokumente WHERE";
    
$db_sort_string .= $_SESSION['suchstring'];
    
$db_sort_string .= " ORDER BY zeitstempel ASC";
    
$db_sort_string .= " LIMIT ".$start.",".$maxanzahl;
    
#echo $db_sort_string;
    
$db_abfragen = @mysql_query ($db_sort_string,$db_connect);
    
$max=mysql_num_rows($db_abfragen);
    for (
$i=0$i<$max$i++) {
        
$zeile mysql_fetch_array ($db_abfragenMYSQL_BOTH);
        if (
$zeile["file"] != "") {
            echo 
"<p class=\"bottom_kl\">";
            echo 
"<a href=\"php/dokumente/files/$zeile[file]\" target=\"_blank\">";
            echo 
"<img src='php/images/download/";
            
$symbol=array_reverse(explode(".",$zeile["file"]));
            echo (
strtolower($symbol[0]));
            echo 
"_gr.gif' alt='Datei herunterladen'>";
            echo 
"</a> ";
            echo 
"<a href=\"php/dokumente/files/$zeile[file]\" target=\"_blank\">".$zeile["file"]."</a>";
            echo 
"&nbsp;</p>";
        }
    }
}
else {
    echo 
'<p style="margin-left:15px">Leider keine Dateien gefunden</p>';
}
?>
<!--Ende Datenbank abfrage-->
<!-- Seitenfunktion -->
<?php
if ($maxseiten>1) {
if (
$_GET["seite"]==1) {
$vorwaerts='<a class="links_email" href="'.$PHP_SELF.'?seite=2&suche='.$_SESSION['suchstring'].'">nächste Seite &raquo;</a>';
}
if (
$_GET["seite"]>&& $_GET["seite"]<$maxseiten) {
$back=$_GET["seite"]-1;
$vor=$_GET["seite"]+1;
$rueckwaerts='<a class="links_email" href="'.$PHP_SELF.'?seite='.$back.'&suche='.$_SESSION['suchstring'].'">&laquo; vorige Seite</a>';
$vorwaerts='<a class="links_email" href="'.$PHP_SELF.'?seite='.$vor.'&suche='.$_SESSION['suchstring'].'">nächste Seite &raquo;</a>';
}
if (
$_GET["seite"]==$maxseiten) {
$back=$_GET["seite"]-1;
$rueckwaerts='<a class="links_email" href="'.$PHP_SELF.'?seite='.$back.'&suche='.$_SESSION['suchstring'].'">&laquo; vorige Seite</a>';
}
}
?>
<!-- Seitenfunktion -->
<div id="seiten">
<div id="back"><? echo $rueckwaerts;?></div>
<div id="next"><? echo $vorwaerts;?></div>
</div>
Funktioniert auch, wenn ich nach dem kompletten Namen in der Spalte file suche.
Möchte z.B. aber auch nur nach allen Einträgen suchen können, die "xxx" im Namen enthalten.

Kann mir da jemand bitte zur Hand gehen?
Danke
zoro ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 30.07.2010, 14:44  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.873
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

PHP-Code:
SELECT somewhat FROM somewhere WHERE something LIKE something ORDER BY somewhat LIMIT sometimes 
PHP-Code:
SELECT somewhat FROM somewhere WHERE something '%something%' ORDER BY somewhat LIMIT sometimes 
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline  
Alt 30.07.2010, 14:58  
Benutzer
 
Registriert seit: 11.09.2006
Beiträge: 48
zoro
Standard

Das wäre dann also so:

PHP-Code:
$db_all_string "SELECT * FROM dokumente WHERE file = '%test%' ORDER BY file ASC LIMIT 0,10"
d.h. er soll in der Spalte file nach test suchen und alle zeilen ausgeben, welche test irgendwo im namen enthalten.
Findet aber leider nichts.

Was ist falsch?
zoro ist offline  
Alt 30.07.2010, 15:00  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Code:
LIKE '%something%'
war gemeint. Beim LIKE Operator ist % ein Platzhalter für beliebigen Inhalt.
fab ist offline  
Alt 30.07.2010, 15:02  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.020
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Und wenn du like verwendest brauchst du auch keinen Volltext-Index.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline  
Alt 30.07.2010, 15:08  
Benutzer
 
Registriert seit: 11.09.2006
Beiträge: 48
zoro
Standard

Versteh ich nicht ganz. Was muss ich noch einfügen, damit es mir etwas ausgibt?

PHP-Code:
$db_all_string "SELECT * FROM dokumente WHERE file LIKE 'test' ORDER BY file ASC LIMIT 0,10"
hier bekomme ich auch kein ergebniss raus
zoro ist offline  
Alt 30.07.2010, 15:09  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.873
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von fab Beitrag anzeigen
Code:
LIKE '%something%'
war gemeint. Beim LIKE Operator ist % ein Platzhalter für beliebigen Inhalt.
narf, ja. Ist nen bissl her als ich LIKE-Queries gebaut hab
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline  
Alt 30.07.2010, 15:13  
Benutzer
 
Registriert seit: 11.09.2006
Beiträge: 48
zoro
Standard

Vielen Dank.

hat vorher wahrscheinlich auch schon funktioniert, hab nur nicht aktualisiert.

Geht jetzt einwandfrei.

Hier der richtige Code:
PHP-Code:
$db_all_string "SELECT * FROM dokumente WHERE file LIKE '%test%' ORDER BY file ASC LIMIT 0,10"
zoro ist offline  
 


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
php datenbank suche, mysql mpheppenheim PHP Tipps 2010 4 07.05.2010 12:45
[Erledigt] Suche - Wortmanipulation vaLLe PHP Tipps 2009 30 24.08.2009 20:17
eine Suche definieren Tyrra PHP Tipps 2009 14 10.07.2009 09:39
Datenbank Suche mit mehreren Variablen BjoernSchmitt PHP Tipps 2009 34 22.03.2009 11:13
suche in der datenbank scheffie PHP Tipps 2009 3 16.02.2009 22:25
Suche in Datenbank realisieren Unbekanntes_Pferd PHP Tipps 2007 4 09.11.2005 16:22
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
mal wieder eine suche lomtas Datenbanken 0 12.07.2005 11:03
Suche Serveradmin für Erstinstallation und kontin. Betreuung Beitragsarchiv 0 10.05.2005 21:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
in datenbank suchen, datenbank suche, datenbank suchen, php datenbank eintrag suchen, suchen in datenbanken, suche datenbank, suche in datenbanken, suche in datenbank, suchfunktion im formular für datenbanken php, php suche in datenbank, suchen in datenbank php, suchen in einer datenbank, suche in datenbank php, datenbanken suche, datenbanken suchen, php suchen in datenbank, php in datenbank suchen, php suchfunktion datenbank, suche datenbank php, suchen datenbank php

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:09 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