• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Daten mit ASP in eine Access Datenbank schreiben? Umschreiben von PHP in ASP

ChrisMa

New member
Hallo,

für eine Projektarbeit, die ich bis zum 23.04. abgeben muss, brauche ich dringend Hilfe bei der Übertragung der Daten an eine Datenbank.

Ich habe das ganze schon in PHP gelöst, was leider nicht funktioniert da der Webserver ein IIS ist, und bräuchte deshalb schnellstmöglich Hilfe wie ich das ganze in ASP umschreiben.

Hier der CODE:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<title>Aufnahmeantrag</title>
<meta name="author" content="Author">
<meta name="editor" content="html-editor phase 5">
</head>

<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<?php

         $anrede = $_GET['anrede'];
         $titel = $_GET['titel'];
         $name = $_GET['name'];
         $vorname = $_GET['vorname'];
         $strasse = $_GET['strasse'];
         $plz = $_GET['plz'];
         $ort = $_GET['ort'];
         $email = $_GET['email'];
         $tel_privat = $_GET['telefon_privat'];
         $tel_dienst = $_GET['telefon_dienst'];
         $taetigkeit = $_GET['taetigkeit'];
         $tsb_studierender_seit = $_GET['tsb_studierender_seit'];
         $semester_bezeichnung = $_GET['semester_bezeichnung'];
         $tsb_absolvent = $_GET['tsb_absolvent'];
         $semester_abschluss = $_GET['semester_abschluss'];
         $tsb_fachrichtung = $_GET['tsb_fachrichtung'];
         $kto_nummer = $_GET['kto_nummer'];
         $bankleitzahl = $_GET['blz'];
         $bankname = $_GET['bankname'];
         $kto_inhaber = $_GET['kto_inhaber'];

//////////////////////////////////////////////////////////////////////

//Überprüfung der Pflichtfelder gegen leere Einträge

if ($anrede == "" || $name == "" || $vorname == "" || $strasse == "" || $plz == "" || $ort == "" ||
   $email == "" || $tel_privat == "")
{
         echo "Bitte überprüfen Sie die Angaben der <u>unterstrichenen</u> Pflichtfelder";
         echo "<BR><BR><a href=BLOCKED SCRIPThistory.back()>Zurück</a>";
}
else
{

        //prüfen ob Eingabewerte den Konventionen entsprechen

        if ( preg_match('~^[a-zA-Z]+$~', $name) && preg_match('~^[a-zA-Z]+$~', $vorname) && preg_match('~^[0-9]+$~', $plz) &&
        preg_match('~^[a-zA-Z]+$~', $ort) && strpos($email, "@") && strpos($email, ".") && preg_match('~^[0-9-]+$~',$tel_privat))

        {
         echo "Daten wurden übertagen";
         echo "<BR>>>Link zur Startseite";

         $sqlstring_insert ="INSERT INTO tab_frm_fkreis_gesamt
                 (anrede, titel, name, vorname, strasse, plz, ort, email, telefon_privat, telefon_dienst,
                 taetigkeit, tsb_studierender_seit, semester_bezeichnung, tsb_absolvent, semester_abschluss,
                 tsb_fachrichtung, kto_nummer, blz, bankname, kto_inhaber)
                 VALUES ('$anrede', '$titel', '$name', '$vorname', '$strasse', '$plz', '$ort', '$email',
                 '$tel_privat', '$tel_dienst', '$taetigkeit', '$tsb_studierender_seit', '$semester_bezeichnung',
                 '$tsb_absolvent', '$semester_abschluss', '$tsb_fachrichtung', '$kto_nummer', '$bankleizahl',
                 '$bankname', '$kto_inhaber')";

         //echo $sqlstring_insert;

         $db = "Formular_DB";
         $cndb = odbc_connect($db, '', '');
         $writedb = odbc_exec($cndb, $sqlstring_insert);

        }
        else
        {
         echo "Bitte überprüfen sie die Pflichtfelder und beachten sie die Konventionen!";
         echo "<BR>z.B.: Name = a-z, A-Z / Telefon = 0815-12345 ";
        }
}
?>
</body>
</html>

Bitte um Hilfe! Habt ihr einen Tipp für mich, was muss ich ändern damit es funktioniert?

Vielen Dank und viele Grüße

Chris
 
Was willst Du mir sagen?
??? Du stehst offenbar auf der Leitung.

Deine Beiträge sind Äquivalente zum "Läuft Nicht"-Posting aus dem genannten Link. Da Du diesen wohl nicht zu Ende gelesen hast, hier die Kurzzusammenfassung:
- Wir sind kein Rateclub.
- Wenn Du keine oder kaum Daten / Infos lieferst, dann ist die Wahrscheinlichkeit einer schnellen Lösung eher bei Null zu suchen.

Nehmen wir z.B. Deine 2. Frage "soweit schon in der testumgebung durchgeführt, aber jetzt kommen keine daten mehr in der datenbank an.
ne idee woran das liegt?".
Was will uns der Autor damit sagen?
- Dass seine Shift Taste kaputt ist?
- Will er/sie/es zu einem Brainstorming anregen? Mein Tipp waren ja die Sonnenflecken - die kann man ja nie ganz ausschließen.
- Wie hat er/sie/es festgestellt, dass nix mehr ankommt?
- Was sollte stattdessen ankommen?
- Ist es vielleicht korrekt, dass nichts ankommt und nur die Erwartung des Autors, dass etwas ankommen müßte, ist falsch?
- Wieso erwartet der Autor etwas, wenn ganz klar gar nichts kommen müßte?
- Wieso ist der Ausbleib von Etwas, das erwartet wurde, aber ganz offenbar nicht kommen kann, erwähnenswert?
- Ist das Netzwerkkabel eingestöpselt?
- Und wer serviert seine Webseiten von einem IIS?
- ....

Die Frageliste kann noch ewig so weiter gehen. Aber wir trainieren hier ja nicht für irgendeine Quizshow.
 
ok ok, ich bin davon ausgegangen das weiter oben alles ausreichend wäre. Aber wohl hast du recht.

Ich habe also PHP schon in den IIS implementiert (Testumgebung: VM mit Windows XP und IIS 5.1, Access DB Anbindung über ODBC).Ich kann dort auch PHP ausführen, allerdings nur bis zu einem gewissen Punkt. Nach Bestätigung des Sendenbuttons bekomme ich immerhin die Rückmeldung das die Daten an die DB übertragen wurden, aber wenn ich dann in die DB schaue ist nichts angekommen. -> Dabei müssten die Daten in die DB geschrieben werden.
Warum das so ist, ist für mich ein Rätzel, denn am Code habe ich nichts geändert!

Warum das in einem IIS läuft, kann ich auch nicht nachvollziehen, ist aber die Vorgabe und nicht meine Idee.
Ich kann mir vorstellen das die entsprechenden Personen gern in ihrer gewohnten Umgebung bleiben wollten...

Ich hoffe das ich jetzt alles nötige erwähnt habe, wenn nicht dann füge ich es gern an.

Grüße Chris
 
ok ok, ich bin davon ausgegangen das weiter oben alles ausreichend wäre. Aber wohl hast du recht.

Ich habe also PHP schon in den IIS implementiert (Testumgebung: VM mit Windows XP und IIS 5.1, Access DB Anbindung über ODBC).Ich kann dort auch PHP ausführen, allerdings nur bis zu einem gewissen Punkt. Nach Bestätigung des Sendenbuttons bekomme ich immerhin die Rückmeldung das die Daten an die DB übertragen wurden, aber wenn ich dann in die DB schaue ist nichts angekommen. -> Dabei müssten die Daten in die DB geschrieben werden.
Warum das so ist, ist für mich ein Rätzel, denn am Code habe ich nichts geändert!

Warum das in einem IIS läuft, kann ich auch nicht nachvollziehen, ist aber die Vorgabe und nicht meine Idee.
Ich kann mir vorstellen das die entsprechenden Personen gern in ihrer gewohnten Umgebung bleiben wollten...

Ich hoffe das ich jetzt alles nötige erwähnt habe, wenn nicht dann füge ich es gern an.

Grüße Chris

am besten du findest erstmal raus, wo/was nicht so funktioniert.
wie es aussieht, funktioniert die Zeile
Code:
$writedb = odbc_exec($cndb, $sqlstring_insert);
anscheinend nicht richtig.
* Wird das SQL-Statement korrekt zusammengebaut? ==> Statement ausgeben lassen und prüfen.
* Wird die funcktion odbc_exec korrekt ausgeführt? ==> return-Code prüfen
* ...
 
Ich habe also PHP schon in den IIS implementiert (Testumgebung: VM mit Windows XP und IIS 5.1, Access DB Anbindung über ODBC).Ich kann dort auch PHP ausführen, allerdings nur bis zu einem gewissen Punkt. Nach Bestätigung des Sendenbuttons bekomme ich immerhin die Rückmeldung das die Daten an die DB übertragen wurden, aber wenn ich dann in die DB schaue ist nichts angekommen. -> Dabei müssten die Daten in die DB geschrieben werden.
Warum das so ist, ist für mich ein Rätzel, denn am Code habe ich nichts geändert!
Hmmm....

Das Debuggen einer Software erfordert verschiedene Fähigkeiten:
- man muss nachdenken
- man muss Annahmen treffen
- man muss beobachten
- man wird in seinen Annahmen bestätigt
- man wird eines Besseren belehrt
- man muss Rückschlüsse ziehen
- man kreist die Fehlerstelle ein
- man verifiziert die Funktion einzelner Teilbereich
- usw.

All das ist aus der Ferne schon schwer genug, Deine Beschreibung ist dabei aber nicht sonderlich hilfreich. Du hast quasi nur die Beobachtung eines Endusers geschildert, nicht die eines Entwicklers und schon gar nicht die des Entwicklers (des oben gezeigten Codes).

Wobei der Code zwar lustig Benutzereingaben zu überprüfen versucht, aber beim Schreiben in die Datenbank von einer unfehlbaren Verbindung ausgeht. "Man hat ja schließlich alle wichtigen Befehle im Code, muss ja funktionieren." Dass solche Befehle durchaus auch informative Fehlermeldungen zurückgeben, sei hier nur am Rande erwähnt.

[edit]Wo wir schon dabei sind: Du solltest auch mal nachlesen, wie Du Deinen Code "SQL Injection"-sicher machst.[/edit]
 
Zuletzt bearbeitet:
All das ist aus der Ferne schon schwer genug, Deine Beschreibung ist dabei aber nicht sonderlich hilfreich. Du hast quasi nur die Beobachtung eines Endusers geschildert, nicht die eines Entwicklers und schon gar nicht die des Entwicklers (des oben gezeigten Codes).

Wobei der Code zwar lustig Benutzereingaben zu überprüfen versucht, aber beim Schreiben in die Datenbank von einer unfehlbaren Verbindung ausgeht. "Man hat ja schließlich alle wichtigen Befehle im Code, muss ja funktionieren." Dass solche Befehle durchaus auch informative Fehlermeldungen zurückgeben, sei hier nur am Rande erwähnt.

[edit]Wo wir schon dabei sind: Du solltest auch mal nachlesen, wie Du Deinen Code "SQL Injection"-sicher machst.[/edit]

Den Code oben habe ich doch selbst geschrieben, wenn auch nicht perfekt, was aber an der mangelnden PHP-Kenntnis liegt.
Ich wäre froh wenn es klappt! Im XAMPP hat es funktioniert, warum dann nicht unter dem IIS??
Das ist doch nur meine Frage?!

Als ich den Code geschrieben habe, habe ich ein Windows XP mit XAMPP verwendet, da hat alles prima funktioniert. Jetzt wo ich es unter dem IIS laufen lassen möchte kommen keine Daten mehr in der DB an.

Was die SQL-Injection Sicherheit anbelangt kümmere ich mich nachdem ich wieder Daten in die DB schreiben kann.

Kannst Du mir hierbei helfen? Was genau möchtest Du wissen?
Wie gesagt ich habe den Code unter XAMPP entwickelt und da hats funktioniert. Als ich das ganze jetzt unter dem ISS laufen lassen wollte, mit implementierten PHP, gabs Probleme beim Schreibvorgang.
 
Den Code oben habe ich doch selbst geschrieben,
Das habe ich auch nicht angezweifelt, Deine Beschreibung klingt aber eben nur wie die eines Endanwenders und nicht wie die des Programmierers. Denn der kann am Code rumexperimentieren, kann die genannten Annahmen und Bestätigungen treffen und einholen, kann die Funktion verifizieren (sprich debuggen) und kann wesentlich genauer sagen, was nicht klappt und wo es hängt.

wenn auch nicht perfekt, was aber an der mangelnden PHP-Kenntnis liegt.
Ich wäre froh wenn es klappt! Im XAMPP hat es funktioniert, warum dann nicht unter dem IIS??
Das ist doch nur meine Frage?!
Diese Frage hast Du nun schon des öfteren wiederholt. Du kannst langsam davon ausgehen, dass die Leser das nun kapiert haben. Move on.

Als ich den Code geschrieben habe, habe ich ein Windows XP mit XAMPP verwendet, da hat alles prima funktioniert. Jetzt wo ich es unter dem IIS laufen lassen möchte kommen keine Daten mehr in der DB an.
Schön. (siehe oben)

Kannst Du mir hierbei helfen? Was genau möchtest Du wissen?
Wie gesagt ich habe den Code unter XAMPP entwickelt und da hats funktioniert. Als ich das ganze jetzt unter dem ISS laufen lassen wollte, mit implementierten PHP, gabs Probleme beim Schreibvorgang.
Welche Probleme?
Fehlercodes?
Rückgabewerte?
Hast Du mal in die Doku von PHP geguckt? Da gibt es durchaus Hinweise auf Fehlercodes und Rückgabewerte bei Fehlermeldungen des ODBC-Moduls.

Wie gesagt Du prüfst die Eingaben der Benutzer, aber nicht, ob die Datenbank so will, wie Du denkst. Du gehst davon aus, dass die Datenbank einfach so läuft. Aber genau das tut sie nicht. Und statt dass Du hergehst und baust auch hier Fehlerprüfungen ein, bzw. fängst Fehlerfälle ab, erwartest Du von uns, dass wir raten, was Du falsch machst, ohne dass wir den dafür notwendigen Wissensstand hätten, noch Zugang zu Deinem System haben.
 
Ich wäre froh wenn es klappt! Im XAMPP hat es funktioniert, warum dann nicht unter dem IIS??
Das ist doch nur meine Frage?!
Die dir so keiner beantworten kann.

Kannst Du mir hierbei helfen? Was genau möchtest Du wissen?
Wie gesagt ich habe den Code unter XAMPP entwickelt und da hats funktioniert. Als ich das ganze jetzt unter dem ISS laufen lassen wollte, mit implementierten PHP, gabs Probleme beim Schreibvorgang.
Dann musst du die Tipps, die dir Albu gegeben hat befolgen. Er hat dir eine Reihe Fragen aufgelistet, die das debuggen eines Codes erleichtern.

Du gehst von der irrigen Ansicht aus, es reicht einen Blick auf ein paar Zeilen Code zu werfen, um Fehler in einer komplexen Umgebung zu finden. Da dein code sehr schlampig ist, geht das aber nicht. Es fehlt darin fast alles, was nötig ist um Fehler zu finden. Was dir aber auch schon mehrmals gesagt wurde.
 
Die Datenbankfelder sehen meines Erachtens etwas verdächtig aus, sowas wie name ist immer gefährlich und könnte möglicherweise ein keyword sein, bau deinen query so um, dass die Feldnamen alle in den MS typischen Datenbankdelimeter eingeschlossen sind, z.b. sollte das dann so aussehen:
INSERT INTO [tab_frm_fkreis_gesamt] ([anrede], [titel], [name], [vorname], [strasse], .....

Ansonsten bitte noch die vorherigen Tipps beachten ( Ausgabe von z.b. $writedb ) ...
 
Zurück
Oben