Daten in Datenbank-Tabelle eintragen / anzeigen

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
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.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Beitrag von Pyramide »

Volli3 hat geschrieben:Ich habe vor paar Wochen mit einer gleichen Datenbank-Tabelle mal genau das gemacht was bei http://www.schattenbaum.net/php/insert2.php und folgende Seiten so hervorragend beschrieben wird.
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
KB:knigge
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Beitrag 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...
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Beitrag 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
Ich bin nicht ganz dicht.... na und.
Volli3
Mitglied
Beiträge: 14
Registriert: 12.02.2012 12:22

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Beitrag von Volli3 »

Erst mal Dank an Euch alle für die schnelle Hilfe, es läuft :grin:

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.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Beitrag 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
Ich bin nicht ganz dicht.... na und.
Volli3
Mitglied
Beiträge: 14
Registriert: 12.02.2012 12:22

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Beitrag 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.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Beitrag 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
Ich bin nicht ganz dicht.... na und.
Volli3
Mitglied
Beiträge: 14
Registriert: 12.02.2012 12:22

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Beitrag 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);
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Beitrag 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
Ich bin nicht ganz dicht.... na und.
Volli3
Mitglied
Beiträge: 14
Registriert: 12.02.2012 12:22

Re: Daten in Datenbank-Tabelle eintragen / anzeigen

Beitrag 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);
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“