Willkommen in der Webstatt Zum Webstatt Blog und Stories
acidbuRn acidbuRn am 10.03.06 21: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

netcup.de Warum gibt es hier Werbung?
Michael Michael am 10.03.06 22: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

acidbuRn acidbuRn am 10.03.06 22: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');

$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

milahu milahu am 10.03.06 22:59

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

acidbuRn acidbuRn am 10.03.06 23:13

Quote
Original von milahu
Ahh, mein tolles Suchskript. Siehe Zeile 6,7.


genau ;)

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 acidbuRn am 11.03.06 14:08

gebets denn kene möglischkeit det zu machen? ;)

acidbuRn acidbuRn am 11.03.06 21:44

okayy ich habs jetzt selber hinbekommen *freuu*

guckstdu

//edit: hat sich erledigt hab jetzt alles selber hinbekommen danke :)

mfg

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt