Oprettet lør. d. 02. oktober 2004 kl. 21:28:31

princewhite
princewhite (13.870 point. Point ude: 815)

Søgning

Jeg må erkende jeg stadigvæk er på "spade" stadiet i den her verden, og søger derfor en der kan poste et fuldstændigt script på en søge funktion. Skal bruge en simple søgefunktion der kun søger i 1 kolonne i samme tabel.. Altså den skal søge i kolonne ID i tabellen medlemmer. Ved match skal den matchende række så vises evt. bare i en kasse eller lignende.. ¨åber nogen har noget liggende :)

Skrevet lør. d. 02. oktober 2004 kl. 21:58:02| #1

arne_v
arne_v (1.005.653 point)
Her kommer et virkeligt simpelt eksempel.

search.html:

<FORM METHOD="POST" ACTION="show.php">
F2: <INPUT TYPE="TEXT" NAME="F2">
<BR/>
<INPUT TYPE ="SUBMIT" VALUE="Søg">
</FORM>

show.php:

<?php
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Test") or die(mysql_error());
?>
<table border="1">
<tr>
<th>F1</th>
<th>F2</th>
</tr>
<?php
$f2 = $_POST["F2"];
$rs = mysql_query("SELECT * FROM T1 WHERE F2 LIKE '%$f2%'") or die(mysql_error());
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
    print "<tr>\n";
    print "<td>" . $row["F1"] . "</td>\n";
    print "<td>" . $row["F2"] . "</td>\n";
    print "</tr>\n";
}
mysql_free_result($rs);
?>
</table>
<?php
mysql_close($con);
?>

Der er en tabel T1 med 2 felter F1 og F2. I søge formen angiver man en streng
og PHP siden viser alle rækker hvor den søgestreng er i F2.

Det kan gøres meget mere avanceret. Men det er da en start.

Skrevet lør. d. 02. oktober 2004 kl. 22:02:37| #2

hmortensen
hmortensen (62.879 point)
Noget i den her retning. Skal den søge efter noget, eller skal d bare ha en bestemt række med et bestemt id ?

<form method="get" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
    ID:<br>
    <input type="text" name="id"><br>
    <input type="submit">
</form>


<?php
                         

if (isset($_GET["search"])) {

mysql_connect("server", "brugernavn", "kodeord");
mysql_select_db("database");

    $query = mysql_query("SELECT * FROM medlemmer WHERE id = '".$_GET["id"]."'");
    $antal = mysql_num_rows($query);
    if ($antal > 0) {
        while ($row = mysql_fetch_array($query)) {
            echo $row["felt1"]." - ".$row["felt2"]."<br>";
        }
    }
}

?>

Skrevet lør. d. 02. oktober 2004 kl. 22:05:43| #3

princewhite
princewhite (13.870 point)
vil lige prøve begge.

hindu> det skal bare være sådan, at hvis jeg eksempelvis har 100 forskellige ID i min db og jeg skriver 3 id søgefeltet, så viser den række 3 og ikke andet ..

Skrevet lør. d. 02. oktober 2004 kl. 22:07:47| #4

hmortensen
hmortensen (62.879 point)
Ok, så havde jeg forstået det rigtigt

Arne's laver en rigtig søgning, hvor min udgave blot vælger en række, hvor id = det indtastede

Skrevet lør. d. 02. oktober 2004 kl. 22:08:05| #5

princewhite
princewhite (13.870 point)
Så måske er søgefunktion overflødig hvis man eksempelvis kan lave en form for SHOW?

Skrevet lør. d. 02. oktober 2004 kl. 22:11:48| #6

hmortensen
hmortensen (62.879 point)
Du kan jo prøve at fortælle hvad du vil lave, så kan det være vi kan lave en bedre løsning.

Måske vil du hellere ha listet alle navne, og så når du trykker på et navn, så får du alle oplysninger om den person

Skrevet lør. d. 02. oktober 2004 kl. 22:13:19| #7

princewhite
princewhite (13.870 point)
Se :) det var faktisk det jeg oprindeligt helst ville have, men tænkte at det nok var for kompliceret til at nogen gad bruge tid på at hjælpe.. :)

Skrevet lør. d. 02. oktober 2004 kl. 22:19:55| #8

arne_v
arne_v (1.005.653 point)
Her er en letter tilrettet version af min kode.

showall.php:

<?php
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Test") or die(mysql_error());
?>
<table border="1">
<tr>
<th>F1</th>
</tr>
<?php
$rs = mysql_query("SELECT * FROM T1") or die(mysql_error());
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
    print "<tr>\n";
    print "<td><a href='showone?F1=" . $row["F1"] . "'>" . $row["F1"] . "</a></td>\n";
    print "</tr>\n";
}
mysql_free_result($rs);
?>
</table>
<?php
mysql_close($con);
?>

showone.php:

<?php
$con = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("Test") or die(mysql_error());
?>
<table border="1">
<tr>
<th>F1</th>
<th>F2</th>
</tr>
<?php
$f1 = $_GET["F1"];
$rs = mysql_query("SELECT * FROM T1 WHERE F1=$f1") or die(mysql_error());
while ($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
    print "<tr>\n";
    print "<td>" . $row["F1"] . "</td>\n";
    print "<td>" . $row["F2"] . "</td>\n";
    print "</tr>\n";
}
mysql_free_result($rs);
?>
</table>
<?php
mysql_close($con);
?>

Skrevet lør. d. 02. oktober 2004 kl. 22:20:43| #9

arne_v
arne_v (1.005.653 point)
showall.php viser første felt og alle rækker, når man klikker på en værdi
så åbner den showone.php som viser alle felter for den række.

Skrevet lør. d. 02. oktober 2004 kl. 22:23:12| #10

hmortensen
hmortensen (62.879 point)
show.php

<?php

mysql_connect("server", "brugernavn", "kodeord");
mysql_select_db("database");
$query = mysql_query("SELECT id, navn FROM medlemmer ORDER BY navn ASC");
    while ($row = mysql_fetch_array($query)) {
        echo "<a href=\"show_member.php?id=".$row["id"]."\">".$row["navn"]."</a><br>";
    }

?>



show_member.php

<?php

if (isset($_GET["id"])) {

    mysql_connect("server", "brugernavn", "kodeord");
    mysql_select_db("database");
    $query = mysql_query("SELECT * FROM medlemmer WHERE id = '".$_GET["id"]."'");
        if (mysql_num_rows($query) == '1') {
            while ($row = mysql_fetch_array($query)) {
                echo $row["navn"]." - ".$row["andenfelt"];
            }
        } else {
            echo "Ugyldig forespørgelse!";
        }
} else {
    echo "Der er ikke valgt et ID!";
}

?>

Skrevet lør. d. 02. oktober 2004 kl. 22:24:47| #11

princewhite
princewhite (13.870 point)
hej Arne, i din showone har man ikke mulighed for at indtaste et nummer og den så finder og viser posten vel?

Skrevet lør. d. 02. oktober 2004 kl. 22:25:55| #12

princewhite
princewhite (13.870 point)
ahh nu giver det mere mening :) vil lige prøve at lege med de to ... takker indtil videre :)

Skrevet lør. d. 02. oktober 2004 kl. 22:26:51| #13

arne_v
arne_v (1.005.653 point)
show one kan kaldes manuelt med:

showone.php?F1=137

Skrevet lør. d. 02. oktober 2004 kl. 22:26:54| #14

hmortensen
hmortensen (62.879 point)
Arne, du er alt for hurtig. Jeg får slet ik set dansk film i fjernsynet ;)

Skrevet lør. d. 02. oktober 2004 kl. 22:41:11| #15

princewhite
princewhite (13.870 point)
Hindu> nu har jeg lige prøvet din og den kan jeg få til at virke helt perfekt :) Er det muligt at integrere noget alm kode i det her således når man klikker på ID og kommer ind i detaljerne, så kommer det frem pænt struktureret, måske i en kasse?? har prøvet lidt forskelligt, men får bare diverse parse errors :)

Skrevet lør. d. 02. oktober 2004 kl. 22:43:02| #16

hmortensen
hmortensen (62.879 point)
Du kan lige lave en html box som den skal se ud, og smide koden her, så skal jeg sætte det ind for dig. Der hvor du vil ha udskrevet variabler, der skriver du bare fx $navn, så retter jeg det til

Skrevet lør. d. 02. oktober 2004 kl. 22:53:10| #17

-xyz-
-xyz- (19.426 point)
Arne_v <- ville det ikke være en fordel at bruge GET til søgefeltet da du kan kopiere det i browseren?

Skrevet lør. d. 02. oktober 2004 kl. 22:54:49| #18

princewhite
princewhite (13.870 point)
ok :) men tror du fortryder hurtigt :) har omkring 40 kolonner *GG* anyway idag har jeg et output skema, som jeg faktisk er glad for, som er lavet som en almindelig html fil.

Giver lige en lille bid
__________________________-

<?php
mysql_connect("localhost", "xxxx", "xxx");
mysql_select_db("users");

$sql = mysql_query("SELECT navn, id, tekst FROM medlemmer");

while ($row = mysql_fetch_array($sql)) {
?> 

<body bgcolor="#4C6161">
<table width="100%" cellpadding="0">
    <tr>
        <td width="100%"><div class="headline">ID: <b><?php echo $row["id"]; ?></b> </div></td>
        <td rowspan="4" valign="top"></td>
    </tr>
    <tr>
        <td height="1" bgcolor="#000000"></td>
    </tr>
    <tr><td>&nbsp;</td></tr>
    <tr>
        <td>
            <table width="100%" cellpadding="0">


<tr>
                    <td height="20"><b>Navn</b></td>
                    <td width="20">&nbsp;</td>
                    <td><?php echo $row["navn"]; ?></td>
                </tr>

                <tr>
                    <td height="20"><b>Tekst</b></td>
                    <td width="20">&nbsp;</td>
                    <td><?php echo $row["tekst"]; ?></td>
                </tr>

Og så fortsætter den derud af i samme stil :)

Er den mulig at integrere enten den ene vej eller den anden?

Skrevet lør. d. 02. oktober 2004 kl. 22:55:11| #19

arne_v
arne_v (1.005.653 point)
Måske.

Måske vil man synes at det er en fordel at man ikke kan se de sendte parametre.

Det afhænger af omstændighederne.

Skrevet lør. d. 02. oktober 2004 kl. 22:58:14| #20

hmortensen
hmortensen (62.879 point)
Du sagtens bruge det du har der. Du skal bare lige stoppe php koden inden din html kommer, og så lige huske at slutte while løkken til sidst:
<?php
}
?>

Skrevet lør. d. 02. oktober 2004 kl. 23:05:44| #21

princewhite
princewhite (13.870 point)
kan det passe den så vil se ca. sådan her ud?

<?php

if (isset($_GET["id"])) {

    mysql_connect("localhost", "xxxxx", "xxxxx");
    mysql_select_db("xxxxx");
    $query = mysql_query("SELECT * FROM medlemmer WHERE id = '".$_GET["id"]."'");
        if (mysql_num_rows($query) == '1') {
            while ($row = mysql_fetch_array($query)) {
?>

<html>
fyld
<html>

<?php
}
?>

Skrevet lør. d. 02. oktober 2004 kl. 23:07:13| #22

hmortensen
hmortensen (62.879 point)
Ja, så udskriver du bare som du har gjort i det andet:

<?php echo $row["feltnavn"]; ?>

Skrevet lør. d. 02. oktober 2004 kl. 23:10:12| #23

princewhite
princewhite (13.870 point)
se nu giver det mening oppe i hovedet, hvilket jeg er glad for, men på skærmen laver den bøvl *GG* får kostant parse errors på den opsætning..

Skrevet lør. d. 02. oktober 2004 kl. 23:12:46| #24

hmortensen
hmortensen (62.879 point)
Hvor laver den fejl ?

Skrevet lør. d. 02. oktober 2004 kl. 23:14:22| #25

princewhite
princewhite (13.870 point)
Parse error: parse error, unexpected $ 

på en af de sidste linier

Skrevet lør. d. 02. oktober 2004 kl. 23:15:31| #26

princewhite
princewhite (13.870 point)
for at være helt præcis er den aller sidste linie 

?>

Skrevet lør. d. 02. oktober 2004 kl. 23:17:01| #27

hmortensen
hmortensen (62.879 point)
Tror du har glemt at lukke en php kode, eller startet en for meget, eller glemt et semikolon

Skrevet lør. d. 02. oktober 2004 kl. 23:22:01| #28

princewhite
princewhite (13.870 point)
HAHAHA det hjalp at putte det sidste kode på DOOHHHH .. ligger du svar og mange tusind tak :)

Skrevet lør. d. 02. oktober 2004 kl. 23:23:18| #29

hmortensen
hmortensen (62.879 point)
Det var så lidt

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Udtræk af enkelte felter fra bestemte kolonner i mysql

Oprettet den 11. februar 2012 kl. 19.27
hrole giver 30 point for svar | Giv et svar »

Procentregning

Oprettet den 11. februar 2012 kl. 11.26
sevinding giver 60 point for svar | Giv et svar »

Ville ikke tildele at upload det til database eller komme...

Oprettet den 10. februar 2012 kl. 21.23
tobrukDk giver 15 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger