Avatar billede kappel Nybegynder
22. august 2003 - 09:08 Der er 37 kommentarer og
1 løsning

søgefunktion - fejl

Jeg er ved at få en søgefunktion på min side, jeg har brugt seekv2 fra web-ting.

Men jeg får følgende fejlmeddelse:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /customers/kappels.net/kappels.net/httpd.www/super6/soeg/seek.php on line 24
Din søgning på: ellidshøj if gav resultater
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/kappels.net/kappels.net/httpd.www/super6/soeg/seek.php on line 27


Jeg kan simpelthen ikke gennemskue hvad det er, er der nogle der akn hjælpe...

Mikkel
Avatar billede krestian Nybegynder
22. august 2003 - 09:33 #1
Lad os se sql-strengen...
Avatar billede kappel Nybegynder
22. august 2003 - 09:38 #2
Er dette nok?

mysql_connect("$host", "$loginname", "$password") or die (mysql_error());
mysql_select_db("$database") or die (mysql_error());

$sql = mysql_query("select titel, PASSWORD(id) AS link, hits from downlist where titel like '%$seek%'");
$number = mysql_num_rows($sql);
print  "Din søgning på: <b>$seek</b> gav $number resultater";

while ($row = mysql_fetch_array($sql)) {
print "<li><b><a href=\"scripts.php?Download=$row[link]\" target=\"_blank\">$row[titel]</a></b> ($row[hits] Hits)</li>";
}
} elseif ($sog) {
print "Du skrev ikke noget søgeord!!";
} else {
}
?>
Avatar billede detox Nybegynder
22. august 2003 - 10:45 #3
Prøv:

$sql = mysql_query("select titel, PASSWORD(id) AS link, hits from downlist where titel like '%$seek%'") or die(mysql_error());
Avatar billede schaefner Juniormester
22. august 2003 - 10:49 #4
$sql = mysql_query("SELECT titel, hits, PASSWORD(id) AS link FROM downlist WHERE titel LIKE '%$seek%'") or die(mysql_error());

Du er også sikker på at register_globasl er slået til?
Avatar billede schaefner Juniormester
22. august 2003 - 11:00 #5
register_globals
Avatar billede kappel Nybegynder
22. august 2003 - 11:01 #6
Table 'kappels_net.downlist' doesn't exist

Kan det have noget at gøre med, at jeg kun har en database og deri oprettet tabeller?
Avatar billede kappel Nybegynder
22. august 2003 - 11:01 #7
Hvad er register_globals

Og hvordan tjekker man det?
Avatar billede detox Nybegynder
22. august 2003 - 11:06 #8
Ja, den fortæller dig i hvert fald, at du ikke har en tabel (downlist) i databasen kappels_net.
Avatar billede kappel Nybegynder
22. august 2003 - 11:07 #9
jamen jeg har søgt på mikkel? hvad har det med downlist??
Avatar billede detox Nybegynder
22. august 2003 - 11:11 #10
Hedder din database 'kappels_net' og har du en tabel der hedder 'downlist' deri?
Avatar billede kappel Nybegynder
22. august 2003 - 11:11 #11
database = 'kappels_net' men ingen downlist tabel
Avatar billede detox Nybegynder
22. august 2003 - 11:16 #12
så skal du skifte 'downlist' ud med dit 'tabelnavn'
Avatar billede kappel Nybegynder
22. august 2003 - 11:17 #13
jeg har været ved at lede efter det
Avatar billede kappel Nybegynder
22. august 2003 - 11:29 #14
Der er noget galt med det jeg har lavet- kigger lige på det og vender tilbage
Avatar billede schaefner Juniormester
30. august 2003 - 11:42 #15
kappel >> Har du fundet ud af noget?
Avatar billede kappel Nybegynder
30. august 2003 - 13:58 #16
Jeg kan simpelthen ikke finde ud af at lave en søgefunktion til min hjemmeside.
Under min database kappels_net, har jeg flere tabeller som jeg gerne vil give folk mulighed for at søge i. Det er bl.a. news, gbog, linksystem.
Har du et forslag.

Venlig hilsen
Mikkel
Avatar billede schaefner Juniormester
30. august 2003 - 14:12 #17
Prøv at skrive hvilke felter og i hvilke tabeller du ønsker der skal søges.
Avatar billede kappel Nybegynder
31. august 2003 - 08:06 #18
Det er følgende
news: dato, overskrift og text.
gbog: navn, mail og msg.
linksystem: titlen, url og beskrivelse.

Håber det er muligt.
/Mikkel
Avatar billede detox Nybegynder
31. august 2003 - 13:28 #19
Ok, et lille eksempel der søger efter et indtastet ord i tabellen 'news'.
Du laver en side med en form som denne:

<form action="check.php" method="post">
<p>S&oslash;geord: <input name="soeg" type="text" />
<input name="send" type="submit" value="S&oslash;g" /></p>
</form>

Derpå laver du en side 'check.php':

<?
//Connect til din database
if (isset($_POST['soeg']) && $_POST['soeg'] != "") {
    $hvad = $_POST['soeg'];
    $sql = "SELECT * FROM news WHERE overskrift LIKE '% $hvad %' OR text LIKE '% $hvad %'";
    $res = mysql_query($sql) or die(mysql_error());
    $antal_hit = mysql_num_rows($res);
        if ($antal_hit) {
            $str = "Du har søgt på: <font color='#CC0000'>\"$hvad\"</font><br>";
            $str .= "Der blev fundet <font color='#CC0000'>$antal_hit</font> sider:<br><br>";
            while($hit = mysql_fetch_array($res)) {
                extract ($hit);
                $str .= "<h1>".$overskrift."</h1>";
                $str .= "<p>".$dato."</p>";
                $str .= "<p>".$text."</p>";
            }
        }else{
            $str = "Der blev ikke fundet nogen resultater p&aring;: <font color='#CC0000'>\"" . $hvad . "\"</font><br>";
        }
}else{
    $str = "<font color='#CC0000'>Du har ikke s&oslash;gt p&aring; noget!</font><br>";
}
echo $str;
?>
Avatar billede kappel Nybegynder
01. september 2003 - 12:10 #20
Der meldes om følgende fejl:

No Database Selected, hvordan kan det være?

Jeg connecter vha af følgende, som include 'connect.php'; i check.php:
<?php
       
// Connection data

$server = 'localhost';
$username = '...';
$password = '...';
$database = 'kappels_net';
$db = mysql_connect($server, $username, $password) or die(mysql_error("Cannot connect to database"));

?>

Kan du se hvad fejlen er og om connect.php er rigitg?

\Mikkel
Avatar billede detox Nybegynder
01. september 2003 - 18:04 #21
Du mangler at vælge database efter du har oprettet forbindelse. Prøv sådan her:

$s = mysql_connect("localhost", "brugernavn", "password")
      or die("Could not connect: " . mysql_error());
$db = mysql_select_db('databasenavn')
    or die("Ingen database " . mysql_error());
Avatar billede kappel Nybegynder
01. september 2003 - 19:24 #22
ok det virker.

Men datoen bliver vist som 1061557938, altså linux- tid og hele indholdet af text bliver vist.
1. Hvordan vises datoen rigtig?
2. Hvordan gør man sådan, at der kun bliver vist et udpluk af "text" og et link til resten af teksten?
Avatar billede detox Nybegynder
01. september 2003 - 19:33 #23
1.              $str .= "<h1>".$overskrift."</h1>";
                $str .= "<p>".date('d-m-Y',$dato)."</p>";
                $str .= "<p>".$text."</p>";
Avatar billede detox Nybegynder
01. september 2003 - 19:41 #24
2.  $sql = "SELECT id,overskrift, dato, CONCAT( SUBSTRING_INDEX( text,  ' ', 20  ) ,  '...'  )  AS short FROM news WHERE overskrift LIKE '% $hvad %' OR text LIKE '% $hvad %'";
$res = mysql_query($sql) or die(mysql_error());
    $antal_hit = mysql_num_rows($res);
        if ($antal_hit) {
            $str = "Du har søgt på: <font color='#CC0000'>\"$hvad\"</font><br>";
            $str .= "Der blev fundet <font color='#CC0000'>$antal_hit</font> sider:<br><br>";
            while($hit = mysql_fetch_array($res)) {
                extract ($hit);
                $str .= "<h1>".$overskrift."</h1>";
                $str .= "<p>".$dato."</p>";
                $str .= "<a href=\"en_ny_side.php?id=$id\">$short</a><br>\n";
            }
        }else{
  o.s.v...
Avatar billede detox Nybegynder
01. september 2003 - 19:48 #25
en_ny_side.php:

<?
//Connect til din database
$sql = "SELECT * FROM news WHERE id=$_GET[id]";
$res = mysql_query($sql) or die(mysql_error());
$hit = mysql_fetch_array($res)) {
                extract ($hit);
                $str = "<h1>".$overskrift."</h1>";
                $str .= "<p>".$dato."</p>";
                $str .= "<p>".$text."</p>";
echo $str;
?>
Avatar billede detox Nybegynder
01. september 2003 - 19:50 #26
2.  $sql = "SELECT id,overskrift, dato, CONCAT( SUBSTRING_INDEX( text,  ' ', 20  ) ,  '...'  )  AS short FROM news WHERE overskrift LIKE '% $hvad %' OR text LIKE '% $hvad %'";
$res = mysql_query($sql) or die(mysql_error());
    $antal_hit = mysql_num_rows($res);
        if ($antal_hit) {
            $str = "Du har søgt på: <font color='#CC0000'>\"$hvad\"</font><br>";
            $str .= "Der blev fundet <font color='#CC0000'>$antal_hit</font> sider:<br><br>";
            while($hit = mysql_fetch_array($res)) {
                extract ($hit);
                $str .= "<h1>".$overskrift."</h1>";
                $str .= "<p>".date('d-m-Y',$dato)."</p>";
                $str .= "<a href=\"en_ny_side.php?id=$id\">$short</a><br>\n";
            }
        }else{
  o.s.v...
Avatar billede kappel Nybegynder
02. september 2003 - 17:54 #27
Der meldes fejl når der trykkes på linket:

Parse error: parse error, unexpected ')' in /customers/kappels.net/kappels.net/httpd.www/super6/seek/vis_side.php on line 15

vis_side.php = en_ny_side.php
Linie 15 er: $hit = mysql_fetch_array($res)) {
Avatar billede detox Nybegynder
02. september 2003 - 19:03 #28
En uventet ')'. Den skal væk:
$hit = mysql_fetch_array($res) {
Avatar billede kappel Nybegynder
03. september 2003 - 13:23 #29
Så siger den:

Parse error: parse error, unexpected '{' in /customers/kappels.net/kappels.net/httpd.www/super6/seek/vis_side.php on line 15

Linie 15 er:  $hit = mysql_fetch_array($res) {
Avatar billede detox Nybegynder
03. september 2003 - 17:22 #30
Ja, det er noget sjusk:

<?
//Connect til din database
$sql = "SELECT * FROM news WHERE id=$_GET[id]";
$res = mysql_query($sql) or die(mysql_error());
$hit = mysql_fetch_array($res);
                extract ($hit);
                $str = "<h1>".$overskrift."</h1>";
                $str .= "<p>".$dato."</p>";
                $str .= "<p>".$text."</p>";
echo $str;
?>

Det er jo et minimalt eksempel. Du får brug for noget fejlhåndtering og en bedre opstilling. Jeg troede du havde i det mindste et lille begreb om php, men på den anden side lærer du jo noget hen ad vejen.
Avatar billede kappel Nybegynder
03. september 2003 - 21:12 #31
Det troede jeg også - hihi

Men mon ikke det kommer.
Avatar billede kappel Nybegynder
03. september 2003 - 21:18 #32
Det er sejt.
Du har selvfølgelig fortjent dine point.

Men hvis du er klar på at hjælpe er du meget velkommen.
Jeg har opbygget min side: http://super6.kappels.net, på baggrund af et style sheet (eksternt). Dvs. hver side er en standard side hvor jeg inkludere den pågældene side.
Mit problem er så at check.php og vis_side.php ikke bliver inkluderet, er der mulighed for det?

Skriv lige hvis du mangler flere oplysninger...
Avatar billede detox Nybegynder
03. september 2003 - 21:49 #33
Ja, jeg kan ikke se noget i vejen for at du baserer dit site på en standardside, hvor du inkluderer de relevante scripts. Du kan jo sagtens tilføje et formfelt til en søgning i en af dine menuer, eller et link og derudfra inkludere check.php. 'vis_side.php' skal jo ikke inkluderes i den forstand da du bruger det ligesom et billede.
Og her er så et svar. c",)
Avatar billede detox Nybegynder
03. september 2003 - 21:51 #34
PS: Du skulle måske rette lidt ind efter w3c standarden, da jeg ser der er ikke mindre end 259 fejl iflg.:
http://validator.w3.org/check?uri=http%3A%2F%2Fsuper6.kappels.net%2F
Avatar billede detox Nybegynder
03. september 2003 - 22:11 #35
Det med vis_side.php som et billede er selvfølgelig ikke korrekt, det var et helt andet spørgsmål jeg tænkte på...
Avatar billede kappel Nybegynder
04. september 2003 - 17:01 #36
Problemet er at når jeg henviser til check.php i form.htm, når den f.eks. er inkluderet i ex. nyheder.php?
Forstår du?
Avatar billede kappel Nybegynder
04. september 2003 - 17:03 #37
Fordi hvis form henviser til nyheder.php sker der jo ingenting og hvis jeg henviser til check, så vises check uden mit layout.?!
Avatar billede detox Nybegynder
04. september 2003 - 18:01 #38
Kan du så ikke basere check.php på din standardside (med layout)?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Capgemini Danmark A/S

Java Engineer

Forsknings-, Uddannelses- og Digitaliseringsministeriet

Vil du være med at udvikle sikkerhed og compliance i CPR?