Thread Verfasser: Catzenjaeger
Thread ID: 959
Thread Info
Es gibt 8 Beiträge zu diesem Thema, und es wurde 4276 Mal angesehen.  Ausserdem wurden Dateien angehängt.
 Thema drucken
submit - kurze Hilfe für Eintrag in DB gesucht
Catzenjaeger
Formular funzt und wird korrekt dargestellt aber die Daten laufen nicht ein - findet jemand den Fehler?

die Datem sollen die Tabelle DB_FIGURE_ITEM einlaufen

übrigens ich bekomme keinerlei Fehleranzeige und die Seite bleibt nach drücken des Buttons SUBMIT weis und kehrt nicht zurück


KOMMENTAR VON LAYZEE: Lange Codes bitte als ANHANG, danke.

Zusammengefügt am 12. Juni 2016 um 19:!37:59:
ok Chef Smile
Catzenjaeger hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.

Bearbeitet von Catzenjaeger am 12. Juni 2016 17:37:59
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Wemi
Hast du deine submit.php denn im Fusion Root?

Denn dein Formular geht wegen BASEDIR in die Fusion eigene submit.php und nicht in deine.

aus

BASEDIR."submit.php?stype=f


muss dann folglich:


INFUSIONS."figurelib/submit.php?stype=f

werden.
figurelib mit dem tatsächichen Ordner austauschen.

Auch bei deinen Links im Code, solltest du die Pfadangaben nochmals überprüfen. Denn index.php geht auf eine leere Seite in deinem Infusionsordner deiner Infusion.
"Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Catzenjaeger
keinerlei Fehler angezeigt im errorlog!

######################################

Hier meine neuste submit .php

1.) Fehlerbehandlung ... also popup bei fehlenden Daten funzt bis auf AGB . Dort kommt kein Popup

2.) daten werden nur einige eingetragen .. warum kann ich nicht finden. ZB wird bei Cat immer 0 eingetragen. Bei Den Number Fields wird überall 0,00 eingetragen

3.) figure_submitter übergabe scheint ok .. es wird 1 (das ist meine ID) eingetragen
Catzenjaeger hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.

Bearbeitet von Catzenjaeger am 13. Juni 2016 12:45:03
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Wemi
Mehr kann ja auch nicht gespeichert werden.

Du hast deine Daten ja in 3 verschiedene Arrays gespeichert und versuchst dann noch ein komplettes Array in ein datenbankfeld zuschreiben, dass nicht vorhanden ist.

Diese Funktion

dbquery_insert(DB_FIGURE_ITEMS, $inputArray, "save");

Sollte aus Sicherheitsgründen niemand in der V9 nutzen.

Die einzige Funktion, die man nutzen kann wäre


dbquery($query,$parameter);


Dann würde dein Datenbankeintrag wie folgt aussehen (nicht vollständig, nur um zu zeigen, wie der Aufbau aussehen muss)


dbquery("INSERT INTO ".DB_FIGURE_ITEMS." (figure_submitter, figure_title) VALUES (:figure_submitter, :figure_title)", array(':figure_submitter'=>$userdata['user_id'],
 ':figure_title'=>$submit_info['figure_title'])

Das ist nun ein Datenbankeintrag mit Prepared Statements, so überlässt du dann MySQL das Absichern gegen SQL Injection, gerade wenn man mal addslashes() vergessen hat, bei der Validierung der Daten.

Und du kannst dann auch wirklich sehen, ob du alle Felder in deiner Tabelle abdeckst und die richtigen Daten an der richtigen Stelle speicherst.
"Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Catzenjaeger
super danke für die Erklärung Smile ... ich muss da noch einmal nachfragen. Oben steht das niemand dbquery_insert in Version 9 nutzen soll.

was mich wundert ... alle werksseitigen Infusion der 9 tragen ihre Daten so ein. Hast du dich geirrt?
Bearbeitet von Catzenjaeger am 23. Juni 2016 07:49:15
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Wemi
Nein ich habe mich nicht geirrt.

dbquery_insert nutzt keine prepared Statements, heisst alles was in die DB kommt wird nicht maskiert. Eine falsche Zeichenfolge und deine Datenbank könnte sogar gelöscht werden.

In der Regel nutzen die UK's dafür die function addslashes zum Eintragen in die Datenbank und stripslashes um den Inhalt wieder anzuzeigen.

Ist nur ein Tipp von mir ersteres sich anzugewöhnen. So ist es immer sicher, falls man letzteres mal vergessen hat.
"Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Catzenjaeger
aber ich habs doch nach dem beispiel der weblinks, blog,news usw aus version 9 nachgebaut .. ist es falsch?

Zitat


//Save
if (defender::safe()) {
$inputArray = array(
"submit_type" => "f",
"submit_user" => $userdata['user_id'],
"submit_datestamp" => time(),
"submit_criteria" => addslashes(serialize($criteriaArray))

Bearbeitet von Catzenjaeger am 23. Juni 2016 08:43:09
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Wemi
Falsch nicht, es führen eben mehrere Wege nach Rom.
"Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
Information:
PHP Version: Nicht ausgewählt •  MySQL Version: Nicht ausgewählt •  PHP-Fusion: Nicht ausgewählt
 
Springe ins Forum: