Benutzerdeffinierten Select ?

Begonnen von Kartoffelbrei, 01 Oktober 2003, 12:43:19

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Kartoffelbrei

Hallo,

habe eine Auflistung erstellt wo der Inhalt einer Tabelle wiedergibt.
Passt alles soweit. (habe das mit einem fetch gemacht)

Jetzt will ich aber noch ein suchfeld drüber machen mit div. checkboxen wo man anhaken kann.

das z.b. der benutzer anhaken kann was er denn alles sehen will

tabelle : nuke_test

1 x  textbox für suchangaben was die spalte beschreibung betrifft

1 x  combobox für Auswahl der Ortschaft (Paterborn,Freiburg,Berlin,Mainz)

1 x  checkbox wenn angehakt werden auch die angezeigt die in der spalte mitglied eine 1 haben

1 x  checkbox wenn angehakt werden auch die angezeigt die in der spalte gruppenführer eine 1 haben

1 x  checkbox wenn angehakt werden auch die angezeigt die in der spalte organisatoren eine 1 haben

wie soll man denn das machen ?
habe sowas schonmal in C++ gemacht.
muss man das in php auch so kompliziert machen mit dem select generieren oder geht das irgendwie geschickter ?
hat mir da evtl jemand ein beispiel oder nen tipp ?

ich habe jetzt mal so angefangen dass ich immer den zustand der checkbox abgefragt habe. aber da komm ich schon in schwulitäten wenn mehrer checkboxen angehakt sind.


gruß
brei

sidewind

gib deinen checkboxen mal folgenden namen bsp name="box[]"
und jeder box einen eigenen value wert z.b value="grupppenfuehrer"

die klammer nicht vergessen

dann hast du die box inhalte in einem array gespeichert.

dies kannst du dann folgend auslesen

 
$sql = "select * from nuke_test ";
$checkboxauswahl = $_POST['box'];
foreach ($checkboxauswahl as $key => $value)
{
   switch ($value)
   {
      case "gruppenfuehrer":      
     $sql. = " and gruppeführer=1";
     break;
   
     case "mitglied":
     $sql .= " and mitglied=1";
     break;
   
    u.sw.

}//endswitch
}//endforeach

$result = sql_query($sql,$dbi);
 

hoffe das codebeispiel hilft dir..

[Editiert am 1/10/2003 von sidewind]

Kartoffelbrei

hi sidewind,

erstmal danke für deine antwort :)

habe dein beispiel mal durchstöbert aber noch nicht ausprobiert.
so wie du das gemacht hast hab ich mirs von der ausführung auch gedacht.
jedoch müsste doch bei dem select zuerst ein "where blabla like 'blabla'" kommen. und das ist eigentlich mein problem. so wie du das machst würde doch dabei beispielsweise folgender select rauskommen :


select * from test_nuke and gruppenfuhrer = 1 and mitglied = 1
statt
select * from test_nuke where gruppenfuhrer = 1 and mitglied = 1


oder lieg ich da falsch ?

gruß
brei

Kartoffelbrei

hi nochmal,

also ich hab jetzt noch dauerhaft eine textbox in den selectbefehl eingefügt der imemr drin ist, das behebt das problem von meinem vorhergehenden post.

jetzt hab ich die logik mal soweit.
nur wie mach ich das jetzt wenn der buton für die neue selectierung auf der gleichen seite ist ?
also wenn das jetzt z.b. ein html file wäre und ich das mit einem submit buton und der post funktion übergeben würde dann wüsst ich wie das geht.

aber was ich nciht weiß ist wie ich auf dem gleichen php file die seite mit der neuen selectierung neu aufbauen soll.
also z.b. hab ich gerade eine selectierung bzw ein resulat aufgelistet wo alle einträge zu sehen sind. so, jetzt geb ich oben bei meinen checkboxen z.b. ein dass ich nur die gruppenführere sehen will und klick auf einen buton oder sowas. und jetzt solls mir die seite neu aufbauen mit dem neuen resultat.
wie geht das ?
habe da schon einiges versucht dass ich die variable der checkboxen mit in den neuen link packe. aber das geht alles nicht.

hat mir da jemand ein beispiel ?
sorry, bin noch anfänger in php. kenn mich da eben nicht so aus   :redhead:

JensWagenknecht

Klar übergibst Du mit Submit  die Checkbox wieder.

Gib Du mal Deins vor, dann kann man besser helfen.

Es ist unklar ob das bereits aus  der Datenbank ausgelesenen noch einmal fein gefiltert werden soll, oder ob komplett neu ausgelesen wird.

Richtige komplexe Where Ausdrücke sind nicht ganz so einfach.


Kartoffelbrei

hi !

also ich habs so in etwa wie es sidewind schon gepostet hat  :

  <?

$sql = "select * from nuke_test ";

$checkboxauswahl = $_POST['box'];

foreach ($checkboxauswahl as $key => $value)

{

   switch ($value)

   {

      case "gruppenfuehrer":      

     $sql. = " and gruppeführer=1";

     break;

   

     case "mitglied":

     $sql .= " and mitglied=1";

     break;

   

    u.sw.



}//endswitch

}//endforeach



$result = sql_query($sql,$dbi);

?>




und ich möchte jetzt sozusagen einen buton mit einbauen wo ich draufdrücke und die datenbank neu auslesen kann.

z.b. habe ich im moment gerade  nene haken in der checkbox 1 drin damit es mir nur die gruppenführer zeigt, und jetzt geh ich hin, mach den haken da raus und setze hin beispielsweise bei mitglieder und rcüke den buton.

jetzt will ich ja dann quasi nur die mitglieder aufgelistet haben.
also nicht wie du evtl vermutest einene subselect machen, sondern den normalen select mit den neuen vorgaben starten bzw auswerten.
und meine frage ist jetzt wie programmiere ich den buton damit das geht. ich weiß nicht wie ich das schreiben soll, da der buton ja im selben formular ist.

meine momentane ausgabe sieht wie folgt aus  :


 



// Datendefinition für die Clientausgabe
$start = (isset($start)) ? abs((int)$start) : 0;
$limit = 10; // Datensätze pro Ausgabeseite

# Schauen wieviel datensätze da sind
$menge = mysql_query("SELECT * FROM nuke_test");
     
// Muss selber mal das Totallevel in die Hand nehmen
$total = mysql_num_rows($menge);  

echo "Es sind zur Zeit insgesamt <B>$total</B> Einträge in unserer Datenbank<BR><BR>";


  $sql = ("SELECT * FROM nuke_test ORDER BY ID DESC LIMIT ".$start.",".$limit);
 
 
  $resultaat = mysql_query($sql);

  $aantal = mysql_num_rows($resultaat);
   

  while ($record = mysql_fetch_object($resultaat)) {

und hier kommen dann die ganzen einbindungen rein, das sind aber zuviele für dieses posting hier, darum lass ich die mal weg...





und da will ich jetzt eben diese selectierung mit einem buton einbauen damit man die auswahl eben ändern kann oder sich nur spezielel datensätze anzeigen lasen kann.



vielen dank und gruß
brei

JensWagenknecht

Du musst ein Formular einbauen!

siehe hier:


 http://selfhtml.teamone.de/html/formulare/definieren.htm

Alles was sich zwischen <form>  und </form> befindet wird mit gesendet.
Also kommen die 2 Checkboxen dazwischen und der übergebene Wert der Boxen wird abgefragt und per If oder was auch immer verarbeitet.

Ist ja noch die Frage: Darf nur jeweils eine Häckchen gemacht werden oder kann alles selectiert werden.

Also, mache erst mal oben direkt Dein Formular, schön farblich abgesetzt, rein.

[Editiert am 2/10/2003 von JensWagenknecht]

sidewind

das and gruppenfuehrer problem kannste umgehen in dem du in die foreach schleife einen zaehler reinbaust

z.b. so

 
$i=0;
foreach ($checkboxauswahl as $key => $value)

$i++;

{



   switch ($value)



   {



      case "gruppenfuehrer":      



     $sql. = ($i==1)? " gruppeführer=1":" and gruppenfuehrer=1";



     break;