[HTML] Per Checkbox auswählen was durchsucht wird

  • Ersteller Ersteller Mr. Snoot
  • Erstellt am Erstellt am
M

Mr. Snoot

Gast
Hio,

ich will für die Suchfunktion auf meiner Seite eine Checkbox oder Radiobuttons machen, über die ausgewählt wird in welchen Seiten gesucht werden soll.

Normalerweise wird zur Suchabfrage die Datei search.php aufgerufen und über diese dann die Datei mit den Inhalten die gesucht werden können.

Kann ich über ne Checkbox/Radoibuttons festlegen, dass an Stelle der search.php auch eine andere Datei zur Suchabfrage benutzt wird? Über die könnte ich dann ganz einfach auf eine andere "Datenbank" mit Suchbegriffen zugreifen.

Wäre es evtl. auch möglich, dass bei Auswahl von zwei Checkboxen wiederrum eine andere Datei abgefragt wird? Also, dass man z.B. mit der normalen Suche einen Bereich 1 durchsucht, mit Checkboxen auch Bereich 2 oder 3 wählen kann aber auch 2 + 3?

Aufgerufen wird die search.php einfach über folgendes Formular:
HTML:
<form method=post action="search.php">
  <table width="400" border="0" cellspacing="0" cellpadding="1" bgcolor="#999999" align="center">
    <tr>
      <td>
        <table width="490" border="0" cellspacing="5" cellpadding="0" bgcolor="#F6F6F6">
          <tr>
            <td>
              <input type="text" name="search_exp" class="sform" tabindex="1">
            </td>
            <td rowspan="2"><b>Groß-/Kleinschreibung...</b><br>
              <input type="radio" name="exp_capital" value="yes" tabindex="3">beachten<br>
              <input type="radio" name="exp_capital" value="no" checked tabindex="4">ignorieren</td>
            <td rowspan="2"><b>Nur&nbsp;ganze&nbsp;Wörter?</b><br>
              <input type="radio" name="exp_full" value="yes" tabindex="5">Ja<br>
              <input type="radio" name="exp_full" value="no" checked tabindex="6">Nein</td>
          </tr>
          <tr>
            <td>
              <input type="submit" value="Suche starten" name="submit" class="sbutton" tabindex="2">
            </td>
          </tr>
        </table>
      </td>
    </tr>
  </table>
</form>
 
Zuletzt bearbeitet:
Deine Homepage unterliegt ja in letzter Zeit einer richtigen Generalsanierung. ;)

Zum Problem: Mit HTML allein ist soetwas leider nicht möglich. Mit JavaScipt gäbe es jedoch sicher einige Möglichkeiten dies zu realisieren, wobei ich davon absolut abraten würde, da nicht jeder Benutzer dies aktiviert hat.

Aber warum so umständlich? ;) Passe doch einfach die "search.php" entsprechend an.
Dies könnte dann etwa so aussehen:

PHP:
if($_POST["$exp_capital"] == "yes")
{
  if($_POST["$exp_full"] == "yes")
  {
	$abfrage = mysql_query("...");
  }
  else
  {
	$abfrage = mysql_query("...");
  }
}
else
{
  if($_POST["exp_full"] == "yes")
  {
	$abfrage = mysql_query("...");
  }
  else
  {
	$abfrage = mysql_query("...");
  }
}

MfG mh1001
 
mh1001 schrieb:
Deine Homepage unterliegt ja in letzter Zeit einer richtigen Generalsanierung. ;)
Mehr oder weniger :)
Aber warum so umständlich? ;) Passe doch einfach die "search.php" entsprechend an.
Dies könnte dann etwa so aussehen: ...
Das dachte ich mir auch zuerst, habe aber absolut kein Plan, wie das genau aussehen müsste (hab die search.php mal angehängt) - drum meine Idee einfach je nach Auswahl ne andere search.php anzusteuern.

Mal von der Idee mit der Kombination meherer Checkboxen ausgenommen, wäre es ohne JS möglich mittels Radoibuttons eine search.php auszuwählen?


edit: : das ganze funktioniert aber ohne MySQL Datenbank, meinte mit Datenbank einfach die Datei die die Suchbegriffe enthält.
 

Anhänge

Zuletzt bearbeitet:
Ach so, jetzt hatte ich dein Problem anscheinend etwas missverstanden, da es dir ja anscheinend nicht um die vorhandenen Checkboxen geht, sondern du noch weitere Checkboxen hinzufügen möchtest, und in Abhängigkeit derer ein entsprechende Suchabfrage starten möchtest.

In diesem Fall sollte dies auch kein Problem darstellen und könnte dann so aussehen:

In das Formular:

HTML:
<input type="Radio" name="bereich" value="1"> Bereich 1
<input type="Radio" name="bereich" value="2"> Bereich 1
<input type="Radio" name="bereich" value="3"> Bereich 1

In die "search.php":

PHP:
<?php
if($_POST["bereich"] == "1")
{
?>
// Erscheint wenn "Bereich 1" gewählt wurde.

// Jeder beliebige HTML- oder PHP-Code, wie zum Beispiel deine oben genannte search.php
<?php
}
elseif($_POST["bereich"] == "2")
{
?>
// Erscheint wenn "Bereich 2" gewählt wurde.

// -"-
<?php
}
elseif($_POST["bereich"] == "3")
{
?>
// Erscheint wenn "Bereich 3" gewählt wurde.

// -"-
<?php
}
else
{
exit("Fehlerhafte Anfrage!");
}
?>

MfG mh1001
 
Zuletzt bearbeitet:
Aber ich muss doch der search.php sagen, dass unter dem Abschnitt "# Datenfile durchsuchen" dann eine andere search.data.txt durchsucht wird.

Kann ich diesen kompletten Abschnitt (Datenfile durchsuchen) in drei Versionen (wo jedesmal ne andere search_data.txt angegeben ist) zwischen deine Codeabschnitte <?php if($_POST["bereich"] == "1") { ?> packen?
 
Wenn ich deine "search.php" jetzt richtig durchschaut habe gibt es dort genau zwei Dateien, welche je nach Anfrage entsprechende gewählt werden müssen. Dies wäre einmal die "search_log.txt" und zum anderen die "search_data.txt".

Gehe nun einmal folgendermaßen vor:

PHP:
// Ersetze im Code
$data = fopen('./admin/search_log.txt', "w+");
// durch
$data = fopen($dateinr1, "w+");

// und
$zeilen = file('./admin/search_data.txt');
// durch
$zeilen = file($dateinr2);

Danach brauchst du nur noch folgendes ganz oben in der "search.php" hinzufügen:

PHP:
<?php
if($_POST["bereich"] == "1")
{
  $dateinr1 = ""; //Pfad zur ersten Datei je nach Wunsch bei dieser Anfrage
  $dateinr2 = ""; //Pfad zur zweiten Datei je nach Wunsch bei dieser Anfrage
}
elseif($_POST["bereich"] == "2")
{
  $dateinr1 = ""; //Pfad zur ersten Datei je nach Wunsch bei dieser Anfrage
  $dateinr2 = ""; //Pfad zur zweiten Datei je nach Wunsch bei dieser Anfrage
}
elseif($_POST["bereich"] == "3")
{
  $dateinr1 = ""; //Pfad zur ersten Datei je nach Wunsch bei dieser Anfrage
  $dateinr2 = ""; //Pfad zur zweiten Datei je nach Wunsch bei dieser Anfrage
}
else
{
  exit("Fehlerhafte Anfrage!");
}
?>

MfG mh1001
 
Zuletzt bearbeitet:
Es kommt aber auf jeden Fall schonmal kein Fehler oder so, allerdings wird bei einer Suche auch nichts gefunden. Wie müssten die Pfade zu den Dateien denn angegeben werden (so wie in der search.php: ./admin/search_data.txt)?

Bist du sicher, dass das mit
PHP:
file($dateinr2);
so stimmt? (Nicht irgendwie ('$dateinr2'); oder so?).


edit: Also die Pfade scheinen schon zu stimmen, denn die Suchanfragen werden in die Logdateien geschrieben. Nur, warum findet er nichts?!
 
Zuletzt bearbeitet:
Wie müssten die Pfade zu den Dateien denn angegeben werden (so wie in der search.php: ./admin/search_data.txt)?
Die Pfade müssen im genau gleichem Format wie vorher angegeben werden, also zum Beispiel so:

PHP:
$dateinr1 = "./admin/search_data.txt";

Bist du sicher, dass das mit PHP Code:
file($dateinr2);


so stimmt? (Nicht irgendwie ('$dateinr2'); oder so?).
Ja, dies sollte eigentlich so stimmen, die '-Zeichen fallen weg, da es sich um eine Variable und keinen String handelt.

Das Problem sollte eher daher kommen, weil ich schlampig gearbeitet habe und "$zeilen = @file('./admin/search_log.txt');" übersehen habe (Zeile 165). ;)
Dies muss natürlich auch gegen die obige Variable ersetzt werden. Dank dem Klammeraffen hat sich PHP aber auch gleich gar nicht zu Wort gemeldet und die Fehlermeldung einfach unterdrückt.

MfG mh1001
 
Klappt einfach nicht. Aber da kein Fehler kommt muss doch schonmal sichergestellt sein, dass er auch auf die Dateien zugreifen kann (also auch auf die _data.txt?); Log schreibt er ja eh schon mit.
mh1001 schrieb:
Das Problem sollte eher daher kommen, weil ich schlampig gearbeitet habe und "$zeilen = @file('./admin/search_log.txt');" übersehen habe (Zeile 165). ;)
Dies muss natürlich auch gegen die obige Variable ersetzt werden. Dank dem Klammeraffen hat sich PHP aber auch gleich gar nicht zu Wort gemeldet und die Fehlermeldung einfach unterdrückt.
Jo, das hab ich schon ausgebessert, aber nützt nix.
 
Selstsam, eigentlich kann ich keinen Fehler mehr entdecken. Oder bin ich einfach nur blind? ;)

Poste auf jeden Fall noch einmal den Inhalt der "config.inc.php". Vielleicht ist dort noch etwas nicht berücksichtigt.

Anderfalls kannst du vielleicht auch nochmal den jetzigen Stand der "search.php" posten, falls sich vielleicht auch dort nur ein kleiner Fehler eingeschlichen hat. ;)

MfG mh1001
 
mh1001 schrieb:
Selstsam, eigentlich kann ich keinen Fehler mehr entdecken. Oder bin ich einfach nur blind? ;)
Hoffentlich :lol: (oder ich ;))
Poste auf jeden Fall noch einmal den Inhalt der "config.inc.php". Vielleicht ist dort noch etwas nicht berücksichtigt.
Die Datei wird ja nur benötigt, um die search_data.txt zu erstellen, und die ist vorhanden (habs aber mal mit in die Zip gepackt)
Anderfalls kannst du vielleicht auch nochmal den jetzigen Stand der "search.php" posten, falls sich vielleicht auch dort nur ein kleiner Fehler eingeschlichen hat. ;)
Guckst du :)

Kann es sein, dass das auch einfach nicht geht bei dem Suchscript, oder muss/müsste/sollte das in jedem Fall gehen?

edit: Wie gesagt: die Logdateien werden schon richtig erstellt.
 

Anhänge

Zuletzt bearbeitet:
Füge nach der Zeile
PHP:
function do_search() {
einfach
PHP:
global $dateinr2;
ein und es sollte funktionieren (denke ich zumindest, hab schon lange nichts mehr mit php gemacht).
 
Ja wunderbar, das klappt. Was täte ich nur ohne das Forum :)

Vielen, vielen Dank euch zwei! :daumen:


So, jetzt nur noch eine Frage :)
Wie kann ich das machen, dass ich statt Radiobuttons Checkboxen hernehme, und bei Kombination von zwei Checkboxen eine entsprechende Datei aufgerufen wird?
 
Ups, da hatte ich doch tatsächlich die Variablen innerhalb der Funktionen gar nicht beachtet. ;) Aber gut, dass es noch andere aufmerksamere Mitglieder gibt. :daumen:

Zu den Checkboxen:

Soll bei der Auswahl mehrerer Checkboxen jeweils eine andere Datei, oder die jeweiligen entsprechenden Dateien der jeweiligen Bereiche durchsucht werden.
Bei ersteren müssten lediglich ein paar Änderungen im Script vorgenommen werden, wobei bei zweiteren der Script wohl mehr oder weniger umgestaltet werden müsste.

Sollte ersteres der Fall sein hier mal ein kleines Beispiel:


HTML:
// ersetzte
				 

		    <input type="Radio" name="bereich" checked value="1"> Alles |
			<input type="Radio" name="bereich" value="2"> Inhalt |
			<input type="Radio" name="bereich" value="3"> Lexikon

// durch


		    <input type="checkbox" name="bereich_alles" checked value="1"> Alles |
		    <input type="checkbox" name="bereich_inhalt" value="1"> Inhalt |
		    <input type="checkbox" name="bereich_lexikon" value="1"> Lexikon
und

PHP:
// ersetzte

if($_POST["bereich"] == "1")
{
  $dateinr1 = "./admin/search_log.txt"; //Pfadangabe zu Logdatei
  $dateinr2 = "./admin/search_data.txt"; //Pfadangabe zur Datendatei
}
elseif($_POST["bereich"] == "2")
{
  $dateinr1 = "./admin/search_log_main.txt"; //Pfadangabe zu Logdatei
  $dateinr2 = "./admin/search_data_main.txt"; //Pfadangabe zur Datendatei
}
elseif($_POST["bereich"] == "3")
{
  $dateinr1 = "./admin/search_log_lex.txt"; //Pfadangabe zu Logdatei
  $dateinr2 = "./admin/search_data_lex.txt"; //Pfadangabe zur Datendatei
}
else
{
  exit("Fehlerhafte Anfrage!");
}

// durch

if($_POST["bereich_alles"] == "1")
{
  $dateinr1 = "./admin/search_log.txt";
  $dateinr2 = "./admin/search_data.txt";
}
else
{
  if($_POST["bereich_inhalt"] == "1" AND $_POST["bereich_lexikon"] != "1")
  {
	$dateinr1 = "./admin/search_log_main.txt"; 
	$dateinr2 = "./admin/search_data_main.txt";
  }
  elseif($_POST["bereich_inhalt"] != "1" AND $_POST["bereich_lexikon"] == "1")
  {
	$dateinr1 = "./admin/search_log_main.txt"; 
	$dateinr2 = "./admin/search_data_main.txt"; 
  }
  elseif($_POST["bereich_inhalt"] == "1" AND $_POST["bereich_lexikon"] == "1")
  {
	$dateinr1 = "./admin/search_log_???.txt"; //Pfadangabe zu Logdatei
	$dateinr2 = "./admin/search_data_???.txt"; //Pfadangabe zur Datendatei
  }
}

if($_POST["bereich_alles"] != "1" AND $_POST["bereich_inhalt"] != "1" AND $_POST["bereich_lexikon"] != "1")
{

// Fehlermeldung, Alternativseite oder Alternative Abfrage. Was halt passieren soll wenn nichts gewählt wurde. ;)

}
Das wäre es dann auch schon. ;)

P.S.: Was auch einmal gesagt werden muss: Sehr schöne Seite. :daumen: Hat mir auch schon bei der ein oder anderen Halbleiterfrage weitergeholfen. ;)

MfG mh1001
 
Zuletzt bearbeitet:
mh1001 schrieb:
Ups, da hatte ich doch tatsächlich die Variablen innerhalb der Funktionen gar nicht beachtet. ;) Aber gut, dass es noch andere aufmerksamere Mitglieder gibt. :daumen:
Zum Glück warst du an der Stelle echt blind :D *duck*
Soll bei der Auswahl mehrerer Checkboxen jeweils eine andere Datei, oder die jeweiligen entsprechenden Dateien der jeweiligen Bereiche durchsucht werden.
Theoretisch ginge beides. Da die erste Variante aber zu viele Möglichkeiten ergäbe bei 10 "Bereichen" ((2^10)-1 = 1023 ;)) die man kombinieren kann wird das viel zu umständlich (aber dein Script funktioniert dafür einwadfrei!).

Und Variante zwei ist, wie du schon sagst, mit "mehr oder weniger" Änderungen verbunden; wobei ich einfach mal von "mehr" ausgehe.

Ich will das auch keinem antun, so wie es jetzt mit der Auswahl läuft, ist das eigentlich schon mehr als genug. Und so umfangreich ist die Seite ja auch nicht, dass man jetzt unbedingt noch auswählen muss, was man durchsucht. Wäre eigentlich nur noch ne schöne Speilerei gewesen :)

Also, nochmal vielen Dank für die Hilfe :)
mh1001 schrieb:
P.S.: Was auch einmal gesagt werden muss: Sehr schöne Seite.
Danke, die Seite ist ganz ok, denk ich :D
 

Ähnliche Themen

Zurück
Oben