Jonny: $_POST array erzeugen und ausgeben

Hallo,

Erstmal mein Problem.
Ich möchte eine Suche für SQL schreiben, in der ich mehr Auswahlmöglichkeiten habe wie exakte suche like ect..

Angenommen ich kann unter 4 Begriffen wählen wie "Name" "Geburtstag" "Vorname" "Strasse" wählen. Diese Begriffe kann ich durch ein Listenfeld anklicken. Wenn ein Begriff angeklickt wurde wird dieser in dem array $_SESSION['searchfield'] gespeichert. Daraus wird nun das Formular erstellt.

So ein Array würde ich aus $_POST['aktiv'] bei drei ausgewählten Begriffen bekommen. Meine ID wäre der Begriff

array(9) { ["Vorname"]=>  string(4) "true" [0]=>  string(4) "LIKE" [1]=>  string(4) "Name" ["Nachname"]=>  string(4) "true" [2]=>  string(8) "NOT LIKE" [3]=>  string(7) "Vorname" ["Strasse"]=>  string(4) "true" [4]=>  string(5) "EXAKT" [5]=>  string(7) "Strasse" }

ich habe aber leider keine Idee wie ich diesen Splitten kann oder ob es so überhaupt funktionieren würde. Denn was ich jetzt noch will, ist im Formular abzufragen also aus dem Array natürlich ob bei dem Begriff Vorname das aktiv Feld aktiv ist wenn ja dann selected sprich eine If Abfrage das gilt natürlich auch für die anderen Formularelemente.

  
$count++;  
//Felder werden generiert  
 echo "  
	<tr>  
          <td>  
              Falls man diesen Begriff doch nicht mitsuchen möchte kann man ihn deaktivieren  
	     <input type='checkbox' name='aktiv[".$cols."]' value='true'>aktiv  
  
	  </td>  
          <td>  
	    ".$cols."hier steht der Begriff  
	  </td>  
	  <td>  
  
            <select name='aktiv[]'>  
		<option>LIKE</option>  
		<option selected>NOT LIKE</option>  
		<option>EXAKT</option>  
	    </select>  
  
	  </td>  
	  <td>  
             Das hier ist das Textfeld für den Suchbegriff  
	    <input type='text' name='aktiv[]' style='width:180px;'>  
	  </td>  
	</tr>  
 ";  
}

Ich hoffe mir kann jemand weiter Helfen

Gruß Jonny

  1. ich habe aber leider keine Idee wie ich diesen Splitten kann

    Bedingte Verzweigungen (if oder case/switch) kennst du aber schon?

  2. Hello,

    ich habe aber leider keine Idee wie ich diesen Splitten kann oder ob es so überhaupt funktionieren würde. Denn was ich jetzt noch will, ist im Formular abzufragen also aus dem Array natürlich ob bei dem Begriff Vorname das aktiv Feld aktiv ist wenn ja dann selected sprich eine If Abfrage das gilt natürlich auch für die anderen Formularelemente.

    <select name='aktiv[]'>
    <option>LIKE</option>
    <option selected>NOT LIKE</option>
    <option>EXAKT</option>
        </select>

    Übernimm auf gar keinen Fall Datenbank-Anweisungen direkt aus dem Request, sondern baue diese GRUNDSÄTZLICH im Script zusammen aus dort fest verdrahteten Begriffen und den Steuerungswünschen aus dem Request.

    Ein User würde wohl eher verstehen:

    Suchfeld [Auswahl] |  beginnt mit () | nicht       [ ] |   Suchbegriff
                          |  enthält     () | GK beachten ()  |
                          |  endet mit   () | GK egal     ()  |
                          |  ist leer    () |                 |
       und ()
       oder()

    Suchfeld [Auswahl] |  beginnt mit () | nicht       [ ] |   Suchbegriff
                          |  enthält     () | GK beachten ()  |
                          |  endet mit   () |             ()  |
                          |  ist leer    () |                 |
       und ()
       oder()

    usw.

    Aus einer solcvhen Matrix, die man z.B. mittels JavaScript wachsen lassen könnte, kann man dann serverseitig bequem die where-Beding des Select aufbauen.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  3. $count++;
    //Felder werden generiert
    echo "
    <tr>
              <td>
                  Falls man diesen Begriff doch nicht mitsuchen möchte kann man ihn deaktivieren
         <input type='checkbox' name='aktiv[".$cols."]' value='true'>aktiv

    </td>
              <td>
        ".$cols."hier steht der Begriff
      </td>
      <td>

    <select name='aktiv[]'>
    <option>LIKE</option>
    <option selected>NOT LIKE</option>
    <option>EXAKT</option>
        </select>

    </td>
      <td>
                 Das hier ist das Textfeld für den Suchbegriff
        <input type='text' name='aktiv[]' style='width:180px;'>
      </td>
    </tr>
    ";
    }

      
    Das wird so nicht funktionieren, wenn du aber name='aktiv[".$cols."][]' machst, kannst du dein Array besser auslesen bzw. verarbeiten.  
      
    Ich hoffe ich konnte dir ein bisschen auf die Sprünge helfen, der rest liegt an dir :).  
      
    Tipp: Du wirst ja dann eh noch das Where-statement zusammen schustern müssen, benutze dafür Casefelder  
      
    Mal ein Beispiel wie es gemeint ist:  
    ~~~php
      
    switch($cols){  
     case "Name":  
      foreach($_POST['aktiv'][$cols] as $irgendwas){  
       //damit dürftest du dann für den gewünschten Begriff das richtige Array  
       //auslesen mit den dazugehörigen gespeicherten bzw. gesendeten Daten  
      }  
     break;  
    }  
    
    

    So jetzt liegt es nun aber an dir :D

    Gruß Chris aus den Bergen sag ich dir

  4. Erstmal danke für eure Hilfe ich habe es in etwa hinbekommen, nun habe ich noch eine Frage:

    Gibt es eine möglichkeit allen Links zu sagen dass sie ein Submit auslösen sollen?

    Gruß Jonny

    1. Hello,

      Gibt es eine möglichkeit allen Links zu sagen dass sie ein Submit auslösen sollen?

      Üblicherweise würde man für einen Submit, also das Auslösen eines Requests unter Mitsendung von Formulardaten, erstmal ein <form>-Element benötigen. Für das <form>-Element gibt es dann das Kindelement <input type="submit" ...>. I.d.R würde das alls Button dargestellt werden. Diesen kannst Du dann mittels CSS als Link formatieren.

      Anders geht es nur mittels JavaScript. Dann könntest Du eine submit-Funktion vorbereiten, der die ID des jeweiligen Formulars als Argument übergeben wird und den Links ein "onClick" für die Ausführung der Submit-Funktion verpassen.

      Jetzt habe ich aber einen Gewissenskonflikt mit der Einordnung dieses Postings.

      Es könnte in die Kategorien

      • HTML
      • CSS
      • JavaScript

      passen, ganz bestimmt aber nicht in die Kategorie PHP

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de