Avatar billede princewhite Nybegynder
02. oktober 2004 - 21:28 Der er 27 kommentarer og
2 løsninger

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 :)
Avatar billede arne_v Ekspert
02. oktober 2004 - 21:58 #1
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.
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 22:02 #2
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>";
        }
    }
}

?>
Avatar billede princewhite Nybegynder
02. oktober 2004 - 22:05 #3
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 ..
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 22:07 #4
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
Avatar billede princewhite Nybegynder
02. oktober 2004 - 22:08 #5
Så måske er søgefunktion overflødig hvis man eksempelvis kan lave en form for SHOW?
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 22:11 #6
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
Avatar billede princewhite Nybegynder
02. oktober 2004 - 22:13 #7
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.. :)
Avatar billede arne_v Ekspert
02. oktober 2004 - 22:19 #8
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);
?>
Avatar billede arne_v Ekspert
02. oktober 2004 - 22:20 #9
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.
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 22:23 #10
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!";
}

?>
Avatar billede princewhite Nybegynder
02. oktober 2004 - 22:24 #11
hej Arne, i din showone har man ikke mulighed for at indtaste et nummer og den så finder og viser posten vel?
Avatar billede princewhite Nybegynder
02. oktober 2004 - 22:25 #12
ahh nu giver det mere mening :) vil lige prøve at lege med de to ... takker indtil videre :)
Avatar billede arne_v Ekspert
02. oktober 2004 - 22:26 #13
show one kan kaldes manuelt med:

showone.php?F1=137
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 22:26 #14
Arne, du er alt for hurtig. Jeg får slet ik set dansk film i fjernsynet ;)
Avatar billede princewhite Nybegynder
02. oktober 2004 - 22:41 #15
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 :)
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 22:43 #16
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
Avatar billede -xyz- Nybegynder
02. oktober 2004 - 22:53 #17
Arne_v <- ville det ikke være en fordel at bruge GET til søgefeltet da du kan kopiere det i browseren?
Avatar billede princewhite Nybegynder
02. oktober 2004 - 22:54 #18
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?
Avatar billede arne_v Ekspert
02. oktober 2004 - 22:55 #19
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.
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 22:58 #20
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
}
?>
Avatar billede princewhite Nybegynder
02. oktober 2004 - 23:05 #21
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
}
?>
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 23:07 #22
Ja, så udskriver du bare som du har gjort i det andet:

<?php echo $row["feltnavn"]; ?>
Avatar billede princewhite Nybegynder
02. oktober 2004 - 23:10 #23
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..
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 23:12 #24
Hvor laver den fejl ?
Avatar billede princewhite Nybegynder
02. oktober 2004 - 23:14 #25
Parse error: parse error, unexpected $ 

på en af de sidste linier
Avatar billede princewhite Nybegynder
02. oktober 2004 - 23:15 #26
for at være helt præcis er den aller sidste linie 

?>
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 23:17 #27
Tror du har glemt at lukke en php kode, eller startet en for meget, eller glemt et semikolon
Avatar billede princewhite Nybegynder
02. oktober 2004 - 23:22 #28
HAHAHA det hjalp at putte det sidste kode på DOOHHHH .. ligger du svar og mange tusind tak :)
Avatar billede hmortensen Nybegynder
02. oktober 2004 - 23:23 #29
Det var så lidt
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