Avatar billede torbenbs Nybegynder
22. august 2007 - 15:14 Der er 34 kommentarer og
1 løsning

Samle checkboxe i i en søgestreng

Hejsa
Nu har jeg ledt og prøvet en del, men jeg er ikke så stærk i det engelske. Problemet er chechboksens værdier (bynavnene) skal bruges i søgningen i databasen (mysql)
Koder er her, noget forkortet, da der er mange checkboxe, der også kan checkes i grupper eller alle.

- start --
<?php $strTitle=" ";?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>

<script type="text/javascript">
<!--
    var checkboxgrp = new Object();
    checkboxgrp["a"] = new Array("saf[00]","saf[10]","saf[01]","saf[02]","saf[03]","saf[04]","saf[05]","saf[10]","saf[11]","saf[12]");
    checkboxgrp["n"] = new Array("saf[01]","saf[02]","saf[03]","saf[04]","saf[05]");
    checkboxgrp["m"] = new Array("saf[10]","saf[11]","saf[12]");

    function checkbox(grp,o,formname) {
        var f = document.forms[formname];

        if( checkboxgrp[grp][0] == o.name ) {
            for( var c = 0; c < checkboxgrp[grp].length; c++ )
                f.elements[checkboxgrp[grp][c]].checked = o.checked;
        } else {
            var checked_boxes = 0;

            for( var c = 1; c < checkboxgrp[grp].length; c++ )
                if( f.elements[checkboxgrp[grp][c]].checked ) checked_boxes++;
            if(checked_boxes == checkboxgrp[grp].length - 1 )
                f.elements[checkboxgrp[grp][0]].checked = true;
            else
                f.elements[checkboxgrp[grp][0]].checked = false;
        } //else
    } //checkbox
-->
</script>

<table ALIGN=TOP border="1" cellpadding="0" cellspacing="0">
<form name="kgl" method="post" action="a_test.php">
<tr><td>
<center><b>&nbsp;Søg på Alle : &nbsp;<input type="checkbox" name="saf[00]" value="Alle" onclick="checkbox('a',this,'kgl');" />&nbsp;</b></center>
</tr></td>
<tr><td>
<table ALIGN=TOP border="1" cellpadding="0" cellspacing="0">
<tr><td>

<br>
<center><label for=snavn accesskey=9><b>Søg på :</b><br></label><input type=text id=snavn name=snavn value="Max" tabindex=1/>
<br>
<input type=submit name=s1 value='S&oslash;g nu' errormessage="Søgeord mangler!" tabindex=6></center>
</tr></td>
<td ALIGN=LEFT VALIGN=TOP>
    <table border="0" cellpadding="0" cellspacing="0">
        <tr><td BGCOLOR=#FFFF00>&nbsp;<input type="checkbox" name="saf[01]" value="Vejle Amt" onclick="checkbox('n',this,'kgl');" />&nbsp;&nbsp;Hele Vejle Amt.
        </td></tr>
        <tr><td><input type="checkbox" name="saf[02]" value="Fredericia" onclick="checkbox('n',this,'kgl');" />Fredericia.
        </td></tr>
        <tr><td><input type="checkbox" name="saf[03]" value="Horsens" onclick="checkbox('n',this,'kgl');" />Horsens
        </td></tr>
        <tr><td><input type="checkbox" name="saf[04]" value="Kolding" onclick="checkbox('n',this,'kgl');" />Kolding
        </td></tr>
        <tr><td><input type="checkbox" name="saf[05]" value="Vejle" onclick="checkbox('n',this,'kgl');" />Vejle
        </td></tr>
    </td></tr></table>
<td ALIGN=LEFT VALIGN=TOP>
<td>
    <table border="0" cellpadding="0" cellspacing="0">
        <tr><td BGCOLOR=#FFFF00><input type="checkbox" name="saf[10]" value="Ribe Amt" onclick="checkbox('m',this,'kgl');" />&nbsp;&nbsp;Ribe Amt.
        </td></tr>
        <tr><td><input type="checkbox" name="saf[11]" value="Ribe" onclick="checkbox('m',this,'kgl');" />Ribe
        </td></tr>
        <tr><td><input type="checkbox" name="saf[12]" value="Esbjerg" onclick="checkbox('m',this,'kgl');" />Esbjerg
        </td></tr>
    </table>
</tr></td></table>
</td></tr></table>
</form>

<?php
echo "</b>Du har s&oslash;gt p&aring; navnet : <b>" . $snavn . "</b><br>";
// viser byerne
  if ( isset( $_POST['saf'] ) ) {
      echo 'I disse byer :<b> '.implode(', ',$_POST['saf']);
  } else {
      echo '<b>Du kan vælge område</b>';
  }


include ("mydb.php");
$query = mysql_query("select * from navne where navn like '%" . $snavn . "%' and byn like '%" . $cb . "%' ORDER BY id DESC LIMIT 0,3") or die (mysql_error());

echo "<table border=1 width=400 coler=#882222>
<tr><td align=center width=26%><i><b>Navn</b></i>
<td align=center width=26%><i><b>By</b></i>
</tr></td><tr>
<td align=\"left\" width=26%><b>" .$row["sn"]. "</b></td>
<td align=\"left\" width=26%><b>" .$row["by"]. "</b></td>
</tr></table>"
?>
-- slut --

En testside kan se på http://www.polsterbo.dk/test/a_test.php
Jeg har en lille test ved "// viser byerne"  der kommer bynavnene godt nok frem.

Hilsen Torben
Avatar billede jakobdo Ekspert
22. august 2007 - 17:03 #1
Jeg er lidt i tvivl om hvad du ønsker?
Avatar billede torbenbs Nybegynder
22. august 2007 - 17:18 #2
Jeg mangle et eller andet som hvor jeg får bynavnene fra chexkboxende sat ind i en
mysql_query("select * from ... en sådan noget ligende, alså opslag i databasen sammen med tekst input-et
Avatar billede jakobdo Ekspert
22. august 2007 - 20:38 #3
Prøv følgende:

$query = mysql_query("SELECT * FROM navne WHERE navn IN ('".implode("','",$_POST['saf'])."')");
Avatar billede torbenbs Nybegynder
22. august 2007 - 21:01 #4
Virker ikke helt får fejlen
Warning: implode() [function.implode]: Bad arguments. in /home/virtual/polsterbo.dk/public_html/test/a_test.php on line 85
Avatar billede jakobdo Ekspert
22. august 2007 - 21:13 #5
Test lige dette:
if(is_array($_POST['saf']))
{
    $navne = implode("','",$_POST['saf']);
    $sql = "SELECT * FROM navne WHERE navn IN ('".$navne."')";
    echo 'DEBUG : ' . $sql . '<br />';
    $query = mysql_query($sql);
}
Avatar billede torbenbs Nybegynder
22. august 2007 - 21:24 #6
Heller ikke rigtig får følgende hvis jeg vælger Kolding og Vejle, checket
VejleDEBUG : SELECT * FROM navne WHERE navn IN ('Kolding','Vejle')
Avatar billede torbenbs Nybegynder
22. august 2007 - 21:24 #7
Det første Vejle skulle ikke med, kun
DEBUG : SELECT * FROM navne WHERE navn IN ('Kolding','Vejle')
Avatar billede jakobdo Ekspert
22. august 2007 - 21:34 #8
SQL'en ser rigtig ud.
Hvad hedder dine felter i din tabel?
Og hvad hedder din tabel?
Avatar billede torbenbs Nybegynder
22. august 2007 - 21:38 #9
øjeblik
Avatar billede torbenbs Nybegynder
22. august 2007 - 21:40 #10
Jeg ville lige være helt sikker
Tabel  - Navne
kolonne 1 - ID
Kolonne 2 - navn
Kolonne 3 - byn
Avatar billede jakobdo Ekspert
22. august 2007 - 21:46 #11
if(is_array($_POST['saf']))
{
    $navne = implode("','",$_POST['saf']);
    $sql = "SELECT * FROM Navne WHERE navn IN ('".$navne."') AND byn LIKE '%".$_POST['snavn']."%'";
    echo 'DEBUG : ' . $sql . '<br />';
    $query = mysql_query($sql);
}
Avatar billede torbenbs Nybegynder
22. august 2007 - 21:46 #12
og
saf - er bynavnet fra checkboxe
snavn - er tekstboxen (og den har jeg styr på)
Avatar billede torbenbs Nybegynder
22. august 2007 - 21:47 #13
se ud til at være det samme
Avatar billede torbenbs Nybegynder
22. august 2007 - 21:49 #14
skulle det ikke være med "saf" istedet for "snavn"
{
    $navne = implode("','",$_POST['saf']);
    $sql = "SELECT * FROM Navne WHERE navn IN ('".$navne."') AND byn LIKE '%".$_POST['saf']."%'";
    echo 'DEBUG : ' . $sql . '<br />';
    $query = mysql_query($sql);
}
Avatar billede torbenbs Nybegynder
22. august 2007 - 22:34 #15
Jeg lukker nu pga. kraftig torden

foto af basen kan se på
http://polsterbo.dk/test/mysql.jpg
Avatar billede jakobdo Ekspert
23. august 2007 - 07:51 #16
SQL'en skal være:

$sql = "SELECT * FROM Navne WHERE byn IN ('".$navne."') AND navn LIKE '%".$_POST['snavn']."%'";
Avatar billede torbenbs Nybegynder
23. august 2007 - 09:37 #17
Så er jeg her igen efter tordenvejret og lidt søvn.
Det er stadig det samme. (på a_test)
men jeg har lavet en anden setning her
http://www.polsterbo.dk/test/b_test.php
PHP delen ses her (Jeg skal lige i byer, er tilbage til middag)
<?php
echo "</b>Du har s&oslash;gt p&aring; navnet : <b>" . $snavn . "</b><br>";
// viser byerne
  if ( isset( $_POST['saf'] ) ) {
      echo 'I disse byer :<b> '.implode(', ',$_POST['saf']);
  } else {
      echo '<b>Du kan vælge område</b>';
  }

include ("mydb.php");
$sql = "SELECT * FROM Navne WHERE navn IN ('".$snavn."') AND byn LIKE '%".$_POST['saf']."%'" or die (mysql_error());

print "<table border=1 width=400 coler=#882222><tr>
<td align=center width=26%><i><b>Navn</b></i></td>
<td align=center width=26%><i><b>By</b></i></td>
</tr><tr>
<td align=\"left\" width=26%><b>" .$row["navn"]. "</b></td>
<td align=\"left\" width=26%><b>" .$row["byn"]. "</b></td>
</tr></table>"
?>
Avatar billede jakobdo Ekspert
23. august 2007 - 09:48 #18
Test denne kode:

<?php
echo "</b>Du har s&oslash;gt p&aring; navnet : <b>" . $snavn . "</b><br>";
// viser byerne
  if ( isset( $_POST['saf'] ) ) {
      echo 'I disse byer :<b> '.implode(', ',$_POST['saf']);
  } else {
      echo '<b>Du kan vælge område</b>';
  }

include ("mydb.php");

if(is_array($_POST['saf']))
{
    $navne = implode("','",$_POST['saf']);
    $sql = "SELECT * FROM Navne WHERE byn IN ('".$navne."') AND navn LIKE '%".$_POST['snavn']."%'";
    echo 'DEBUG : ' . $sql . '<br />';
    $query = mysql_query($sql);
    if(mysql_num_rows($query))
    {
        while($row = mysql_fetch_assoc($query))
        {
            print "<table border=1 width=400 coler=#882222><tr>
            <td align=center width=26%><i><b>Navn</b></i></td>
            <td align=center width=26%><i><b>By</b></i></td>
            </tr><tr>
            <td align=\"left\" width=26%><b>" .$row["navn"]. "</b></td>
            <td align=\"left\" width=26%><b>" .$row["byn"]. "</b></td>
            </tr></table>";
        }
    }
}
?>
Avatar billede torbenbs Nybegynder
23. august 2007 - 12:48 #19
Det gir fejlen :
DEBUG : SELECT * FROM Navne WHERE byn IN ('Kolding') AND navn LIKE '%Max%'

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/virtual/polsterbo.dk/public_html/test/b_test.php on line 91
og linie 91 er
    if(mysql_num_rows($query))
Avatar billede torbenbs Nybegynder
23. august 2007 - 12:50 #20
OG der kommer ingen tabel frem
Avatar billede jakobdo Ekspert
23. august 2007 - 12:53 #21
Ret lige:
$query = mysql_query($sql);
til:
$query = mysql_query($sql) or die(mysql_error());
Avatar billede torbenbs Nybegynder
23. august 2007 - 12:57 #22
Det gir dette
DEBUG : SELECT * FROM Navne WHERE byn IN ('Vejle') AND navn LIKE '%Max%'
Table 'polsterbo_dk.Navne' doesn't exist

Jeg har lige prøvet at lave dette, for at se om der kommer navne frem, men der kommer ikke noget
    $stmt = mysql_query("select * from navne where navn like '%" . $snavn . "%'") or die (mysql_error());
er livet i: c-test.php
Avatar billede jakobdo Ekspert
23. august 2007 - 13:08 #23
Ret Navne i min sql til navne
Avatar billede torbenbs Nybegynder
23. august 2007 - 13:10 #24
Ja det hjalp da
men også med fejl
DEBUG : SELECT * FROM navne WHERE byn IN ('Vejle') AND navn LIKE '%Max%'
Avatar billede torbenbs Nybegynder
23. august 2007 - 13:15 #25
Jeg prøvede at fjerne ECHO foran  'DEBUG : ' . $sql . '<br />';
Det se ud til at virke
Avatar billede torbenbs Nybegynder
23. august 2007 - 13:23 #26
Sådan lige for en ordens skyld er hele PHP delen her
<?php
echo "</b>Du har s&oslash;gt p&aring; navnet : <b>" . $snavn . "</b><br>";
// viser byerne
  if ( isset( $_POST['saf'] ) ) {
      echo 'I disse byer :<b> '.implode(', ',$_POST['saf']);
  } else {
      echo '<b>Du skal vælge område</b>';
  }


    echo "<table border=1 width=400 coler=#882222><tr>
    <td align=center width=26%><i><b>Navn</b></i></td>
    <td align=center width=26%><i><b>By</b></i></td>
    </tr></table>";
include ("mydb.php");

if(is_array($_POST['saf']))
{
    $navne = implode("','",$_POST['saf']);
    $sql = "SELECT * FROM navne WHERE byn IN ('".$navne."') AND navn LIKE '%".$_POST['snavn']."%'";
    'DEBUG : ' . $sql . '<br />';
    $query = mysql_query($sql) or die(mysql_error());
    if(mysql_num_rows($query))
    {
        while($row = mysql_fetch_assoc($query))
        {
            echo "<table border=1 width=400 coler=#882222><tr>
            <td align=\"left\" width=26%><b>" .$row["navn"]. "</b></td>
            <td align=\"left\" width=26%><b>" .$row["byn"]. "</b></td>
            </tr></table>";
        }
    }
}
?>

Så skal jeg se om kan kan finde ud af at give poing, (det har jeg aldrig prøvet før !)
Avatar billede torbenbs Nybegynder
23. august 2007 - 13:30 #27
ja og så 10000 tak for hjælpen her fra, så skal jeg bare have resten på plads.
Torben
Avatar billede jakobdo Ekspert
23. august 2007 - 13:32 #28
Du bør fjerne resten: 'DEBUG : ' . $sql . '<br />';

Du får et svar.
Avatar billede torbenbs Nybegynder
23. august 2007 - 13:37 #29
Har jeg gjort i b_test
Avatar billede jakobdo Ekspert
23. august 2007 - 13:48 #30
I dit indlæg: 23/08-2007 13:23:07
er den der nemlig stadig...
Avatar billede torbenbs Nybegynder
23. august 2007 - 13:58 #31
den skulle være væk lige får jeg skrev
Avatar billede jakobdo Ekspert
23. august 2007 - 14:17 #32
Ja, det ser jo ok ud...
Avatar billede torbenbs Nybegynder
23. august 2007 - 14:20 #33
ja det mener jeg også, så er er fult hus til dig
Avatar billede jakobdo Ekspert
23. august 2007 - 14:31 #34
Du skal bare vælge mit navn, accepter svar så er sagen lukket.
Avatar billede jakobdo Ekspert
23. august 2007 - 15:27 #35
Takker for point.
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