PHP API direkt an die DB

Kirby2k7

Aktives Mitglied
5. Juni 2009
9
0
Guten Tag,

ich würde gerne in Erfahrung bringen ob sich an das folgende Vorhaben schonmal jemand versucht hat.

Die Basis:
- Win2k Home Sever
- MS SQL-Server 2005 Express
- XAMPP (PHP5, MYSQL5, Apache2,...)
- JTL-Wawi (v. 0.9.9.629)

Das was ich gerne machen würde wäre eine Art Online-Kundenbenutzercenter. Ohne die Anbindung an einen Shop. Ich würde gerne mit PHP direkt auf die MS-DB zugreifen und dort die Daten auslesen und dann weiter an einen Webserver schicken der die Daten weiterverarbeitet. Leider bekomme ich aber keine Verbindung von PHP zu der MSSQL-Datenbank hin.

Durch viele Foren habe ich mich nun schon gekämpft und auch schon diverse Probleme im Vorfeld ausgeräumt. So ist die Datei "ntwdblib.dll" für die MSSQL-Unterstützung auf dem neusten Stand und die Datei "php_mssql.dll" ist ebenso in der php.ini geladen. Dennoch schreibt er mir immerzu, dass er keine Verbindung zum Server herstellen kann.

Vielleicht ist einer von euch schon weitergekommen oder kann mir helfen mein Vorhaben weiter zu realisieren. Ich würde mich über Antworten, die weiter helfen oder auch nur Tips geben, sehr freuen.

Vielen Dank und schöne Grüße Kirby.

---

Weitere Informationen zur php.ini:
Code:
[MSSQL]
; Allow or prevent persistent links.
mssql.allow_persistent = On

; Maximum number of persistent links.  -1 means no limit.
mssql.max_persistent = -1

; Maximum number of links (persistent+non persistent).  -1 means no limit.
mssql.max_links = -1

; Minimum error severity to display.
mssql.min_error_severity = 10

; Minimum message severity to display.
mssql.min_message_severity = 10

; Compatability mode with old versions of PHP 3.0.
mssql.compatability_mode = Off

; Connect timeout
;mssql.connect_timeout = 5

; Query timeout
;mssql.timeout = 60

; Valid range 0 - 2147483647.  Default = 4096.
;mssql.textlimit = 4096

; Valid range 0 - 2147483647.  Default = 4096.
;mssql.textsize = 4096

; Limits the number of records in each batch.  0 = all records in one batch.
;mssql.batchsize = 0

; Specify how datetime and datetim4 columns are returned
; On => Returns data converted to SQL server settings
; Off => Returns values as YYYY-MM-DD hh:mm:ss
;mssql.datetimeconvert = On

; Use NT authentication when connecting to the server
mssql.secure_connection = Off

; Specify max number of processes. -1 = library default
; msdlib defaults to 25
; FreeTDS defaults to 4096
;mssql.max_procs = -1
Datenbankverbindungsscript:
PHP:
<?php
$myServer = ".\SQLEXPRESS";
$myUser = "user";
$myPass = "pass";
$myDB = "eazybusiness";

//connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
  or die(mssql_get_last_message()); ?>
 

Kirby2k7

Aktives Mitglied
5. Juni 2009
9
0
AW: PHP API direkt an die DB

Hallo,

die Daten in meinem Script sind nur zur Veranschaulichung gewählt. Wenn das dein Bezug war.

Bzgl. der Daten weiß ich nur dass es unterschiede zwischen NT-Authentifikation und MSSQL-Authentifikation gibt. Einmal also mit den Windows-Benutzer anmelden oder mit dem Benutzer "sa".
 

alex2911

Aktives Mitglied
26. Juli 2007
53
0
AW: PHP API direkt an die DB

ich kann dir nur mit ZF helfen...
das da schnappen --> [#ZF-905] Create a Zend_Db adapter for ODBC - Zend Framework Issue Tracker (die größere datei) in \Zend\Db\Adapter\Pdo reinlegen als Odbc.php und dann mit:

Code:
database.adapter = "pdo_odbc"
database.params.host = "******"
database.params.username = "sa"
database.params.password = "******"
database.params.dbname = "Driver={SQL Native Client};
Server=localhost\******;Database=eazybusiness;"
gut zureden.

schaut in etwa so aus:

Code:
include "Zend/Loader.php";
Zend_Loader::registerAutoload();
require_once 'Zend/Config/Ini.php';
require_once 'Zend/Controller/Action.php';
require_once 'Zend/Db.php';
require_once 'Zend/Auth/Adapter/DbTable.php';

$config = new Zend_Config_Ini('config/config.txt', 'production'); 
   
$registry = Zend_Registry::getInstance();
$registry->set('config', $config);
$db = Zend_Db::factory($config->database);
Zend_Db_Table::setDefaultAdapter($db);
Zend_Registry::set('db', $db);  
.....
    $data = array('cBarcode' => $eintrag2, 'cInet' => 'Y');
    $where[] = "kArtikel = '" . $eintrag1 . "'";
    $n = $db->update('tartikel', $data, $where);

Passt nun wohl nicht ganz hier rein - sorry -- und ist auch zusammengewürfelt aus mehreren dateien aber ich denke, du schaffst es schon :)
 

Kirby2k7

Aktives Mitglied
5. Juni 2009
9
0
AW: PHP API direkt an die DB

Danke dir für deine Hilfe... mein Problem hat sich nun aber irgendwie gelegt. o0
Nachdem ich letzte Woche das MS SQL Server 2005 Konfigurationstool installiert habe und mich versucht habe anzumelden klappte alles noch über die SQL-Daten. Heute versuchte ich erneut mich mit diesem Tool anzumelden und es scheitert. Nachdem ich dan mal versucht hatte mich mit dem Windows-Anmeldedaten anzumelden klappte alles auf anhieb.

Das hatte ich dann auch mit der PHP-Version probiert. In der php.ini die NTauthentifikation auf On gesetzt und das Script überarbeitet und siehe ich hatte eine Verbindung und konnte Datensätze herauslesen. Damit wäre also Schritt eins erfolgreich.

Jetzt habe ich allerdings zwei andere Fragen:

Ich habe PDFCreator installiert um aus meinen Rechnungen die ich mit JTL erstelle PDF-Dokumente zu machen. Dieses klappt auch ohne Probleme. Auch der Mailversand. Nun hat das Tool aber noch die Option VBS nach dem Speichern des PDF-Dokuments auszuführen. Das klappt auch nur der FTP-Upload nicht.
Habe dort alle relevanten Daten geändert und angepasst. Nun wollte ich es testen und dann erhalte ich die Fehlermeldung Could not create object named "InetCtls.Inet.1". Aber nichts im Internet... hat vielleicht noch jemand dieses Problem und weiß Rat? Ich hab nämlich keine Ahnung von VBS... kann mir nur einiges ableiten.

Das andere: Wollte ich eigentlich nur fragen ob es eine Möglichkeit gibt mit VBS eine URL lokal auf dem Server auszuführen ohne diese im Browser aufzurufen! Also quasi: http://localhost:Port/exec.php
Wenn jemand hier auch noch Rat wüsste. Vielen Dank!

Freue mich über jede Antwort, vielen Dank!

EDIT:
Das Umfeld ist WHS mit OS Win2K
 
Zuletzt bearbeitet:

alex2911

Aktives Mitglied
26. Juli 2007
53
0
AW: PHP API direkt an die DB

zur letzten frage: php kann doch cli :)
exec zb. oder shell_exec, system .

aber anstoßen musst du es über den browser. sonst weiß ja das programm nicht wann es los gehen soll.
du könntest natürlich mit flags (zb. in der datenbank) spielen aber es kommt aufs selbe raus.
 

Kirby2k7

Aktives Mitglied
5. Juni 2009
9
0
AW: PHP API direkt an die DB

Danke für die Antwort. Aber das war nicht das was ich genau meinte. ;)
Um PHP ausführen zu können muss man eine Datei aufrufen. Daher mein Gedanke:

JTL -> PDFCreator -> VBS -> Lokaler XAMPP-Server -> ...

Der Weg von JTL zu PDFCreator ist klar, ebenso der von PDFCreator zu VBS nur wie bekomme ich es mit Visual Basic Script hin eine URL im Hintergrund aufzurufen oder auszuführen. Wobei. :eek: Es reicht ja wenn die URL aufgerufen wird, sich der Browser öffent und danach der Javascript-Befehl window.close() zum Einsatz kommt. :eek: Da muss man erst eine Nacht darüber schlafen um auf diesen Gedanken zu kommen. :D

Also, dann hat sich die zweite Frage wohl erübrigt. Denn wie man eine URL in VBS aufruft weiß ich. ^^ Jetzt also nur noch die erste Frage. Aber die hab ich glaub ich auch schon fast gelöst. So wie ich gestern noch gelesen habe braucht man für das erstellen des Objektes MS Visual Studio 6. Heute nochmal prüfen und dann kauf ich das mal eben. Dann sollte das eventuell auch schon klappen. Ich informier euch wenn ich etwas neues weiß.

Wenn ich mit etwas falsch liege bitte um Berichtigung. Dankeschön!
 

Kirby2k7

Aktives Mitglied
5. Juni 2009
9
0
AW: PHP API direkt an die DB

So jetzt habe ich alles so hinbekommen wie ich wollte. :) *freu*
FTP-Upload der Daten, Schnittstelle zwischen JTL und dem Internet. Da kann das Kundeninterface ja kommen.

Ach ja... MS Visual Studio 6.0 hat mir bei dem obrigen Problem dann doch geholfen.

Der Code um eine URL aufzrufen in Visual Basic is folgender:
Code:
Set WSHShell = CreateObject ("Wscript.Shell")
WSHShell.Run "IEXPLORE.EXE http://DOMAIN.TLD" , 1

Damit öffnet sich das Browserfenster. Wenn man dieses dann schließen will macht man das mit Hilfe von JS:
HTML:
window.close();

Dann klappts auch mit dem Kundeninterface. ;) Danke an alle die mir geholfen haben und helfen wollten. :)
 

Kirby2k7

Aktives Mitglied
5. Juni 2009
9
0
AW: PHP API direkt an die DB

Muss mich leider korrigieren. Mit

Code:
window.onload = window.close();
kann man das grad' geöffnete Fenster nicht schließen. Aber mit einer kleinen Erweiterung des VBS-Scripts geht das binnen Sekunden.

Code:
Set ws = WScript.CreateObject("WScript.Shell")
ws.Run "IEXPLORE.EXE http://www.domain.tld",1
wscript.sleep 5000
ws.AppActivate "NAME DES FENSTER"
ws.sendkeys ("%{F4}"), true
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu php ausführen täglich Betrieb / Pflege von JTL-Shop 2
Neu .php-cs-fixer.php - nicht identisch mit den Dateien der aktuellen Version von JTL-Shop JTL-Shop - Fehler und Bugs 3
Neu Update auf 5.5.0 erzeugt Error 500 Fehlermeldung “CacheAdvancedfile.php on line 95" Installation / Updates von JTL-Shop 2
Neu JTL-SHOP - Abgleichsfehler - Bestellungen_xml.php User helfen Usern - Fragen zu JTL-Wawi 2
Neu Plugin Produktsicherheitsverordnung (GPSR) Plugin für den JTL-Shop 5 nicht PHP 8.4 fähig Technische Fragen zu Plugins und Templates 4
includes/cron_inc.php' fetched Status: 500 Einrichtung JTL-Shop5 0
API 1.1-onprem Objekt "Weights" JTL-Wawi 1.10 0
JTL Wawi REST API 0.0.0.0 JTL-Wawi 1.10 4
Neu DHL GKV API 3 - Code 15 „Object reference not set to an instance of an object“ JTL-ShippingLabels - Fehler und Bugs 0
Neu JTL Wawi REST API User helfen Usern - Fragen zu JTL-Wawi 30
Neu JTL API Registrierung der APP Schnittstellen Import / Export 3
Neu [gelöst] JTL Wawi REST API -> Menüpunkt App-Registrierungen fehlt User helfen Usern - Fragen zu JTL-Wawi 2
JTL Wawi Rest API Abweichende Endpunkte JTL-Wawi 1.9 0
REST-API Problem in der Doku JTL-Wawi 1.10 0
Neu Rückzahlungen aus JTL Wawi direkt auslösen User helfen Usern - Fragen zu JTL-Wawi 0
Neu "Evtl. Lieferzeitverzögerung" direkt beim Einlegen in den Warenkorb anzeigen? Allgemeine Fragen zu JTL-Shop 0
Neu Gutschein E-Mail versand direkt nach den ändern der Kundenklasse Allgemeine Fragen zu JTL-Shop 0

Ähnliche Themen