Datenbank durchsuchen ^^

m4nueL

Mitglied
Hiho,

erstmal möchte ich euch alle grüßen und nen fättes Lob an die super community hier, werden mich demnächst auch nützlich machen. Respekt !

Nun zum Thema :

Ich bin dabei ein newsscript zu machen aber ich will noch die funktion suchen einbauen.

Er soll in den Spalten "news, titel" nach einem wort/wörtern suchen die ich ihm per formular gebe.
Und das ganze nur in einer datenbank, bei mir "mymlk", aber auch nur in einer Tabelle mit dem namen "news" bei mir.
Wenn er was gefunden hat soll er die 'id' der zeile ausgeben also "$row->id"

Wäre nett wenn mir jmd. helfen könnte, ein kleiner script wäre gut aber kleine anhaltspunkte wären auch nett.

Vielen Dank schon mal im voraus

.mLk.
 
Ich hab ne Frage zu den Tutorial von bad taste :-)
und zwar: Wie geht das? *gg*

Bei mir sieht das ganze in etwa so aus:

<?php $eingabe_array = explode(' ',$eingabe); ?>

<?php
$query = 'select * from table news where '; //anfang der abfrage
for($i=0; $i<count($eingabe_array); $i++){
$query .= "(news_text like '%".$eingabe_array[$i]."%' or ueberschrift like '%".$eingabe_array[$i]."%' or autor like '%".$eingabe_array[$i]."%')";
//ob der $i-te begriff in einer der drei spalten enthalten ist (mit oder verknüpft)
if($i<count($eingabe_array)-1){
$query .= ' and ';
}
//verknüpfung der einzelnen worte mit und
}
?>

<?php


$result = mysql_db_query('db_test',$query);

$num_news = mysql_num_rows($result);

for($i=0; $i<$num_news; $i++){

$news_id = mysql_result($result,$i,'news_id'); //abfrage der news_id von der datenbank

$ueberschrift = mysql_result($result,$i,'ueberschrift'); //abfrage der ueberschift

$news_text = mysql_result($result,$i,'news_text'); //abfrage der news

$first = array_slice(explode(' ', $news_text), 0, 40); //explode teilt den string wieder an der ' ' und array_slice erstellt einen neuen array mit den ersten 40 elementen = worten der news

$kurze_news = join(' ', $first) . '...&nbsp;'; //join verbindet die elemente des arrays wieder zu einem string. am ende werden noch drei punkte angehängt... +

echo '<a href="show_news.php?news_id='.$news_id.'">'.$ueberschrift.'</a><br>'; //links auf die seite show_news.php

echo $kurze_news.'<br><br>'; //der 40 worte lange anfang des newstextes
}


?>

Süß oda? *g* Und jetzt die Fehlermeldung:
Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\dbleague\test2.php on line 32

Line 30: $result = mysql_db_query('db_test',$query);
Line 31: - Leer -
Line 32: $num_news = mysql_num_rows($result);
Line 33: - Leer -
Line 34: for($i=0; $i<$num_news; $i++){

So, nächste frage:
Wo isn da bidde der fehler? :rolleyes:
Ich hab extra ne datenbank mit den namen da eingerichtet so das ich nix verändern musste ... aber das hat nix geholfen, geht trotzdem net

Bidde helft ma! Brauch suchfunktion ...

MFG
SSJSon-Goten
 
Das liegt wahrscheinlich nicht an Zeile 32 sondern an der Select-Abfrage. Vereinfache mal die select-zeile so lange bis es geht (so mach ich das immer)
 
Na zum Beispiel kommentierst Du alles raus und schreibst folgendes und dann schaust Du ob immnoch ne Fehlermeldung kommt (wahrscheinlich kommt dann keine mehr)
Dann weisst du schon mal wo Du nach dem Fehler suchen musst.

$query = "select * from table news where autor='abcdef'"; //einer der in der db vorhanden ist

Meistens setzt man nur ein Anführungszeichen falsch oder vergisst ein Hochkomma oder sowas und ärgert sich dann weil das Script nich geht.
 
Im übrigen: setz mal das select... in anführungszeichen statt hochkommata. (vielleicht liegts ja daran, sollte aber eigneltihc nich)


Ich wollte aber eigentlich damit sagen, dass man nicht gleich mit einem 5zeiligen Query anfangen sollte, weil da schleicht sich meistens ein fehler ein.
 
Zuletzt bearbeitet:
Zurück