[ORACLE/PHP] NUL chars en andere troep retour.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 21-09 00:11
Beste allemaal,

Via PHP en de Oracle 8 client connect ik met een Oracle server. Bij 1 van de velden (een Long) krijg ik merkwaardige data retour die ik niet terug kan vinden in de applicatie. Achter het laatst ingetypt karakter in de applicatie zit geen enter o.i.d. meer.

Het is een information field van HP Openview. Hierin staat additionele informatie die door middel van de Service desk applicatie wordt bijgewerkt.

Bij geen enkel ander veld krijg ik deze data retour, maar alleen bij dit veld.

Voorbeeld :

PHP:
1
2
3
4
5
6
7
            // Remarks and Extra information
            echo "<h4>Remarks and extra information</h4>\n";
            echo "<table border='1' cellspacing='0' cellpadding='2' width='600'>\n";
            if ((ociresult($s, "CCF_TEXT64KB"))!="") {
            echo "<t><td>".rtrim(nl2br(ociresult($s, "CCF_TEXT64KB")))."</td></tr>\n"; }
            else { echo "<tr bgcolor='#ffffff'><td>There are no remarks for ".ociresult($s, "CIT_SEARCHCODE")."</td></tr>\n"; } 
            echo "</table><br/>\n";


Het resultaat kan ik niet posten hier (de karakters worden er uitgefilterd), maar wel als screenshot.
(omdat het te groot is , 2 screenshots.. start en eind)

Screenshot start

Afbeeldingslocatie: http://www.ditnetwel.nl/temp/start.png

Screenshot eind

Afbeeldingslocatie: http://www.ditnetwel.nl/temp/eind.png

Wat zijn dit voor vreemde tekens? En hoe krijg ik die weg? Mijn oplossing is een preg_match filter er overheen , maar waarom krijg ik deze troep? Dit is alleen bij dit veld zo. En ik kan niet zien of dit ook daadwerkelijk in deze table zit omdat de oracle viewer er ook op vastloopt 8)7

Ik hoop dat dit voldoende duidelijk is? :)

[ Voor 13% gewijzigd door om3ega op 09-11-2005 13:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Weet je zeker dat dit een long veld is en niet een char type met vaste lengte?

Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 21-09 00:11
Het is echt 100% een long field. Het maakt (net getest) overigens niet uit welke data ik er in zet. Ik heb de content veranderd naar test en dan krijg ik het zelfde resultaat , maar dan met test[TROEP] ...

Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 21-09 00:11
Klein kickje.. Niemand een idee?

Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Misschien gaat er wel niks mis en staat het zo in de database. Met SQL*Plus kun je longs ook gewoon selecten (doe wel eerst een set long <size>).

Hoe ziet je fetch eruit?
Ik zie dat daar speciale opties voor longs bij zitten.
Bijv: OCIFetchInto($stmt, $arr, OCI_ASSOC+OCI_RETURN_LOBS);

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 21-09 00:11
Hier een stukje van de code die de fetch uitvoerd :
\
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
    // Query die uitgevoerd moet worden.
    
    $query = "SELECT * FROM 
                SERVICEDESK.ITSM_CONFIGURATION_ITEMS , 
                SERVICEDESK.ITSM_CIT_CUSTOM_FIELDS , 
                SERVICEDESK.ITSM_LOCATIONS ,
                SERVICEDESK.ITSM_PERSONS ,
                SERVICEDESK.ITSM_CODES_LOCALE ,
                SERVICEDESK.ITSM_PER_CUSTOM_FIELDS
                WHERE CIT_SEARCHCODE ='".$ci."' AND 
                SERVICEDESK.ITSM_CIT_CUSTOM_FIELDS.CCF_CIT_OID = SERVICEDESK.ITSM_CONFIGURATION_ITEMS.CIT_OID AND 
                SERVICEDESK.ITSM_CONFIGURATION_ITEMS.CIT_OWNER_PER_OID = SERVICEDESK.ITSM_PERSONS.PER_OID AND
                SERVICEDESK.ITSM_PERSONS.PER_OID = SERVICEDESK.ITSM_PER_CUSTOM_FIELDS.PEC_PER_OID AND
                SERVICEDESK.ITSM_PERSONS.PER_OID = SERVICEDESK.ITSM_PER_CUSTOM_FIELDS.PEC_PER_OID AND
                SERVICEDESK.ITSM_CIT_CUSTOM_FIELDS.CCF_COD1_OID = SERVICEDESK.ITSM_CODES_LOCALE.CDL_COD_OID AND
                SERVICEDESK.ITSM_CODES_LOCALE.CDL_LNG_OID = 1033 AND
                SERVICEDESK.ITSM_CONFIGURATION_ITEMS.CIT_LOC_OID = SERVICEDESK.ITSM_LOCATIONS.LOC_OID";
                
                
    
    $s = OCIParse($c, $query);
    OCIExecute($s, OCI_DEFAULT);
    echo "[img]'\pictures\logo-nv.png'[/img]\n";
    echo "<center>\n<h2>[Hardware registration form]</h2></center><br/>\n";
    
    
    //Resultaten van Query weergeven 
        while (OCIFetch($s))    {
            echo "<h4>Hardware information</h4>\n";
            echo "<table border='1' cellspacing='0' cellpadding='2' width='600' >\n";
            echo "<tr><td>Search code</td><td>".ociresult($s, "CIT_SEARCHCODE")."</td><td>".ociresult($s, "CIT_NAME1")."</td></tr>\n";
            echo "<tr'><td>Serial number</td><td>".ociresult($s, "CIT_SERIALNUMBER")."</td><td>&nbsp;</td></tr>\n";
            echo "<tr><td>Memory</td><td>".ociresult($s, "CCF_CINUMBER1")."MB</td><td>&nbsp;</td></tr>\n";
            echo "<tr><td>Location</td><td>".ociresult($s, "CCF_CISHORTTEXT3")."</td><td>".ociresult($s, "LOC_SEARCHCODE")."</td></tr>\n";
            echo "<tr><td>Owner person</td><td>".ociresult($s, "PER_NAME")."</td><td>Employee number ".ociresult($s, "PEC_PERSONNUMBER1")."</tr>\n";
            echo "</table><br/>";
Pagina: 1