Seite 2 von 4
Re: Daten in Datenbank-Tabelle eintragen / anzeigen
Verfasst: 13.02.2012 22:46
von Pyramide
Damit hast du aber eine
SQL-Injection, da die Variablen nicht escaped werden.
Volli3 hat geschrieben:Ich bekomm das einfach nicht hin das phpbb das gleiche macht was mit einer einfachen php fast spielend geht.
Woran scheitert es denn genau? Wie sieht dein aktueller Code aus, nachdem du versucht hast, die phpBB-Funktionen einzubauen?
Volli3 hat geschrieben:Fehlermeldung wird keine angezeigt.
Hast du denn wie von mir geschrieben die Funktion mysql_query durch den phpBB-DBAL (konkret die Funktion sql_query) ersetzt? Diese gibt nämlich auftretende Fehler automatisch aus. Sollte danach immer noch weder ein Datensatz in der Datenbank noch eine Fehlermeldung erscheinen, musst du noch einen Fehler in der Programmlogik haben.
Siehe auch: KB:programmierfragen
Re: Daten in Datenbank-Tabelle eintragen / anzeigen
Verfasst: 13.02.2012 22:51
von Miriam
Also das hier wäre eine funktioniere Query:
Code: Alles auswählen
$sql = 'INSERT INTO ' . ADRESSEN_TABLE . ' (Name, Strasse, PLZ, Ort, Mobil, Festnetz, Email, Homepage, Notiz)
VALUES ("' . request_var('Name','') . '","' . request_var('Strasse','') . '","' . request_var('PLZ','') . '","' . request_var('Ort','') . '","' . request_var('Mobil','') . '","' . request_var('Festnetz','') . '","' . request_var('Email','') . '","' . request_var('Homepage','') . '","' . request_var('Notiz','') . '")';
$db->sql_query($sql);
Aber übersichtlicher sieht es so aus:
Code: Alles auswählen
$sql = 'INSERT INTO ' . ADRESSEN_TABLE . ' ' . $db->sql_build_array('INSERT', array(
'Name' => (string) request_var('Name',''),
'Strasse' => (string)request_var('Strasse',''),
'PLZ' => (int)request_var('PLZ',''),
'Ort' => (string)request_var('Ort',''),
'Mobil' => (int)request_var('Mobil',''),
'Festnetz' => (int)request_var('Festnetz',''),
'Email' => (string)request_var('Email',''),
'Homepage' => (string)request_var('Homepage',''),
'Notiz' => (string)request_var('Notiz',''))
);
$db->sql_query($sql);
Du musst auch
$db->sql_query($sql);
benutzen...
Re: Daten in Datenbank-Tabelle eintragen / anzeigen
Verfasst: 14.02.2012 13:39
von Helmut
Hallo Volli3,
dann zeig doch mal her was du schon gemacht hast und vor allem was für Fehlermeldungen dann gekommen sind wenn es nicht geklappt hat.
Mit den Beispielen von mir und Miriam solltest du es eigentlich hin bekommen.
Ich habe gestern Abend noch schnell ein lauffähiges Beispiel gemacht, besteht aus 5 Dateien und einem Eintrag in die includes/common.php. Vielleicht werde ich es noch als Beispiel zum Download bereit stellen, mal sehen.
Gruß Helmut
Re: Daten in Datenbank-Tabelle eintragen / anzeigen
Verfasst: 14.02.2012 19:44
von Volli3
Erst mal Dank an Euch alle für die schnelle Hilfe, es läuft
Nach dem mir Helmut den Lösungsweg gezeigt hatte, habe ich das auch so geschrieben. Der Post von Miriam war die Bestätigung das ich es eigentlich richtig gemacht hatte.
Das es trotzdem nicht funktionierte liegt daran das ich einen ziemlich blöden Anfängerfehler gemacht habe.
Ich habe alles noch mal durchgesehen.
Und das war die Lösung:
Im Template hatte ich geschrieben:
<td><input type="text" name="Name" size="30" /></td>
In der adress_eintrag.php:
'Name' => request_var('name',''),
Das funktioniert also deshalb nicht, weil die Groß-Kleinschreibung nicht überein stimmte.
Richtig muss ich schreiben:
'Name' => request_var('Name',''), (Das muss ich natürlich für alle Spalten so schreiben)
Nachdem ich das geändert habe läuft es.
sql_query zeigt bei dieser falschen Schreibweise keinen Fehler an. Deshalb habe ich auch fast 2 Stunden gebraucht um die eigentlich primitive Lösung zu finden. (ich streu Asche auf mein Haupt..., aber man lernt aus Fehlern)
Falls ich Euch noch mal nerven darf:
Was ich bis jetzt nicht hin bekomme ist eine kleine Suchfunktion.
Re: Daten in Datenbank-Tabelle eintragen / anzeigen
Verfasst: 14.02.2012 20:51
von Helmut
Hallo Volli3,
na da hätten wir noch lange herum reden können ....
Tipp ... gewöhne dir an, dass du entweder alles Groß oder alles Klein schreibst, wie aus meinem Beispiel, dann kommt sowas nicht so leicht vor. Du solltest auch die Bezeichnungen für die Spalten in deiner Datenbank klein schreiben.
So eine Suche ist relativ einfach zu machen, das Stchwort für die SQL Abfrage lautet
LIKE
. Du holst dir z.B. über
$suchen_plz = request_var('plz', '');
den Suchbegriff aus dem Formular und machst dann sowas hier:
Code: Alles auswählen
$sql = 'SELECT cat_id, article_id, COUNT(article_id) AS total_posts
FROM ' . LISTEN_ARTICLE_TABLE ."
WHERE activ = 1
AND cat_id = $cat_id
AND plz LIKE '$suchen_plz%'
GROUP BY article_id AND cat_id";
$result = $db->sql_query($sql);
......
Du musst die Abfrage halt noch nach deinen Wünschen anpassen je nachdem was du als Ergebnis haben willst. Natürlich ist noch eine Überprüfung der Eingabe durch den User sinnvoll wie etwa bei PLZ dass nur Zahlen genommen werden.
Gruß Helmut
Re: Daten in Datenbank-Tabelle eintragen / anzeigen
Verfasst: 15.02.2012 18:34
von Volli3
OK Helmut, ich denke das hab ich kapiert.
Mir ist nur im Moment noch nicht ganz klar wie ich das Template dazu schreibe.
Re: Daten in Datenbank-Tabelle eintragen / anzeigen
Verfasst: 16.02.2012 14:08
von Helmut
Hallo Volli3,
funktioniert wie bei der Eingabe ins Formular wo du den ganzen Datensatz eingibst, also auch mit <input type="text" id="plz" name="plz" size="5" maxlength="5" value=""/>
und den Absende Button <input type="submit" .....
dazu.
Gruß Helmut
Re: Daten in Datenbank-Tabelle eintragen / anzeigen
Verfasst: 18.02.2012 17:10
von Volli3
Suche funktioniert noch nicht. So hab ich jetzt.
Bringt Allgemeiner Fehler
Code: Alles auswählen
$sql = 'SELECT id, ort, COUNT(ort) AS total_posts
FROM ' . ADRESSEN_TABLE ."
WHERE activ = 1
AND id = $id
AND ort LIKE '$suchen_ort%'
GROUP BY ort AND id";
$result = $db->sql_query($sql);
$suchen_ort = request_var('ort', '');
$template->assign_block_vars('liste', array(
'ORT' => $ort,
));
$db->sql_freeresult($result);
Re: Daten in Datenbank-Tabelle eintragen / anzeigen
Verfasst: 18.02.2012 17:45
von Helmut
Hallo Volli3,
was willst du denn als Ergebnis bekommen, Eine Liste mit Orten oder die Anzahl der gesuchten Orte?
Dein Code ergibt so auch keinen Sinn, du würdest bestenfalls wenn keine Fehlermeldung kommen würde, den letzten gefundenen Datensatz bekommen.
Gibt es in deiner Tabelle eine Spalte 'activ' und in deinem Code ein $id und was sagt der aus?
Gruß Helmut
Re: Daten in Datenbank-Tabelle eintragen / anzeigen
Verfasst: 18.02.2012 20:13
von Volli3
Die Suchabfrage soll nach Orten ausgegeben werden.
Habe es jetzt noch mal geändert. Fehlermeldung ist weg, aber noch keine Ausgabe.
Da fehlt sicher noch was.
Code: Alles auswählen
$sql = 'SELECT ort, COUNT(ort) AS total_posts
FROM ' . ADRESSEN_TABLE ."
WHERE ort = 10
AND ort LIKE '$suchen_ort%'
GROUP BY ort";
$result = $db->sql_query($sql);
$suchen_ort = request_var('ort', '');
$template->assign_vars(array(
'U_FORM_ACTION' => append_sid($phpbb_root_path . 'adress_suche.' . $phpEx, 'mode=search'),
));
$template->assign_block_vars('liste', array(
'ORT' => $ort,
));
$db->sql_freeresult($result);