Datenbankauswahl mit preg_match_Auswahl ??

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Datenbankauswahl mit preg_match_Auswahl ??

    Hallo,

    habe größeres Problem:

    Seit langem schon probiere ich meine Datenbanktabelle " tabelle_lehrer "
    mit einem Suchformular für die Schüler(PLZ oder Wohnort-Suche + Auswahl von Schulfach aus Drop-Menü) und anschließender Trefferanzeige auf folgender Seite zu verbinden.

    Die Übergabe habe ich mit folgendem Befehl gelöst:

    Quellcode

    1. <form action="ergebnis_lehrersuche.php" method="post" name="suchform">



    Das Ergebnis für die Lehrersuche habe ich so hinterlegt:

    Quellcode

    1. <?php
    2. $where_string = " WHERE ";
    3. $operator = " = ";
    4. $form_input = $_POST;
    5. $first = true;
    6. $suchmuster = "/dbsearch_([a-zA-Z0-9]*)_(.*)/";
    7. $op_suchmuster = "/OP(.*)_(.*)/";
    8. if(is_array($form_input)) {
    9. foreach($form_input AS $key => $value) {
    10. if(preg_match($suchmuster, $key, $treffer)) {
    11. $op = $operator;
    12. if(preg_match($op_suchmuster, $treffer[2], $op_treffer)) {
    13. switch($op_treffer[1]) {
    14. case "SAME":
    15. $op = " = ";
    16. break;
    17. case "LIKE":
    18. $op = " LIKE ";
    19. break;
    20. case "NOTSAME":
    21. $op = " NOT = ";
    22. break;
    23. case "NOTLIKE":
    24. $op = " NOT LIKE ";
    25. break;
    26. default:
    27. $op = $operator;
    28. break;
    29. }
    30. }
    31. if(!empty($value)) {
    32. $where_string.= $first ? $treffer[1] . $op . "'". $value . "'" : " AND ". $treffer[1] . $op . "'". $value . "'";
    33. $first = false;
    34. }
    35. }
    36. }
    37. }
    38. ?>
    39. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    40. <html>
    41. <head>
    42. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    43. <title>Ergebnis Lehrersuche</title>
    44. </head>
    45. <body>
    46. <?PHP
    47. // Verbindung zum Datenbankserver
    48. $connect = @mysql_connect("xxxxxx", "xxxxx", "xxxxxx");
    49. if (!$connect)
    50. {
    51. echo( "<p>Zur Zeit keine Verbindung " .
    52. "zum Datenbankserver möglich.</p>" );
    53. exit();
    54. }
    55. // Datenbank auswaehlen
    56. if (! @mysql_select_db("xxxxxxx") )
    57. {
    58. echo( "<p>Auswahl der Nachhilfe-Datenbank " .
    59. "zur Zeit nicht möglich.</p >" );
    60. exit();
    61. }
    62. echo("<p> Ihre Suchergebnisse </p>");
    63. // Einträge abfragen
    64. $result = @mysql_query("SELECT * FROM tabelle_lehrer WHERE plz or wohnort = 'value' AND faecher = 'value'");
    65. if (!$result) {
    66. echo("<p>Fehler bei der Ausführung der Abfrage: " . mysql_error() . "</p>");
    67. exit();
    68. }
    69. ?>
    70. <table cellpadding=5 cellspacing=2 border=0>
    71. <tr bgcolor="#66cc66"><th>ID<th>Vorname<th>Nachname<th>Strasse<th>PLZ<th>Wohnort<th>Vorwahl-Telefon<th>Telefon<th>Vorwahl-Handy<th>Handy<th>Email<th>Lehrerart<th>
    72. <?PHP
    73. // Text jedes Eintrages in einem Absatz anzeigen
    74. while ( $row = mysql_fetch_array($result)) {
    75. printf("<tr bgcolor=\"#cc%scc\">" , ($i++%2?"ff":"cc"));
    76. printf("<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>" ,$row["id"] ,$row["vorname"] ,$row["nachname"] ,$row["strasse"] ,$row["plz"] ,$row["wohnort"] ,$row["vorwahl_telefon"] ,$row["telefon"], $row["vorwahl_handy"] ,$row["handy"] ,$row["email"] ,$row["lehrerart"]);
    77. }
    78. ?>
    79. <p>
    80. <body>
    81. <p>
    82. <?PHP
    83. echo 'Neue Abfrage: <a href=Nachhilfe_Zugang.php>hier</a><br>';
    84. ?>
    85. </body>
    Alles anzeigen





    Was ist falsch an meinem Code ?

    Im Moment zeigt er mir nur auf der Ergebnisseite alle Einträge an, die in der tabelle_lehrer stehen. Schön ordentlich mit grünen Feldüberschriften !!
    Aber egal was ich in der Suche auch eingebe, immer das gleiche Ergebnis.

    Wo liegt der Fehler


    Danke schonmal.

    Für mich ist das sehr schwierig, da ich blutiger Anfänger bin[
  • du setzt diesen where string zwar zusammen, aber in dem Code wird er nirgends verwendet

    Ich nehme an der muss hier herein:

    Quellcode

    1. $result = @mysql_query("SELECT * FROM tabelle_lehrer ".$where_string);


    Falls das noch nicht hilft bau mal in Zeile 39 folgenden Code ein und poste dann die Ausgaben

    Quellcode

    1. print_r($form_input);
    2. echo $where_string;
  • Hi d0nUt,

    danke dir vielmals für deine Hilfe.


    Habe nun alles so eingefügt, wie du vorgeschlagen hast.

    Habe die if-Funktion nun auch in Text integriert.

    Mein Ergebnis nun:



    Quellcode

    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    2. <html>
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    5. <title>Ergebnis Lehrersuche</title>
    6. </head>
    7. <body>
    8. <?PHP
    9. // Verbindung zum Datenbankserver
    10. $connect = @mysql_connect("xxxx", "xxxx", "xxxxx");
    11. if (!$connect)
    12. {
    13. echo( "<p>Zur Zeit keine Verbindung " .
    14. "zum Datenbankserver möglich.</p>" );
    15. exit();
    16. }
    17. // Datenbank auswaehlen
    18. if (! @mysql_select_db("xxxxx") )
    19. {
    20. echo( "<p>Auswahl der Nachhilfe-Datenbank " .
    21. "zur Zeit nicht möglich.</p >" );
    22. exit();
    23. }
    24. echo("<p> Ihre Suchergebnisse </p>");
    25. // Einträge abfragen
    26. $where_string = " WHERE ";
    27. $operator = " = ";
    28. $form_input = $_POST;
    29. $first = true;
    30. $suchmuster = "/dbsearch_([a-zA-Z0-9]*)_(.*)/";
    31. $op_suchmuster = "/OP(.*)_(.*)/";
    32. if(is_array($form_input)) {
    33. foreach($form_input AS $key => $value) {
    34. if(preg_match($suchmuster, $key, $treffer)) {
    35. $op = $operator;
    36. if(preg_match($op_suchmuster, $treffer[2], $op_treffer)) {
    37. switch($op_treffer[1]) {
    38. case "SAME":
    39. $op = " = ";
    40. break;
    41. case "LIKE":
    42. $op = " LIKE ";
    43. break;
    44. case "NOTSAME":
    45. $op = " NOT = ";
    46. break;
    47. case "NOTLIKE":
    48. $op = " NOT LIKE ";
    49. break;
    50. default:
    51. $op = $operator;
    52. break;
    53. }
    54. }
    55. if(!empty($value)) {
    56. $where_string.= $first ? $treffer[1] . $op . "'". $value . "'" : " AND ". $treffer[1] . $op . "'". $value . "'";
    57. $first = false;
    58. }
    59. }
    60. }
    61. }
    62. print_r($form_input);
    63. echo $where_string;
    64. $result = @mysql_query("SELECT * FROM tabelle_lehrer ".$where_string);
    65. if (!$result) {
    66. echo("<p>Fehler bei der Ausführung der Abfrage: " . mysql_error() . "</p>");
    67. exit();
    68. }
    69. ?>
    70. <table cellpadding=5 cellspacing=2 border=0>
    71. <tr bgcolor="#66cc66"><th>ID<th>Vorname<th>Nachname<th>Strasse
    72. <th>PLZ<th>Wohnort<th>Vorwahl-Telefon<th>Telefon<th>Vorwahl-Handy<th>Handy<th>Email<th>Lehrerart<th>
    73. <?PHP
    74. // Text jedes Eintrages in einem Absatz anzeigen
    75. while ( $row = mysql_fetch_array($result)) {
    76. printf("<tr bgcolor=\"#cc%scc\">" , ($i++%2?"ff":"cc"));
    77. printf("<td>%s<td>%s<td>%s<td>%s<td>%s<td>
    78. %s<td>
    79. %s<td>%s
    80. <td>%s<td>%s<td>%s<td>%s<td>" ,$row["id"] ,
    81. $row["vorname"] ,$row["nachname"] ,$row["strasse"] ,
    82. $row["plz"] ,$row["wohnort"] ,$row["vorwahl_telefon"] ,
    83. $row["telefon"], $row["vorwahl_handy"] ,
    84. $row["handy"] ,$row["email"] ,$row["lehrerart"]);
    85. }
    86. ?>
    87. <p>
    88. <?PHP
    89. echo 'Neue Abfrage: <a href=Nachhilfe_Zugang.php>hier</a><br>';
    90. ?>
    91. </body>
    Alles anzeigen



    Es wird als Ergebnis folgendes angezeigt: :)

    Ihre Suchergebnisse

    Array ( [wohnort] => 89054 [faecher] => Deutsch [suchform] => Suchen ) WHERE
    Fehler bei der Ausführung der Abfrage: You have an error in your SQL syntax.
    Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1



    egal, was ich auch eingebe, ich erhalte immer nur die Bestätigung,
    dass ich es eingegeben habe aber es werden keine Suchtreffer in
    Verbindung mit meiner Lehrerdatenbank angezeigt.

    Was anders noch:

    Vorher erschienen dann auch noch meine angelegten Feld -Spalten
    und ein Link ---> neue Abfrage.
    dies hatte ich so im quelltext hinterlegt:


    Quellcode

    1. <table cellpadding=5 cellspacing=2 border=0>
    2. <tr bgcolor="#66cc66"><th>ID<th>Vorname<th>Nachname<th>
    3. Strasse<th>PLZ<th>Wohnort<th>Vorwahl-Telefon<th>Telefon<th>
    4. Vorwahl-Handy<th>Handy<th>Email<th>Lehrerart<th>
    5. <?PHP
    6. // Text jedes Eintrages in einem Absatz anzeigen
    7. while ( $row = mysql_fetch_array($result)) {
    8. printf("<tr bgcolor=\"#cc%scc\">" , ($i++%2?"ff":"cc"));
    9. printf("<td>%s<td>%s<td>
    10. %s<td>%s<td>%s<td>
    11. %s<td>%s<td>%s
    12. <td>%s<td>%s<td>%s<td>%s<td>" ,
    13. $row["id"] ,$row["vorname"]
    14. ,$row["nachname"] ,$row["strasse"] ,
    15. $row["plz"] ,$row["wohnort"]
    16. ,$row["vorwahl_telefon"] ,$row["telefon"],
    17. $row["vorwahl_handy"]
    18. ,$row["handy"] ,
    19. $row["email"] ,$row["lehrerart"]);
    20. }
    21. ?>
    22. <p>
    23. <?PHP
    24. echo 'Neue Abfrage: <a href=Nachhilfe_Zugang.php>hier</a><br>';
    25. ?>
    Alles anzeigen



    Und der angezeigt Fehler - woran liegt das ??
    Warum keine Suchausgabe ???

    Danke dir sehr !!
  • Hinweis: bitte benutzt das Foren Syntaxhighlighting - Code markieren und rechts oben PHP auswählen
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    von einem Fehler hast du aber vorher nichts gesagt:

    "Nutzer" schrieb:

    Fehler bei der Ausführung der Abfrage: You have an error in your SQL syntax.
    Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


    also deine aktuelle #31 solltest du in deine if(is_array($form_input)) schieben.

    du schreibst, dass du blutiger Anfänger bist. Wo stammen denn #41 bis #66 her?
    Gibts die regulären Ausdrücke überhaupt in deiner Eingabemaske?
    Falls keine regulären ausdrucke nötig sind, kannst du #40 bis #67 durch folgenden Ausdruck ersetzen:

    Quellcode

    1. $where_string .= implode(array_map(
    2. create_function('$a,$b','return "AND `$a` = \'$b\' ";'),
    3. array_keys($form_input),
    4. array_values($form_input)));


    (zugegeben ziemlich funktional programmiert, aber funktionales Programmieren macht so Spaß *g*)
  • Hi again,

    danke dir sehr!!!

    Puh - sehr schwer für mich !!!


    Jetzt sieht mein Code folgendermaßen aus :


    Quellcode

    1. // Einträge abfragen
    2. $where_string = " WHERE ";
    3. $operator = " = ";
    4. $form_input = $_POST ;
    5. $first = true;
    6. $suchmuster = "/dbsearch_([a-zA-Z0-9]*)_(.*)/";
    7. $op_suchmuster = "/OP(.*)_(.*)/";
    8. if(is_array($form_input)) {
    9. $where_string .= implode(array_map(
    10. create_function('$a,$b','return "AND `$a` = \'$b\' ";'),
    11. array_keys($form_input),
    12. array_values($form_input)));
    13. }
    14. print_r($form_input);
    15. echo $where_string;
    16. $result = @mysql_query("SELECT * FROM tabelle_lehrer".$where_string);
    17. if (!$result) {
    18. echo("<p>Fehler bei der Ausf&uuml;hrung der Abfrage: " . mysql_error() . "</p>");
    19. exit();
    20. }
    21. ?>
    22. <table border="0" cellpadding="5" cellspacing="2">
    23. <tr>
    24. <tr bgcolor="#66cc66"><th>ID<th>Vorname<th>Nachname
    25. <th>Strasse<th>PLZ<th>Wohnort<th>Vorwahl-Telefon<th>
    26. Telefon<th>Vorwahl-Handy<th>Handy<th>Email<th>
    27. Lehrerart<th>
    28. <?PHP
    29. // Text jedes Eintrages in einem Absatz anzeigen
    30. while ( $row = mysql_fetch_array($result)) {
    31. printf("<tr bgcolor=\"#cc%scc\">" , ($i++%2?"ff":"cc"));
    32. printf("<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s
    33. <td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>"
    34. ,$row["id"] ,$row["vorname"] ,$row["nachname"]
    35. ,$row["strasse"] ,$row["plz"] ,$row["wohnort"]
    36. ,$row["vorwahl_telefon"] ,$row["telefon"],
    37. $row["vorwahl_handy"] ,$row["handy"] ,
    38. $row["email"] ,$row["lehrerart"]);
    39. }
    40. ?>
    41. <p>
    42. <?PHP
    43. echo 'Neue Abfrage: <a href=Nachhilfe_Zugang.php>hier</a><br>';
    44. ?>
    Alles anzeigen



    Jetzt kommt folgende Ausgabe auf Seite ergebnis_lehrersuche.php:


    Ihre Suchergebnisse


    Ihre Suchergebnisse

    Array ( [lortplz] => 71292 [lfach] => Deutsch [suchform] => Suchen )
    WHERE AND `lortplz` = '71292' AND `lfach` = 'Deutsch' AND `suchform` = 'Suchen'

    Fehler bei der Ausführung der Abfrage: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND `lortplz` = '71292' AND `lfach` = 'Deutsch' AND `suchform`



    und nun ????

    Und der restliche Teil ab hier
    <

    Quellcode

    1. table border="0" cellpadding="5" cellspacing="2">


    erscheint auch nicht mehr wie früher in Ausgabe - also
    keine Tabellenübersicht der Tabellenspalten mehr !!!


    Kann es sein, daß
    die Abfrage fehlerhaft ist, weil die Wohnort-Abfrage nicht
    mit der PLZ übereinstimmt ???
    Mein Probem ist ja auch, daß ich nur ein Feld für PLZ und
    wohnort habe - es heißt bei mir auch
    " PLZ oder Wohnort" bei der Sucheingabe !!!


    Danke schonmal für deine Hilfe, dOnUt !!!!!!!!!!
  • teste mal den Code - hab noch mehrere Sachen modifiziert:

    Quellcode

    1. <?php
    2. // Einträge abfragen
    3. $operator = " = ";
    4. $form_input = $_POST ;
    5. $where_string = " WHERE true ";
    6. if(is_array($form_input)) {
    7. $where_string .= implode(array_map(
    8. create_function('$a,$b','return "AND `$a` = \'$b\' ";'),
    9. array_keys($form_input),
    10. array_values($form_input)));
    11. }
    12. $query = "SELECT * FROM tabelle_lehrer".$where_string;
    13. /*testing*/print_r($form_input);
    14. /*testing*/echo $query;
    15. $result = @mysql_query($query);
    16. if (!$result) {
    17. echo("<p>Fehler bei der Ausf&uuml;hrung der Abfrage <b>$query</b>: " . mysql_error() . "</p>");
    18. exit();
    19. }
    20. echo '<table border="0" cellpadding="5" cellspacing="2">
    21. <tr>
    22. <tr bgcolor="#66cc66"><th>ID<th>Vorname<th>Nachname<th>Strasse<th>PLZ<th>Wohnort<th>Vorwahl-Telefon<th>Telefon<th>Vorwahl-Handy<th>Handy<th>Email<th>Lehrerart<th>';
    23. // Text jedes Eintrages in einem Absatz anzeigen
    24. while ( $row = mysql_fetch_array($result)) {
    25. printf("<tr bgcolor=\"#cc%scc\">" , ($i++%2?"ff":"cc"));
    26. printf("<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>%s<td>" ,
    27. $row["id"],$row["vorname"] ,$row["nachname"] ,$row["strasse"] ,$row["plz"] ,$row["wohnort"] ,$row["vorwahl_telefon"] ,$row["telefon"], $row["vorwahl_handy"] ,$row["handy"] ,$row["email"] ,$row["lehrerart"]);
    28. }
    29. echo '<p />Neue Abfrage: <a href="Nachhilfe_Zugang.php">hier</a><br />';
    30. ?>
    Alles anzeigen
  • Hi,

    jetztkommt nach Eingabe meiner 2 in Datenbank hinterlegten Werte (PLZ und Fach) folgende Ausgabe:




    Ihre Suchergebnisse

    Array ( [lortplz] => 71292 [lfach] => Englisch [suchform] => Suchen )
    SELECT * FROM tabelle_lehrer WHERE true AND
    `lortplz` = '71292' AND `lfach` = 'Englisch'
    AND `suchform` = 'Suchen'

    Fehler bei der Ausführung der Abfrage
    SELECT * FROM tabelle_lehrer WHERE true AND
    `lortplz` = '71292' AND `lfach` = 'Englisch' AND
    `suchform` = 'Suchen' : Unknown column 'true' in
    'where clause'



    aha - die Spalte 'true' ist falsch -oder??
  • ist denn der rest der sql abfrage korrekt?

    Quellcode

    1. SELECT * FROM tabelle_lehrer WHERE `lortplz` = '71292' AND `lfach` = 'Englisch' AND
    2. `suchform` = 'Suchen';

    ja, deine mysql version bemängelt das true.. bei mir klappts allerdings.. vielleicht eine Versionseigenheit.

    Ist es überhaupt das SQL Statement, das du haben willst? Schließlich haben wir fast 50% des Codes gelöscht.
  • Ja, so wie schon geschrieben kommt die Ausgabe:



    Ihre Suchergebnisse

    Array ( [lortplz] => 71292 [lfach] => Englisch [suchform] => Suchen )
    SELECT * FROM tabelle_lehrer WHERE true AND `lortplz` = '71292' AND `lfach` = 'Englisch' AND `suchform` = 'Suchen'

    Fehler bei der Ausführung der Abfrage SELECT * FROM tabelle_lehrer
    WHERE true AND `lortplz` = '71292' AND `lfach` = 'Englisch' AND `suchform` = 'Suchen' : Unknown column 'true' in 'where clause'



    Ja es soll die Bedingung erfüllt sein,m daß die Eingabe einer PLZ oder (!!!) eines wohnortes und (!!!) die Eingabe eines Schulfaches die Treffer auf der Tabelle Lehrer ansprechen und dann ansprechen

    Wenn das oben das besagt - wie schon gesagt - die beiden eingegeben Daten oben sind nämlich eigentlich Treffer in meiner Datenbank

    Probiere jetzt das Ganze mal mit anderen Werten - Moment:

    Ja - es kommt dann das gleiche in "Grün" - genau das gleiche mit den anderen Werteingaben!!!


    Das mußt du entscheiden, ob das dann meiner Suchanfrage entsprechen soll - also ich glaube schon -oder nicht ??

    Aber wo liegt dann der Fehler ???
    Warum ist das true dann bei dir nicht falsch in Ausgabe ?


    Moment jetzt fällt mir doch was ein:

    ich habe ja für das Formular lortplz als Variable hinterlegt und in Tabelle Lehrer aber nur plz und wohnort als Felder - und das gleiche mit den Fächern:
    die Fächer heißen als Variable lfach in formular und in Lehrertabelle aber faecher als Feld - ist das evtl. ein problem.

    Es soll also nicht so sein, daß die Bedingung nur erfüllt ist, dass alle Suchanfragen nur die PLZ 71292 und das Fach Englisch ausgeben - so ist das nicht gemeint.


    Müßte die Abfrage nicht irgendwie so aussehen:

    Select from * tabelle_lehrer WHERE plz or wohnort = 'wert' AND fach ='wert'


    Tschuldigung wenn das jetzt evtl. Fehler beinhaltet!!!Mit 'wert' meine ich den eingegebenen Suchwert!!!



    Ist dir klar, wie ich die Suchanfrage mit Ausgabe haben möchte ?


    wie soll ich weiter machen ??


    Danke dir vielmals bis jetzt !!!!
  • Hallo again,
    super - bin weitergekommen!!!

    Habe zu dem Bug mit dem Unknown column 'true' in 'where clause' einen Link gefunden - hier:

    http://ftp.gridsphere.org/browse/GPF-192


    da steht, wie man den Fehler behebt:

    Lt. Anleitung habe ich dann true mit 1 ersetzt - und siehe da es hat geklappt - mit der eingabe der richtigen plz und des richtigen faches spukte er mir dann den Datensatz des Lehrers aus .

    vorher habe ich dann aber noch folgendes gemacht:

    Quellcode

    1. if(is_array($form_input)) {
    2. $where_string .= implode(array_map(
    3. create_function('$a,$b','if ($a != "suchform" ) return "AND `$a` = \'$b\' ";'),
    4. array_keys($form_input),
    5. array_values($form_input)));



    denn das mit der suchform war ja noch nicht hinterlegt !!!

    Und dann habe ich noch im suchformular die inputs geändert: so auf die werte wie auch die felder in lehrertabelle sind!!!

    und es hat geklappt - blindes huhn findet auch mal ein korn !!!

    Aber nun habe ich noch das problem, dass ich noch keinen wohnort eingeben kann statt der plz - denn ich wollte ja eigentlich plz oder wohnort haben !!!

    wie kann ich das lösen?

    Evtl. ungefähr so:

    wenn suche in plz und buchstaben folgen dann umlenken und suche in wohnort - geht das so irgendwie ???

    oder anders: wenn suche in plz und keine zahlen folgen dann umlenken und suche in wohnort !!!

    wie setzt man das um ???

    Danke dir viel, vielmals
  • dann änder mal die create funktion zeile um:

    Quellcode

    1. create_function('$a,$b','return $b != "" ? "AND `$a` = \'$b\' ":"";'),


    Hier ein Testscript:

    Quellcode

    1. <?php
    2. $form_input = $_POST ;
    3. $where_string = " WHERE 1 ";
    4. if(is_array($form_input)) {
    5. $where_string .= implode(array_map(
    6. create_function('$a,$b','return $b != "" ? "AND `$a` = \'$b\' ":"";'),
    7. array_keys($form_input),
    8. array_values($form_input)));
    9. echo $where_string;
    10. }
    11. ?>
    12. <form method="post">
    13. <input type="text" name="wohnort" value="W" /><br />
    14. <input type="text" name="plz" value="" /><br />
    15. <input type="text" name="test" value="123" /><br />
    16. <input type="submit" />
    17. </form>
    Alles anzeigen
  • Hi ,

    nun kommt folgenderFehler:



    Fehler bei der Ausführung der Abfrage SELECT * FROM tabelle_lehrer
    WHERE 1 AND `plz` = 'Heimsheim' AND `faecher` = 'Englisch' AND
    `suchform` = 'Suchen' : Unknown column 'suchform' in 'where clause'


    Du hast meine Spalte "suchform" wegen dem Formular nicht berücksichtigt !!!


    Ich hatte es ja dann zusätzlich so berücksichtigt:

    Quellcode

    1. if(is_array($form_input)) {
    2. $where_string .= implode(array_map(
    3. create_function('$a,$b','if ($a != "suchform" ) return "AND `$a` = \'$b\' ";'),
    4. array_keys($form_input),
    5. array_values($form_input)));




    Bei mir heißt es ja im formular:

    Quellcode

    1. <form action="ergebnis_lehrersuche.php" method="post" name="suchform">



    also wie dann ??

    Hast du verstanden - wie ich es möchte ???

    also entweder in dem suchfeld PLz oder Wohnort eingeben und als Zusatzbedinung noch das Schulfach

    Bei mir heißt die Suchspalte für PLZ/wohnort jetzt im input plz !!
    die suchspalte für Fächer heißt im input faecher !!!!


    Danke schonmal !!!

    Hast mir schon super viel geholfen !!!!![/quote]