Suchfunktion für Datenbanktabelle
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Re: Suchfunktion für Datenbanktabelle
Check mal BNas Codeanpassungen zu dieser Thematik: Klick
Hint: Deine Single Quotes sind nicht escaped, daher der Parse Fehler.
Hint: Deine Single Quotes sind nicht escaped, daher der Parse Fehler.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
Re: Suchfunktion für Datenbanktabelle
@Miriam
Schreibweise stimmt erst mal alles genau wie von BNa geschrieben.
$id = request_var('id', 0); bzw. $id = request_var('id', '', 0); hab ich mal mit beiden Varianten getestet.
if ($_POST['submit']) hab ich geändert in
$submit = (isset($_POST['submit'])) ? true : false;
Fehler ist immer noch da
Schreibweise stimmt erst mal alles genau wie von BNa geschrieben.
$id = request_var('id', 0); bzw. $id = request_var('id', '', 0); hab ich mal mit beiden Varianten getestet.
if ($_POST['submit']) hab ich geändert in
$submit = (isset($_POST['submit'])) ? true : false;
Fehler ist immer noch da
Re: Suchfunktion für Datenbanktabelle
Hier wird doch eine ganz andere Zeile / anderer Code angemeckert. Oder stehe ich jetzt auf dem Schlauch?Walter91 hat geschrieben:Parse error: syntax error, unexpected T_VARIABLE on line 22
das ist diese Zeile:
WHERE id = ' . $_POST['suche']$id . '

Alle
$_POST['suche']
sind doch weg bzw. sollten weg sein.Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
Re: Suchfunktion für Datenbanktabelle
@Miriam
Ist mir ehrlich gesagt auch rätselhaft. Komischerweise kommt jetzt der Fehler:
Parse error: syntax error, unexpected ')'
Irgendwo eine Klammer falsch gesetzt ???
Der aktuelle Code
Ist mir ehrlich gesagt auch rätselhaft. Komischerweise kommt jetzt der Fehler:
Parse error: syntax error, unexpected ')'
Irgendwo eine Klammer falsch gesetzt ???
Der aktuelle Code
Code: Alles auswählen
$submit = (isset($_POST['submit'])) ? true : false;
{
$id = request_var('id', '', 0);
$vorname = request_var('vorname', '', true);
$nachname = request_var('nachname', '', true);
$ort = request_var('ort', '', true);
$strasse = request_var('strasse', '', true);
$geburtsdatum = request_var('geburtsdatum', '');
$sql = 'SELECT * FROM ' . TOURZIEL_TABLE . '
WHERE id = ' . $id . '
AND vorname = ' . $vorname . '
AND nachname = ' . $nachname . '
AND ort = ' . $ort . '
AND strasse = ' . $strasse . '
AND geburtsdatum = ' . $geburtsdatum;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('liste', array(
'POST_ID' => $row['id'],
'POST_VORNAME' => $row['vorname'],
'POST_NACHNAME' => $row['nachname'],
'POST_ORT' => $row['ort'],
'POST_STRASSE' => $row['strasse'],
'POST_GEBURTSDATUM' => $row['geburtsdatum'],
));
}
$db->sql_freeresult($result);
$template->assign_vars(array(
'U_FORM_ACTION' => append_sid($phpbb_root_path . 'search_functions.' . $phpEx, 'mode=search&id=' . $row['id']),
));
Re: Suchfunktion für Datenbanktabelle
Ich weiss jetzt nicht, wo genau der Fehler angemeckert wurde. Aber einige Variablen in der SQL Query sind doch Strings, dann mußt Du das etwas anders schreiben, weil die einfachen Quotes bei Dir das Ende des $sql-Variablen-Strings bezeichnen und nicht den übergebenen Wert als String markieren.... Ich hoffe, das war verständlich.
Es sollte also eher so aussehen (ungetestet):
Du solltest in der Where Clause eher
Es sollte also eher so aussehen (ungetestet):
Code: Alles auswählen
$submit = (isset($_POST['submit'])) ? true : false;
if ($submit)
{
$id = request_var('id', 0);
$vorname = request_var('vorname', '', true);
$nachname = request_var('nachname', '', true);
$ort = request_var('ort', '', true);
$strasse = request_var('strasse', '', true);
$geburtsdatum = request_var('geburtsdatum', '');
$sql = 'SELECT * FROM ' . TOURZIEL_TABLE . '
WHERE id = ' . (int)$id . "
OR vorname = '" . $db->sql_escape($vorname) . "'
OR nachname = '" . $db->sql_escape($nachname) . "'
OR ort = '" . $db->sql_escape($ort) . "'
OR strasse = '" . $db->sql_escape($strasse) . "'
OR geburtsdatum = '" . $db->sql_escape($geburtsdatum). "'";
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('liste', array(
'POST_ID' => $row['id'],
'POST_VORNAME' => $row['vorname'],
'POST_NACHNAME' => $row['nachname'],
'POST_ORT' => $row['ort'],
'POST_STRASSE' => $row['strasse'],
'POST_GEBURTSDATUM' => $row['geburtsdatum'],
));
}
$db->sql_freeresult($result);
$template->assign_vars(array(
'U_FORM_ACTION' => append_sid($phpbb_root_path . 'search_functions.' . $phpEx, 'mode=search&id=' . $row['id']),
));
}
LIKE
einsetzen als =
.Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen
Re: Suchfunktion für Datenbanktabelle
Danke Miriam
Habe die Zeilen von AND auf OR geändert.
Ganz unten hatte ich die letze Klammer vergessen. Jetzt läuft das erst mal ohne Fehlermeldung bis zum Suchformular durch.
Jetzt kann ich mich daran machen die Ausgabeseite zu basteln.
Habe die Zeilen von AND auf OR geändert.
Ganz unten hatte ich die letze Klammer vergessen. Jetzt läuft das erst mal ohne Fehlermeldung bis zum Suchformular durch.
Jetzt kann ich mich daran machen die Ausgabeseite zu basteln.
Re: Suchfunktion für Datenbanktabelle
War ein langer Tag, da kann sowas mal passieren.Miriam hat geschrieben:Eine Variable wird aber so:$id = request_var('id', 0);
* in Integer gecastet.
Area51@4seven | Area51@4seven / Reloaded | Kein Support via PN
Club goin up, on a Tuesday...
Club goin up, on a Tuesday...
Re: Suchfunktion für Datenbanktabelle
Ich habe das jetzt mal auf eine vorhandene größere Datenbank umgeschrieben um mehr Testmöglichkeiten zu haben.
Die search.php soll die Daten einsammeln und an die search_2.php ausgeben.
Leider funktioniert die Datenübergabe noch nicht. Hat jemand einen Tipp wo der Fehler liegt?
search.php
search.html
search_2.php
Die search.php soll die Daten einsammeln und an die search_2.php ausgeben.
Leider funktioniert die Datenübergabe noch nicht. Hat jemand einen Tipp wo der Fehler liegt?
search.php
Code: Alles auswählen
$submit = (isset($_POST['submit'])) ? true : false;
{
$id = request_var('id', 0);
$land = request_var('land', '', true);
$name = request_var('name', '', true);
$plz = request_var('plz', '', true);
$ort = request_var('ort', '', true);
$strasse = request_var('strasse', '', true);
$telefon = request_var('telefon', '', true);
$sql = 'SELECT * FROM ' . TOURZIEL_TABLE . '
WHERE id = ' . (int)$id . "
OR land LIKE '" . $db->sql_escape($land) . "'
OR name LIKE '" . $db->sql_escape($name) . "'
OR plz LIKE '" . $db->sql_escape($plz) . "'
OR ort LIKE '" . $db->sql_escape($ort) . "'
OR strasse LIKE '" . $db->sql_escape($strasse) . "'
OR telefon LIKE '" . $db->sql_escape($telefon). "'";
$result = $db->sql_query($sql);
$template->assign_vars(array(
'U_FORM_ACTION' => append_sid($phpbb_root_path . 'search_2.' . $phpEx, 'mode=search' . $row['id']),
));
}
Code: Alles auswählen
<form method="post" action="{U_FORM_ACTION}">
<table width="300" border="0">
<tr>
<td>Suchbegriff eingeben</td>
<td><input type="text" id="id" name="id" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="Suchen"></td>
</tr>
</table>
Code: Alles auswählen
$sql = 'SELECT * FROM ' . TOURZIEL_TABLE . '
ORDER BY name';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('liste', array(
'POST_ID' => $row['id'],
'POST_LAND' => $row['land'],
'POST_NAME' => $row['name'],
'POST_PLZ' => $row['plz'],
'POST_ORT' => $row['ort'],
'POST_STRASSE' => $row['strasse'],
'POST_TELEFON' => $row['telefon'],
));
}
$db->sql_freeresult($result);
Re: Suchfunktion für Datenbanktabelle
Ich habe das jetzt hin bekommen es funktioniert.
Allerdings mit einer kleinen Einschränkung.
Wenn ich in die Suche eingebe:
z.B. den Vornamen Mike findet das Script z.B. Mike Müller , Mike Meier, Mike Schulze usw.
Suche ich dagegen nach Müller , Meier oder Schulze findet er nichts.
Das Script findet also jetzt nur Zeichen die am Anfang des Datensatzes stehen.
Kann jemand helfen wie ich das ändern kann?
Allerdings mit einer kleinen Einschränkung.
Wenn ich in die Suche eingebe:
z.B. den Vornamen Mike findet das Script z.B. Mike Müller , Mike Meier, Mike Schulze usw.
Suche ich dagegen nach Müller , Meier oder Schulze findet er nichts.
Das Script findet also jetzt nur Zeichen die am Anfang des Datensatzes stehen.
Kann jemand helfen wie ich das ändern kann?
Re: Suchfunktion für Datenbanktabelle
Beispiel:
.... LIKE '%" . $db->sql_escape($name) . "%'
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Ich schmeiß' alles hin und...
... lasse es liegen