Newsgroup: it.comp.www.php
Titolo: Php e ActiveX object

Sto provando ad utilizzare un elemento ActiveX
MsFlexgrid1 (naturalmente su ambiente window)
per popolare le righe uso uno script VB, il mio problema, è come faccio
a passare l' oggetto preso dalla classe ADO scritta in php
a visual basic
Il codice  che ho provato fin' ora è il sottostante
<?
$query_Recordset1 = "SELECT * FROM price";
$Recordset1 = $bind2->SelectLimit($query_Recordset1) or
die($bind2->ErrorMsg());
$totalRows_Recordset1 = $Recordset1->RecordCount();
//Recordset1 è l'oggetto
?>
questo il codice che dovrebbe popolare il flexgrid preso dal sito microsoft
 <%
      Sub FillCells
         Dim ctRow, ctCol, vbCrLF, objRst
         vbCrLf= Chr(13) & Chr(10)
         ctCol=0
   objRst =  $Recorset1
         ' Note: added 1 to rows so that we can print field headings
         Response.Write "MSFlexGrid1.Rows=" & objRst.RecordCount+1 & vbCrLf
         Response.Write "MSFlexGrid1.Cols=" & objRst.Fields.Count & vbCrLf
         ' Print field headings
         Response.Write "MSFlexGrid1.Row=0" & vbCrLf
         For Each fld in objRst.Fields
            Response.Write "MSFlexGrid1.Col=" & ctCol & vbCrLf
            Response.Write "MSFlexGrid1.Text=" & Chr(34) & Trim(fld.Name) &
              Chr(34) & vbCrLf
            ctCol=ctCol+1
         Next
         ' Print data
         ctRow=1
         Do Until objRst.eof
            Response.Write "MSFlexGrid1.Row=" & ctRow & vbCrLf
            ctCol=0
            For Each fld in objRst.Fields
               Response.Write "MSFlexGrid1.Col=" & ctCol & vbCrLf
               Response.Write "MSFlexGrid1.Text=" & Chr(34) & Trim(fld) &
                 Chr(34) & vbCrLf
               ctCol=ctCol+1
            Next
            objRst.MoveNext
            ctRow=ctRow+1
         Loop
      End Sub
%>
 <SCRIPT LANGUAGE="VBScript">
      Sub window_onLoad()
         <%FillCells%>
      End Sub
 </SCRIPT>
<OBJECT ID="MSFlexGrid1" WIDTH=668 HEIGHT=156
    CLASSID="CLSID:6262D3A0-531B-11CF-91F6-C2863C385E30">
      <PARAM NAME="_ExtentX" VALUE="17674">
      <PARAM NAME="_ExtentY" VALUE="4128">
      <PARAM NAME="_Version" VALUE="65541">
      <PARAM NAME="Rows" VALUE="2">
      <PARAM NAME="Cols" VALUE="1">
      <PARAM NAME="FixedRows" VALUE="1">
      <PARAM NAME="FixedCols" VALUE="0">
      <PARAM NAME="AllowUserResizing" VALUE="1">
</OBJECT>
Naturalmente non mi aspetto nessun aiuto, volevo chiedere solo se è
fattibile
ciao....

 a visual basic
La soluzione migliore e' quella di convertire il codice Vb in codice
PHP e la cosa risulta essere abbastanza semplice.
-- 
I'am what I'am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1

 PHP e la cosa risulta essere abbastanza semplice.
Magari :-)
Non l' ho provato perchè sarebbe inutile
cmq accetto volentieri delle smentite
il solo php non basta a riempire il Flexgrid
per il semplice motivo che si tratta di 2 linguaggi differenti,
sarebbe come lanciare un pop-up senza JS

 smentite
Perche' inutile?
Segue il codice tradotto.
Da notare che lato client viene utilizzato codice VBScript (generato da
ASP o da PHP) per popolare la flex grid. Con poco sforzo e' possibile
convertire il codice da VBScript in JavaScript.
/* VBCode
Sub FillCells
*/
function FillCells ()
{
    /* VBCode
 	Dim ctRow, ctCol, vbCrLF, objRst
    vbCrLf= Chr(13) & Chr(10)
    ctCol=0
  	objRst =  $Recorset1
	*/
	$ctRow = ""; $ctCol = 0;  $vbCrLF = "\n\r"; $ctCol = 0;
 
    /* VBCode
	Response.Write "MSFlexGrid1.Row=0" & vbCrLf
	For Each fld in objRst.Fields
		Response.Write "MSFlexGrid1.Col=" & ctCol & vbCrLf
		Response.Write "MSFlexGrid1.Text=" & Chr(34) & Trim(fld.Name) &
Chr(34) & vbCrLf
		ctCol=ctCol+1
	Next
	*/
	print ("MSFlexGrid1.Row=0" . $vbCrLF);
	foreach ($objRst->Fields as $fld) 
	{ 
		print ("MSFlexGrid1.Col=" . $ctCol . $vbCrLf);
		print ("MSFlexGrid1.Text=" . '"' . trim ($fld->Name) . '"' . $vbCrLf);
		$ctCol++;
	} 
    /* VBCode
	 ctRow=1
	 Do Until objRst.eof
		Response.Write "MSFlexGrid1.Row=" & ctRow & vbCrLf
		ctCol=0
		For Each fld in objRst.Fields
		   Response.Write "MSFlexGrid1.Col=" & ctCol & vbCrLf
		   Response.Write "MSFlexGrid1.Text=" & Chr(34) & Trim(fld) &
			 Chr(34) & vbCrLf
		   ctCol=ctCol+1
		Next
		objRst.MoveNext
		ctRow=ctRow+1
	 Loop
	*/
	$ctRow = 1;
	while (!$objRs->eof)
	{
		print ("MSFlexGrid1.Row=" . $ctRow . $vbCrLf);
		$ctCol = 0;
		foreach ($objRst->Fields as $fld) 
		{ 
			print ("MSFlexGrid1.Col=" . $ctCol . $vbCrLf);
			print ("MSFlexGrid1.Text=" . '"' . trim ($fld->Name) . '"' .
$vbCrLf);
			$ctCol++;
		} 
 
		$objRst->MoveNext;
		$ctRow++;
	}
}
?>
 <SCRIPT LANGUAGE="VBScript">
      Sub window_onLoad()
         <?php FillCells (); ?>
      End Sub
 </SCRIPT>
<OBJECT ID="MSFlexGrid1" WIDTH=668 HEIGHT=156
    CLASSID="CLSID:6262D3A0-531B-11CF-91F6-C2863C385E30">
      <PARAM NAME="_ExtentX" VALUE="17674">
      <PARAM NAME="_ExtentY" VALUE="4128">
      <PARAM NAME="_Version" VALUE="65541">
      <PARAM NAME="Rows" VALUE="2">
      <PARAM NAME="Cols" VALUE="1">
      <PARAM NAME="FixedRows" VALUE="1">
      <PARAM NAME="FixedCols" VALUE="0">
      <PARAM NAME="AllowUserResizing" VALUE="1">
</OBJECT>
-- 


 MsFlexgrid1 (naturalmente su ambiente window)
se ho un file php su un server apache con s.o. linux,
quando uno si collega alla pagina del sito, il server
gli restituisce il codice html;
pero' in realtà la pagina (file php) è scritta con htm con dentro il php;
si puo' usare tale controllo sulla form di tale pagina? anche se è un file php.
per quali usui e che vantaggi si ha con la flexgrid?
ma Ms significa che è un oggetto della microsoft? ce ne sono di free?
dove si trovano tale controllo (link) e ci sono esempi di quando conviene
usarla?

Perdona la mia ignoranza, ma non riesco farlo funzionare, è una proposta
impertinente se ti chiedo di spedirmi un esempio in php
sul mio indirizzo mail
eva...@yahoo.it
ti ringrazio in anticipo

 conviene usarla?
Basta fare una ricerca con google, la maggior parte dei risultati sono
in VB od in Asp 3.0 /VBscript


 
eva...@yahoo.it
Quest dovrebbe funzionare, non ho l'activex per cui non sono in grado
di testarlo fino in fondo:
<?php
function FillCells ()
{
	$conn = new COM("ADODB.Connection") or die("Cannot start ADO"); 
	$conn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Program
Files\Microsoft Office\Office10\Samples\Northwind.mdb;Persist Security
Info=False");
	$objRst = $conn->Execute("SELECT * FROM Fornitori");    // Recordset 
	$ctRow = ""; $vbCrLf = "\n\r";
	$fld = array();
	$ctCol = $objRst->Fields->Count(); 
 
	print ("MSFlexGrid1.Row=0" . $vbCrLf);
	for ($i=0; $i < $ctCol; $i++) 
	{ 
	 	$fld[$i] = $objRst->Fields($i); 
		print ("MSFlexGrid1.Col=" . $i . $vbCrLf);
		print ("MSFlexGrid1.Text=" . '"' . trim ($fld[$i]->name) . '"' .
$vbCrLf);
	} 
	$ctRow = 1;
	while (!$objRst->EOF)
	{
		print ("MSFlexGrid1.Row=" . $ctRow . $vbCrLf);
		for ($i=0; $i < $ctCol; $i++) 
		{ 
			print ("MSFlexGrid1.Col=" . $i . $vbCrLf);
			print ("MSFlexGrid1.Text=" . '"' . str_replace (array("\r","\n"),
"", trim ($fld[$i]->value)) . '"' . $vbCrLf);
		} 
 
		$objRst->MoveNext();
		$ctRow++;
	}
	$objRst->Close(); 
	$conn->Close(); 
 
	$objRst->Release(); 
	$conn->Release(); 
 
	$objRst = null; 
	$conn = null; 


 ?>
il risultato della query e' uno o piu record
se sono piu di uno
input type hidden name pieno value="1"
input type hidden name=hidden[] value= "$row['id']"       // (il campo deve
essere univoco)
input type text name=campo1[][$row[id']] value= "$row['campo1']"
input type radio name=campo2[][$row['id']] value= "1"
input type radio name=campo2[][$row['id']] value= "0"
qunado uno fa l'invio aggiorna i dati  puo aggiornare/ inserire piu di un
record
mettiamo che l'utente visualizzi 10 recod da modificare all'inizio dello
script ci
passi una condizione input type hidden name pieno value="1"
var_dump($_POST);
all'invio del form pieno aggiorna i dati e carica i sucessivi (sfogliamento
di pagina)
e' piu sensato che legarsi al client (e legare la gente a windows)
quando la stessa cosa la possono fare "4 righe di codice"
cut

 quando la stessa cosa la possono fare "4 righe di codice"
Il tutto è solo un' esperimento, non voglio assolutamente pubblicare
un flexgrid via web, i vantaggi sarebbero veramente pochi,
a parte la dimensione delle celle che sarebbe ridemensionabile lato
client, infatti se l' elemento non è presente sulla macchina client, non
funziona assolutamente niente
e poi come dici te obbligerei la gente ad usare window che non è il
mio scopo