Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Thomas Schulte am 20.10.03 - 19:12:41
-
Hat irgendjemand ein Ahnung, wie ich einer PHP Seite ein DB Search über COM beibringe?
Code:
.
..
# COM Session aufbauen
$session = new COM( "Lotus.NotesSession" );
$session->Initialize();
#
# Object Modell aufbauen um die Ansicht nach IpAdressen zu holen
#
$dbIPCountry = $session->getDatabase( "", "IPTOCountry.nsf" );
$Searchstring = "IP_From<= \"323243899\" & IP_To >= \"323243897\"";
$returnDocuments = 0;
$IPCountryCollection = $dbIPCountry->search($Searchstring, Nothing , $returnDocuments);
Der Witz an der Sache ist der, daß das Ganze eigentlich funktionieren müsste, wenn denn PHP Intelligenterweise nicht den dritten Parameter der Search mit einem Type Mismatch abweisen würde. Und zwar ist das vollkommen egal ob so wie oben beschrieben oder mit :
$IPCountryCollection = $dbIPCountry->search($Searchstring, Nothing , 0);
wie es in der COM Beschreibung von Domino als Beispiel für FT Search beschrieben ist.
Ich krieg immer das hier als Ergebnis
Invoke() failed: Typkonflikt. Argument: 3 in e:\webroot\ipadr1.php on line 21
So jetzt steh ich da mit meinem Talent. Anybody out there der mir helfen kann???
Thomas
-
<schuechterne_anfrage>
Hast du mal darüber nachgedacht, ob du vielleicht mit Integration über Webservices weiterkommst?
Oder kann man nicht aus einem PHP Script ein http-Request auf einen Domino-Server absetzen? Dann brauchst du noch nicht mal webservices.
und die zurückgesendeten Ergebnisse (in Form von xml) in php parsen.
- domino kann xml senden
- php kann xml parsen.
Die Frage ist nur, ob php http-Requests absetzen kann.
</schuechterne_anfrage>
Ansonsten bin ich sehr an deinen Ergebnissen interessiert.
Gruß Axel
-
Wand laufen nachlässt.
Zwischenstand:
Also grundsätzlich ist COM mit PHP und Domino möglich. Soviel zu den positiven Nachrichten.
Aber: wenn du eine Methode aufrufen willst die eine Integervariable als Übergabe verlangt, dann hast du mit hoher Warscheinlichkeit geloost. Domino meint nämlich das Integer Varaiblen doch bitteschön 16Bit lang sein sollen, während PHP der Meinung ist, das Integer Variablen 32Bit lang sind. Daher kommt offensichtlich der Type Mismatch beim Aufrufen der Funktion.
Fragt sich nur wer hier Mist gebaut hat? Die Leute von PHP oder die von IBM. Ich vermute mal die von PHP, weil in jedem einzelnen handbuch zur Programmierung das ich jetzt durchgeschaut habe, C, C++, Fortran, Cobol, Pascal ... Int Variablen immer als vorzeichenbehaftete 16Bit Typen definiert sind.
Naja, vielleicht wissen die im PHP Forum ja noch was.
Thomas
-
Integer-Definition:
Ja schon, aber wenn man die Compiler etwas genauer anschaut, heisst es immer, die Definition von Integer-Typen ist implementationsabhängig, sprich kann von Plattform und/oder verwendetem Professor abhängen, damit ist gut möglich, dass beide keinen Fehler gemacht haben. Habe keine Ahnung, ob COM irgend eine Möglichkeit bietet, dass die beiden Parteien die Grösse der Variablen abstimmen könnten. Die meisten Compiler verstehen 32-Bit Integer unter LONGINT, aber eben, es gibt eine ganze Reihe von Ausnahmen, und wenn Du den Fortran erwähnst, als ich vor rund 30 Jahren Fortran gelernt habe (... mein Einstieg in die ganze Chose :-), da hatte ich einen (IBM-) Compiler zur Verfügung, da war Integer ganz einfach als 6 Zeichen definiert, es war nicht wirklich herauszufinden, wieviel Bit das Ding belegte (vermutlich 36) oder wie die Codierung war, fast sicher nicht binär ...... aber ist schon lange her, kann auch sein, dass das ein anderer Fall war, der mir da durch den Kopf geht...... :-)
-
das was definiert ist und das was ist siond zwei paar Schuhe ;).
Ich marschier damit jetzt mal in die Notes Foren bei IBM und schau mal ob da jemand in der Richtung mehr Ahnung hat.
Ansonsten gibt es da noch einen Typen der auch mit der PHP Integration rumkaspert, den kann ich unter Umständen auch noch einmal direkt ansprechen (muss ich bloß erst mal wieder finden).
Jetzt begebe ich mich erst einmal auf die Suche nach anderen Backend Funktionen die über COM aufgerufen werden können und die auch einen Integer Wert übergeben haben wollen. Gukke mer mal was da rauskommt.
Thomas