Webstatt.org - Community seit 2006 - 2012 (2024?)

datenbank suche

Avatar user-116
10.03.2006 20:13

also ich suche nach einer simplen möglichkeit eine mysql tabelle zu durchsuchen, das alles mit einem suchfeld, und es soll einstellbar sein welche felder durchsucht werden sollen!

und das ergebnis soll in einer html tabelle angezeigt werden, die mann anpassen kann!!

hm hat sowas zufällig wer oder gibt es ein script??

mfg

acidbuRn aka "Fightingfalcon"
Avatar user-253
10.03.2006 21:07

So ein fertiges Script habe ich leider nicht. Aber das Durchsuchen einer Tabelle ist einfach. Die MySQL Syntax:

... WHERE feld LIKE '%suchbegriff%'

Mehrere Felder verknüpfst du mit OR - also


... WHERE feld LIKE '%suchbegriff%' OR feld2 LIKE '%suchbegriff%'

Genauso mehrere Suchbegriffe


... WHERE feld LIKE '%suchbegriff%' OR feld LIKE '%zweiterSuchbegriff%'

Die Ausgabe der Daten erfolgt dann ganr normal wie sonst auch immer. Also mit mysql_fetch_assoc oder deiner präferierten Methode

Avatar user-116
10.03.2006 21:44

<?php
mysql_connect( 'localhost', 'root', '' ) or die( __LINE__.": ".mysql_error() );
mysql_select_db( 'test' ) or die( __LINE__.': '.mysql_error() );
// zu durchsuchende tabelle
$table = 'suchen';
// spalten, nach denen man nicht suchen können soll
$hiddencols = array('id', 'datum', 'link'zwinkern;

$cols = array();
$cols_res = mysql_query( "show columns from `$tabelle`" ) or die( __LINE__.': '.mysql_error() );
while( $col = mysql_fetch_assoc( $cols_res ) ) {
if( in_array( $col['Field'], $hiddencols, true ) ) continue;
$cols[] = $col['Field'];
}

if(empty($_GET['search'])){
// formular
?>
<form method="get">
<?
foreach( $cols as $id => $c ) {
print( $c.': <input type="text" name="field['.$id.']"><br />'."\n" );
}
?>
<input type="submit" name="search" value="suchen">
</form>
<?
} else {
// suchen
$find_where = array();
foreach( $_GET['field'] as $id => $val) { // formular-daten auswerten
$val = trim( $val );
$val = mysql_escape_string( $val );
if( $val == '' || !isset( $cols[$id] ) ) continue; // kein wert bzw. nicht existierende spalte
// BUGFIX 3
$find_where[] = " `{$cols[$id]}` like '%$val%' ";
}
if( count( $find_where ) == 0 ) {
print( 'bitte suchkriterien angeben!' );
} else {
// BUGFIX 1
$find_sql = 'select `'.implode( '`, `', $cols ).'` from `'.$table.'` where '.implode( 'and', $find_where );
$find_res = mysql_query( $find_sql ) or die( __LINE__.': '.mysql_error() );
?>
Ergebnis:
<table border="0">
<tr>
<?
// BUGFIX 2
foreach( $cols as $c ) {
print( "\t\t<th>".$c."</th>\n" );
}
?>
</tr>
<?
while( $row = mysql_fetch_assoc($find_res) ) {
print( "\t<tr>\n" );
foreach($row as $field)
print( "\t\t<td>".$field."</td>\n" );
print( "\t</tr>\n" );
}
?>
</table>
<?
}
}
?>


also das ist ein code der is eig. genau das was ich brauche.. nur wird hier für jedes zu durchsuchende feld ein eigenes input angezeigt.. wie kann man das ändern dass nur ein input suchfeld für alle zu durchsuchenden felder angezeigt wird??

mfg

acidbuRn aka "Fightingfalcon"
Avatar user-255
10.03.2006 21:59

Ahh, mein tolles Suchskript. Siehe Zeile 6,7.

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-116
10.03.2006 22:13

Original von user-255
Ahh, mein tolles Suchskript. Siehe Zeile 6,7.


genau zwinkern

ja ne ich weiß das man felder wegmachen kann aber ich mein das so das mit EINEM Suchfeld (Input) .. alle felder in der datenbank durchsucht werden! (ausser die hiddenrows)

mfg

acidbuRn aka "Fightingfalcon"
Avatar user-116
11.03.2006 13:08

gebets denn kene möglischkeit det zu machen? zwinkern

acidbuRn aka "Fightingfalcon"
Avatar user-116
11.03.2006 20:44

okayy ich habs jetzt selber hinbekommen *freuu*

guckstdu

//edit: hat sich erledigt hab jetzt alles selber hinbekommen danke lächeln

mfg

acidbuRn aka "Fightingfalcon"