php.de

Zurück   php.de > php.de Intern > Off-Topic Diskussionen

Off-Topic Diskussionen Mach mal Pause vom Programmieren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.05.2004, 08:10  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.150
Guradia befindet sich auf einem aufstrebenden Ast
Standard Diskussion zu Tutorial MySQL-Datenbank durchsuchen

edit by Tobias: Original-Thread hier: http://www.phpfriend.de/forum/viewtopic.php?t=15352

Idee: Gut
Ausführung: Verbesserungswürdig ^^

Variante:

Code:

<?php

$keywords       = 'in mysql db suchen';
$association    = "\n".' AND ';
$keywords       = explode(' ', $keywords);

$query = array(); 

foreach ($keywords as $keyword) { 
    $query[] = "(   `name_des_ersten_felds`     LIKE '%".$keyword."%'
                OR  `name_des_zweiten_felds`    LIKE '%".$keyword."%'
                OR  `name_des_dritten_felds`    LIKE '%".$keyword."%'
                OR  `und_so_weiter`             LIKE '%".$keyword."%')
                ";
} 

$query = implode($association, $query); 

$sql = "
    SELECT  *
    FROM    `name_der_tabelle`
    WHERE   ".$query."
;"
$res = mysql_query($sql);

if (!$res) {
    /**
     * Diese Zeilen das SQL-Statement in recht lesbarer Form aus.
     */
    print '<pre>';
    print $sql;
    print '</pre>';
    /**
     * E_USER_ERROR führt zu Abbruch des Scripts.
     * E_USER_NOTICE und E_USER_WARNING, lassen das Script weiterlaufen
     */
    trigger_error('Datenbankanfrage schlug fehl: '.mysql_error(), E_USER_ERROR);
} else {
    /**
     * Hier die Routi(e)nen zum Auslesen des RecordSets einfügen. 
     */
}

?>
Guradia ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.05.2004, 09:50  
Tobias
Gast
 
Beiträge: n/a
Standard

hi,

hab jetzt mal deine variante zum teil übernommen,
$association hab ich getrennt gelassen,
damit das mit den RADIO-Input-Feldern besser funktioniert..
die MySQL-Queries mach ich eigentlich nie so ordentlich,
dem verarbeitenden Programm ist's ja egal, in wieviel Zeilen verteilt die Abfrage ankommt^^ - aber für ein Tut ist's so wohl besser
  Mit Zitat antworten
Alt 28.05.2004, 09:53  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.150
Guradia befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von toweter
- aber für ein Tut ist's so wohl besser
Auch beim Rausrotzen in <pre> ... wesentlich angenehmer so einen Fehler nachzuverfolgen, als in ein Kettensatz ^^
Guradia ist offline   Mit Zitat antworten
Alt 22.10.2004, 14:50  
Gast
 
Beiträge: n/a
Standard

Hallo Tobias,
habe deine Suchroutine für eine Datenbankabfrage übernommen. Klappt bis zu folgendem Punkt.
Ich sende dir mal den ganzen Code:
<HTML>
<BODY>
<?php

//Verbindung mit der Datenbank herstellen//
$host = "www.schulreferat-herford.de";
$username = "xxxxx";
$password = "xxxxx";
mysql_connect (schulreferat-herford,xxxxx,xxxxx);
mysql_select_db("xxxxx");
//Suchworte festlegen//
$keywords = 'Advent Weihnachten Ostern Pfingsten';
//Verknuepfung festlegen//
$association = 'AND';
//Auseinandernehmen der Suchworte//
$keywords = explode(" ",$keywords);
//Umwandeln der Suchworte//
$query = array();
foreach($keywords as $keyword) {
$query[] = "( `f200` LIKE '%".$keyword."%'
OR `f300` LIKE '%".$keyword."%'
OR `f720` LIKE '%".$keyword."%'
OR `f800` LIKE '%".$keyword."%')
";
}
//Zusammenfügen der Suchworte//
$query = implode("\n ".$association." ",$query);
//Suchanfrage senden//
$sql = " SELECT * FROM literatur WHERE '.$query.'";

//$res = mysql_query($sql);
//if (!$res) {
// /**
// * Diese Zeilen geben das SQL-Statement in recht lesbarer Form aus.
// */
// print '<pre>';
// print $sql;
// print '</pre>';
// /**
// * E_USER_ERROR führt zum Abbruch des Scripts.
// * E_USER_NOTICE und E_USER_WARNING, lassen das Script weiterlaufen
// */
// trigger_error('Datenbankanfrage schlug fehl: '.mysql_error(), E_USER_ERROR);
//} else {
// /**
// * Hier die Routinen zum Auslesen der Suchergebnisse einfügen.
// */
//}
$result = mysql_query($sql);
$number = mysql_num_rows($res);

//Ausgabe der Trefferanzahl//
echo "Es wurden $number Datensätze in Literatur gefunden
";

//Ausgabe der Treffer in Literatur//
FOR ($i=0; $i<$number; $i=$i + 1)
{
$Signatur = mysql_result($result, $i, "f110");
$Ausleihsignatur= mysql_result($result, $i, "f111");
$Verfasser = mysql_result($result, $i, "f200");
$Titel = mysql_result($result, $i, "f300");
$Quellenangaben = mysql_result($result, $i, "f490");

echo "<a href=index.php?id=89&feld1=$Ausleihsignatur>$Ausleihsignatur</A>
(Signatur: $Signatur)

$Verfasser
, $Titel,
$Quellenangaben</br>
__________________________________________________ ___
";
}

?>
</BODY>
</HTML>



Ich erhalte die folgende Fehlermeldung:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /typo3_src-3.6.1/typo3/ext/page_php_content/pi1/class.tx_pagephpcontent_pi1.php(55) : eval()'d code on line 52

Irgendwas muss mit der Zeile
$number = mysql_num_rows($res);
falsch sein. Aber ich weiss nicht was.
Vielleicht hast du eine Idee
  Mit Zitat antworten
Alt 22.10.2004, 15:15  
Gast
 
Beiträge: n/a
Standard

PHP-Code:
<HTML> 
<BODY> 
<?php 

//Verbindung mit der Datenbank herstellen// 
$host "www.schulreferat-herford.de"
$username "xxxxx"
$password "xxxxx"
mysql_connect (schulreferat-herford,xxxxx,xxxxx); 
mysql_select_db("xxxxx"); 
//Suchworte festlegen// 
$keywords 'Advent Weihnachten Ostern Pfingsten'
//Verknuepfung festlegen// 
$association 'AND'
//Auseinandernehmen der Suchworte// 
$keywords explode(" ",$keywords); 
//Umwandeln der Suchworte// 
$query = array(); 
foreach(
$keywords as $keyword) { 
$query[] = "( `f200` LIKE '%".$keyword."%' 
OR `f300` LIKE '%"
.$keyword."%' 
OR `f720` LIKE '%"
.$keyword."%' 
OR `f800` LIKE '%"
.$keyword."%') 
"


//Zusammenfügen der Suchworte// 
$query implode("\n ".$association." ",$query); 
//Suchanfrage senden// 
$sql " SELECT * FROM literatur WHERE '.$query.'"

//$res = mysql_query($sql); 
//if (!$res) { 
// /** 
// * Diese Zeilen geben das SQL-Statement in recht lesbarer Form aus. 
// */ 
// print '<pre>'; 
// print $sql; 
// print '</pre>'; 
// /** 
// * E_USER_ERROR führt zum Abbruch des Scripts. 
// * E_USER_NOTICE und E_USER_WARNING, lassen das Script weiterlaufen 
// */ 
// trigger_error('Datenbankanfrage schlug fehl: '.mysql_error(), E_USER_ERROR); 
//} else { 
// /** 
// * Hier die Routinen zum Auslesen der Suchergebnisse einfügen. 
// */ 
//} 
$result mysql_query($sql); // komisch. hier steht result
$number mysql_num_rows($res); // und hier setzt du res ein... woher kommt das^^?

//Ausgabe der Trefferanzahl// 
echo "Es wurden $number Datensätze in [url=""]Literatur[/url] gefunden
"


//Ausgabe der Treffer in Literatur// 
FOR ($i=0$i<$number$i=$i 1

$Signatur mysql_result($result$i"f110"); 
$Ausleihsignaturmysql_result($result$i"f111"); 
$Verfasser mysql_result($result$i"f200"); 
$Titel mysql_result($result$i"f300"); 
$Quellenangaben mysql_result($result$i"f490"); 

echo 
"<a href=index.php?id=89&feld1=$Ausleihsignatur>[b]$Ausleihsignatur[/b]</A> 
(Signatur: $Signatur) 
 
[b]$Verfasser[/b]
, $Titel,
$Quellenangaben</br> 
_____________________________________________________
"



?> 
</BODY> 
</HTML>
ausserdem hättest du dies ins anfängerforum posten sollen, mit verweis hierher^^
  Mit Zitat antworten
Alt 22.10.2004, 17:59  
Gast
 
Beiträge: n/a
Standard Sorry, mein Fehler

Vielleicht hast du Recht, wäre besser im Anfängerforum gelandet. Ich muss halt nur gelegentlich etwas in meinen Datenbankabfragen ändern.
Vielleicht hilfst du mir auch so weiter:
Habe im Script bei deiner Bemerkung $res durch $result ersetzt. Funktioniert aber immer noch nicht.
Die Fehlermeldung bleibt:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /typo3_src-3.6.1/typo3/ext/page_php_content/pi1/class.tx_pagephpcontent_pi1.php(55) : eval()'d code on line 50
  Mit Zitat antworten
Alt 22.10.2004, 19:03  
Gast
 
Beiträge: n/a
Standard

PHP-Code:
<?php
 
# [...]
//Zusammenfügen der Suchworte//
$query implode("\n ".$association." ",$query);
//Suchanfrage senden//
$sql " SELECT * FROM literatur WHERE ".$query// sorry hier einen fehler übersehen

//$res = mysql_query($sql);
//if (!$res) {
// /**
// * Diese Zeilen geben das SQL-Statement in recht lesbarer Form aus.
// */
// print '<pre>';
// print $sql;
// print '</pre>';
// /**
// * E_USER_ERROR führt zum Abbruch des Scripts.
// * E_USER_NOTICE und E_USER_WARNING, lassen das Script weiterlaufen
// */
// trigger_error('Datenbankanfrage schlug fehl: '.mysql_error(), E_USER_ERROR);
//} else {
// /**
// * Hier die Routinen zum Auslesen der Suchergebnisse einfügen.
// */
//}
$result mysql_query($sql)or die(mysql_error().'
'
.$sql); // mit mysql_error bekommen wir eine 'bessere' fehlermeldung.
$number mysql_num_rows($result);
 
# [...]
?>
jetzt sollte es etweder gehen, oder es kommt eine bessere fehlermeldung.

und vielleicht kann ein moderator ja das thema trennen?
  Mit Zitat antworten
Alt 22.10.2004, 19:37  
Gast
 
Beiträge: n/a
Standard Fehlermeldung

Nun bekomme ich die folgende Meldung/Fehlermeldung

Code:
 SELECT * FROM literatur WHERE '.( `f200` LIKE '%Adv%' 
OR `f300` LIKE '%Adv%' 
OR `f720` LIKE '%Adv%' 
OR `f800` LIKE '%Adv%') 

 OR ( `f200` LIKE '%Weih%' 
OR `f300` LIKE '%Weih%' 
OR `f720` LIKE '%Weih%' 
OR `f800` LIKE '%Weih%') 

 OR ( `f200` LIKE '%Ost%' 
OR `f300` LIKE '%Ost%' 
OR `f720` LIKE '%Ost%' 
OR `f800` LIKE '%Ost%') 

 OR ( `f200` LIKE '%Pfin%' 
OR `f300` LIKE '%Pfin%' 
OR `f720` LIKE '%Pfin%' 
OR `f800` LIKE '%Pfin%') 

 OR ( `f200` LIKE '%Kar%' 
OR `f300` LIKE '%Kar%' 
OR `f720` LIKE '%Kar%' 
OR `f800` LIKE '%Kar%') 
.'
Unbekanntes Tabellenfeld 'Adv' in where clause.
SELECT * FROM literatur WHERE '.( `f200` LIKE '%Adv%' OR `f300` LIKE '%Adv%' OR `f720` LIKE '%Adv%' OR `f800` LIKE '%Adv%') OR ( `f200` LIKE '%Weih%' OR `f300` LIKE '%Weih%' OR `f720` LIKE '%Weih%' OR `f800` LIKE '%Weih%') OR ( `f200` LIKE '%Ost%' OR `f300` LIKE '%Ost%' OR `f720` LIKE '%Ost%' OR `f800` LIKE '%Ost%') OR ( `f200` LIKE '%Pfin%' OR `f300` LIKE '%Pfin%' OR `f720` LIKE '%Pfin%' OR `f800` LIKE '%Pfin%') OR ( `f200` LIKE '%Kar%' OR `f300` LIKE '%Kar%' OR `f720` LIKE '%Kar%' OR `f800` LIKE '%Kar%') .'
Tatsächlich ist ja 'Adv' kein Tabellenfeld, sondern einer der Suchbegriffe, während f200, f300 usw. die Tabellenfelder sind.
  Mit Zitat antworten
Alt 22.10.2004, 19:42  
Gast
 
Beiträge: n/a
Standard

hast du $sql auch geändert?
  Mit Zitat antworten
Alt 22.10.2004, 19:45  
Gast
 
Beiträge: n/a
Standard

Ja, habe da bereits die Suchbegriffe über ein Formular eingegeben. Habe aber vermutlich eben das Problem selbst gelöst, indem ich die Zeile mit der Suchanfrage wie folgt geändert habe:
Zitat:
$sql = " SELECT * FROM literatur WHERE $query";
Ich habe also die Hochkommata rausgenommen und den Punkt vor und nach $query.
Die Ausgabe ist jetzt richtig.
Soweit erst mal vielen Dank.
  Mit Zitat antworten
Antwort


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
Backup einer MySql Datenbank dh1sbg Beitragsarchiv 1 13.04.2008 20:45
Mit php dynamisch Namen von Bildnamen sowie Pfad in mysql Datenbank speichern mallmis PHP Tipps 2008 1 19.11.2007 23:04
Sql Datenbank durchsuchen und vergleichen Teambyte PHP Tipps 2006 5 14.09.2006 11:11
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
Adresse zur MySQL Datenbank Marian Datenbanken 4 10.08.2005 09:47
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
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
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
Ist es möglich die gesamte Datenbank zu durchsuchen??? PHP Tipps 2005-2 2 25.07.2005 16:07
[Erledigt] Mysql Datenbank durchsuchen - Tutorial Datenbanken 5 10.07.2004 13:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
typo3 datenbank durchsuchen, mysql gesamte datenbank durchsuchen, http://www.php.de/off-topic-diskussionen/11014-diskussion-zu-tutorial-mysql-datenbank-durchsuchen.html, mysql datenbank durchsuchen, typo3 db tabelle durchsuchen, script datenbank durchsuchen, php datenbank durchsuchen, datenbank durchsuchen skript, datenbank durchsuchen script, php mysql suche query zusammensetzen array explode, typo3 mysql durchsuchen, mysql durchsuchen such index, php foreach mysql datenbank abfragen tutorial, page_php_content datenbank, typo3 mysql query, script zum durch suchen der datenbank, www.diskussion durchsuchen, typo3 mysql query foreach, mysql ganze datenbank durchsuchen, querie datenbank durchsuchen

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.