Newsgroup: it.comp.www.php
Titolo: critiche (forse non ho capito) php + asp. Php + mysql

Premetto che ho una certa esperienza con asp.
Siccome non è giusto criticare quello che non si conosce (è un luogo comune)
mi sono messo a studiare php + mysql  e tutto quello che c'è attorno.
Ho visto in maniera molto positiva molte funzionalità di php, ma una cosa mi
ha lasciato veramente allibito: LA GESTIONE DEI DATABASE, mysql in testa.
Abituato ad usare ADO è come piombare nel buio
Ecco alcune cose che sinceramente sono ridicole:
1) Per poter accedere ad un campo della riga corrente tramite il suo nome
devo prima assegnare un array associativo con
$row=mysql_fetch_array($res);
echo $row["cognome"];
Con ado se il recordset è row puoi fare row.fields("cognome") direttamente
Va be, la cosa non è grave, sintassi un pò scomoda, una riga in più da
scrivere.
2) Muoversi all'interno delle righe del risultato
    con qualsiasi funzione ..._fetch_... si sposta alla riga successiva
    mi voglio posizionare sull'ultima, prima devo ricavare il numero di
righe totali, poi con mysql_dataseek andarci
    voglio tornare alla riga precedente- per far ciò mi devo mantenere una
variabile con la posizione in cui mi trovo, perchè è impossibile reperire la
posizione corrente
Con ado
    row.movefirst -primo record
    row.movenext - prossimo record
    row.movelast - ultimo record
   row.moveprevious - record precedente
E' molto più semplice non vi pare.
3) La gestione del cursore.
     Con php la gestione del cursore è praticamente obbligatoriamente sul
client
    Mi spiego meglio per chi non ha famigliarità con il cursore
    Porter gestire il cursore sul server significa che se io faccio una
select * from tabella e nel frattempo che visualizzo viene inserito un nuovo
record sulla tabella da un'altro utente, questo record io c'è l'ho nel
risultato subito e non devo attendere la prossima select (nel caso di pagine
html è una cosa relativa ù, comunque) .
4) L'accesso ai dati con ADO è uniforme qualsiasi sia il database ORACLE,
ACCESS, SQL SERVER, MYSQL, ETC., a parte la creazione della connessione
chiaramente. Con php ho due metodi distinti uno per MYSQL, l'altro per le
sorgenti dati ODBC
Penso che una scopiazzata ad ADO farebbe molto bene a PHP
Passiamo ora al linguaggio in se.
Bello in molte cose, un c like in pratica.
Forse per certe cose superiore ad ASP (asp puro intendo)
Però, asp ha il supporto nativo per i componenti esterni, in pratica
possiamo creare oggetti COM con un qualsiasi linguaggio ad alto livello ed
usarlo dentro asp senza particolari problemi.
Vantaggi. Lo sviluppo del componente dentro ad un ambiente di sviluppo IDE è
sicuramente più agevole, senza contare che il codice del componente è
compilato, e quindi non richiede la ricopilazione ogni volta che accede un
utente. (Probabilmente il motore php prevede il caching del codice, però
.......)
Poi ci sono le tante decantate/ignorate IIS APPLICATION.
In pratica applicativi scritti in VISUAL BASIC  che si basano su modelli
HTML andando a sostituire dei tag sostitutivi al loro interno.
Vantaggi: Codice e pagina HTML completamente svincolati. Se voglio cambiare,
anche completamente la grafica del sito, posso aggire solo sulle pagine HTML
senza toccare una riga di codice ASP
Aspetto le controbattute, fermo restando che continuo a studiare con impegno
questo per me nuovo affascinante linguaggio.
Ciao a tutti

 Ecco alcune cose che sinceramente sono ridicole:
ecc. ecc.
Io invece porrei la questione diversamente: giorni fa un mio amico,
avendo a disposizione un server con supporto asp, ha realizzato un sito
dinamico con db access in meno di ventiquattrore, senza che avesse mai
usato asp, mentre io sono mesi che lavoro su un sito in php con db MySQL
facendo così nascere in me questo interrogativo. Vi chiedo, é solo una
questione di "salvaguardare" l'Open Source, o ci sono ben altri motivi
(tecnici) per continuare ad usare PHP ( a parte la mia lentezza)? 
Buon PHP a tutti :-)

Poi ci sono le tante decantate/ignorate IIS APPLICATION.
Ci sono anche tutti i bachi di IIS.
    -IcarusDream-
Per rispondere via mail 
togliere "se-spammi-ti-uccido" dall'indirizzo.

 Abituato ad usare ADO è come piombare nel buio
Vai su 
http://www.freshmeat.net
, cerca e scarica ADODB.
E' un wrapper ADO per PHP.

usarlo dentro asp senza particolari problemi.
http://www.php.net/manual/en/ref.com.php
Ah: nella stessa pagina trovi questo commento:
**************************
As Jason (
ja...@hspace.net
) as demonstrated in his code example, there
is a PHP database wrapper class library that can connect to ADO
available called ADODB. 
It is available from 
http://php.weblogs.com/adodb
 and supports many
databases both on Windows and Linux.
Modelled after ADO, so it should be easy for Windows programmers to
learn.
**************************
 ;-)
ciao
-- 
Buttha
my tribute to SPAM: 
http://www.goriziaok.it/gioco

 usare PHP
Sì, ci sono. Lo dimostra la crescita esplosiva dei siti che
fanno uso di questa tecnologia. I motivi sono: costo, velocità,
sicurezza, stabilità, espandibilità, flessibilità, potenza.
Se poi vuoi pagare ci sono anche tool di sviluppo (
www.zend.com
),
e wizard per sviluppare le applicazioni in un paio di click
(
http://codecharge.com/php-org/
). Se vuoi provare prima di
pagare ci sono anche le demo a scadenza.
Ti faccio notare che Visual Studio si paga, che Access si paga,
che NT Server si paga, che BackOffice si paga, ecc.
Il fatto che tanta gente li abbia e li usi senza averli pagati
non conta: è solo un problema di coscienza e di diritto civile.
P.S.
Io ieri ho avuto un problema con la funzione preg_replace_callback
di PHP 4.0.5: il secondo parametro è una funzione di callback.
Non ero riuscito a passare come callback un metodo di una classe.
Ho postato una segnalazione di bug e mi hanno risposto in meno
di due ore mostrandomi che sintassi avrei dovuto usare per passare
un metodo di funzione. Non ho speso una lira...

 di codice ASP
Esatto !
Ci sono tante librerie free per realizzare un sistema di template
con PHP. Oppure, se conosci le PCRE, questa riga di codice č, da
sola, un parser di template con tag proprietari nella forma:
<MYTAG_qualcosa>...</MYTAG_qualcosa>:
<?
[...]
$html = preg_replace_callback('|<(MYTAG_[A-Z0-9]*)>(.*)</\1>|Uis',
                              tag_replace, $html);
[...]
echo $html;
function tag_replace($regs)
{
  return "<B>$regs[2]</B>";
}
?>

 non conta: è solo un problema di coscienza e di diritto civile.
Anzi: anche di diritto penale.

 sudore, sangue e lacrime
Mai sentito parlare di SQL SERVER....
Aspetta costa troppo, giusto.
E di MSDE? In pratica SQL SERVER in versione ridotta (GRATIS). Lo trovi
anche sul cd di OFFICE 2000
E poi, scusa, chi ti vieta di usare MYSQL con ASP?
L'unica cosa è che ci accedi con ADO, in maniera molto più semplice, con
tante funzioni in più, rispetto al supporto nativo di PHP
Io prima di fare questo intervento ho lavorato sia con ASP(tecnologia) sia
con PHP(linguaggio). Ritengo valide entrambi, con una grossa propensione per
ASP per la sua semplicità ed operatività. Forse PHP dovrebbe copiare un pò,
microsoft lo fa spesso con altri prodotti.
Forse però chi si convince che tutto il mondo open source è il bene e
microsoft è il male, non ci prova nemmeno a confrontare serenamente e
realmente i due approcci
P.s.
    Io mi trovo bene con tecnologie microsoft, ma non per questo mi metto i
paraocchi e non provo quello che mi sta attorno. E lo faccio seriamente.
Seriamente nel senso che non puoi pensare di aver provato asp se ti sei
letto un tutorial da qualche parte è hai fatto un paio di prove(2 ore al
massimo). Io sono settimane che studio seriamente PHP è ho tutta
l'intenzione di continuare (sono giorni e non ore). Poi potrò
iudicare( anzi alcuni giudizi, guarda l'origine di questo threed me le sono
già fatte) serenamente e con la mia testa e non con quello che dicono gli
anti-microsoft a tutti i costi.
Ciao

Finalmente qualcuno che pensa con la propria testa.
Grazie, proverò al volo mysql_fetch_object
N.b.
    Chi li convince quelli che sviluppano PHP a scopiazzare?
Ciao

Ok.
Questo si chiama parlare.
Ciao

senza toccare una riga di codice ASP
Un po' come con i templates PHP, insomma <grin>.
Leonardo
-- 
".signature": bad command or file name

(tecnici) per continuare ad usare PHP ( a parte la mia lentezza)? 
Ti faccio un esempio.
Sono un barista, tu mi dai diecimila lire, prendi un cappuccino da 1500
lire e una pasta da 1500 lire, e io ti do duemila di resto.
Domanda (MA NON VALE RILEGGERE LE DUE RIGHE SOPRA): ti va bene? Mi dici
qualcosa, o ringrazi ed esci?


 la mia testa
Bravo. E' così che si fa.

 Un po' come con i templates PHP, insomma <grin>.
Questa cosa mi interessa particolarmente
Mi puoi dare qualche informazione in più, mi basta il comando poi me lo vado
a vedere da solo
Grazie

 il comando poi me lo vado a vedere da solo
Ci sono delle classi che li gestiscono. Ce ne sono tante.
Cerca in un qualunque sito che abbia script PHP e ne troverai
decine (cerca "PHP templates" su 
www.freshmeat.net
). Se ti serve
qualcosa di veloce ti riporto uno spezzone di codice di un mio
post precedente:
<?
[...]
$html = preg_replace_callback('|<(MYTAG_[A-Z0-9]*)>(.*)</\1>|Uis',
                              tag_replace, $html);
[...]
echo $html;
function tag_replace($regs)
{
  return "<B>$regs[2]</B>";
}
?>
Gestisce tag proprietari di tipo
<MYTAG_quellochevuoi>...</MYTAG_quellochevuoi>
Se MYTAG non ti piace, cambia l'espressione regolare. Dentro la funzione
tag_replace() puoi processare il contenuto del tag andando a
sostituire -
che so?  - espressioni del tipo {CAMPO_XYZ} con il contenuto dei campi
di
un record proveniente da una query... Per le sostituzioni puoi usare
preg_replace() o eregi_replace() o str_replace() ...

(tecnici) per continuare ad usare PHP ( a parte la mia lentezza)?
ASP e' comodo per chi conosce VB. Trova una sintassi simile e puo' scriversi
gli oggetti COM in un altro linguaggio a lui piu' famigliare.
Io lavoro in PHP da piu' di un anno e non tornerei a ASP, almeno per lo
sviluppo web puro (per una intranet con interazione con applicazioni
proprietarie Microsoft se ne puo' parlare, anche se credo che recentemente
PHP abbia anggiunto sotto NT la possibilita' di accedere agli oggetti COM.
PHP e' molto leggero, manipola stringhe e testi sia in input sia in output
in modo eccellente, grazie alla sua lontana parentela con il Perl (mentre in
VB per gestire una stringa con i Left, Mid e compagnia bella si piange in
cinese...) e permette di scrivere codice facilmente portabile su diverse
piattaforme, compreso NT (ASP invece gira solo su Microsoft). In effetti
l'interfaccia di accesso non unificata e' una cretinata, ma ovunque si
trovano dei layer sottilissimi di interfacciamento (anche quello usato nello
sviluppo di SourceForge) che risolvono il problema.
Inoltre PHP offre gia' in partenza la maggior parte delle funzionalita' di
cui uno ha bisogno, mentre in ASP bisogna sempre trovare un cavolo di modulo
che la implementi, o scriverselo. Inoltre se un modulo ha qualche problema
in PHP e' quasi sempre possibile andare ad aprirlo e modificarlo per
adattarlo alle proprie esigenze.
A livello di codice compilato/interpretato se si ha bisogno della protezione
e delle performance del codice compilato sono disponibili strumenti, a
pagamento presso Zend.com, per compilare e criptare il codice.
Per quanto riguarda la difficolta' di apprendimento, pur non essendo una
cima mi sono trovato benissimo: in un paio di settimane ho preso in mano lo
sviluppo di un sistema di e-commerce B2B che stiamo attualmente
commercializzando.
Poi ognuno sceglie quello che preferisce, essendo Open Source nessuno ci
paga per fare pubblicita' a PHP... :)
Ciao,
    Paolo

 ha scritto nel messaggio
news:fXfP6.3981$Uo3....@news6.giganews.com...
[CUT]
Io ho sviluppato in Access+VBA+ADO: adesso stò studiacchiando php e MySQL e
a parte il limitatissimo supporto che MySQL ha di SQL (niente Subquery (si
rimedia con le tabelle temporanee e forse si è anche più veloci), niente
SP/triggers, etc.) credo, lo dico senza nessuna cognizione di causa, sia
molto meglio PHP+MySQL; innanzitutto per la gestione delle stringhe (prova a
fare certe cose con VB e poi suicidati) inconveniente per nulla
controbilanciato da quel "mattone" di ADO che raddoppia i tempi di accesso
rispetto a un'interfaccia diretta, incapsulando le chiamate alle funzioni
esposte dal DB (e *non è vero che con ADO si lavora con tutti i database
allo stesso modo*, ADO è pieno di eccezzioni per gestire le funzioni esposte
non supportate dai DB), inoltre non sono per nulla divertenti tutti i
"piccoli" bugs di ADO (conto il numero di record in un recordset e mi
restituisce -1 ad esempio), per non parlare delle funzioni aggiunte o tolte
ad ogni release (era arrivato alla 2.5 e avevano aggiunto oggetti chiamati
STREAM e altre cose che non sapevano neanche alla M$ a cosa servissero); non
ti basta? prova gli ADODC, *un unico grande bug*, oppure leggiti il libro di
Jennings "Visual Basic 6 guida per lo sviluppatore di database - Tutte le
tecnologie e le soluzioni", che sembra un grosso report sui bug di ADO (ora
dovete usare ADO invece di DAO ma state attenti...) e sulla incompatibiltà
dei modelli a oggetti e sulle librerie di VB e Access (tuttavia legati a
filo doppio).
Saluti.

> restituisce -1 ad esempio), per non parlare delle funzioni aggiunte o
tolte
Ti restituisce -1 se quando hai definito il recordset il cursore lo hai
definito sul server
ovverro
rstGruppi.CursorLocation = adUseServer
devi usare
rstGruppi.CursorLocation = adUseClient
se vuoi  che il recordcount ti restituisca il numero di record.
Con il cursore sul server ti darà -1 per forza

Ma il file di template me lo devo aprire con le normali funzioni di
filesystem?

Un'altra cosa.
Inizio a trovare scritto qua e la qualche riferimento ad una libreria
(credo) che si chiama fasttemplates.
In pratica fa quello che tu mi proponi di farmi a mano?
Mi sbaglio?

 normali funzioni di filesystem?
Sě:
$tpl = '/path/per/il/template.tpl';
$html = fread(fopen($tpl, 'r'), filesize($tpl));

 mano? Mi sbaglio?
Io non ti ho proposto niente. Ti ho solo fatto vedere
come sia semplice in PHP, con l'uso delle espressioni
regolari, implementare un parser, e ti ho consigliato
di studiare ed imparare bene le espressioni regolari.
Quanto alla libreria 'FastTemplates', immagino che si
tratti di una serie di classi che incapsula un parser
di template e che esegue parte del "lavoro sporco" al
posto tuo.

 espressioni regolari.
Credimi se ti dico che chi maneggia le stringhe con le
espressioni regolari ha, rispetto a chi lo fa col left
mid right & c, lo stesso vantaggio di chi per difendersi
da un elefante impazzito usa un bazooka rispetto a chi
usa uno stuzzicadente ...

 definito sul server
[CUT]
 pare che capiti anche quando il recordset (sul client) è vuoto...    :-)

 ha scritto nel messaggio
news:gFnR6.4073$Ww.6...@news2.tin.it...

Pare che la proprietà rstGruppi.eof in tal caso sia impostata su true appena
apri il recordset

 ha scritto nel messaggio
news:aToR6.13567$Uo3.5...@news6.giganews.com...

questo non toglie che la proprietà count contenga comunque il valore
sbagliato: -1 invece di 0
alla M$ qualche volta la coerenza risulta *inutile*
per quanto riguarda la EOF se ti leggi un pò di documentazione *non è
garantito* che sia impostata su true, tant'è vero che nella guida in linea
si cosiglia di andare a vedersi anche BOF...    :-)

"ak47" <ak...@local.armory> ha scritto nel messaggio
news:3b15f...@212.7.64.37...

Io avrei usato
$html= implode("",file("pippo.tlp"));
Cosa ne pensi?
Scusa se te lo chiedo, ma avendo due modi (o forse di piů) per farlo, non
vorrei che mi sfugge qualcosa.
Un'latra cosa, leggicchiando qua e la a volte ho trova una sintassi del tipo
$html= implode("",@file("pippo.tlp"));
A che cavolo serve la @, non sono risciuto a trovare nessun riferimento.
Grazie

 $html= implode("",@file("pippo.tlp"));
La "@" davanti ad un nome di funzione serve per sopprimere eventuali
messaggi di warning da parte di quella funzione. Nel tuo esempio, se
la file() non riesce ad aprire pippo.tpl non segnala nulla.
Nella documentazione due righe sulla a-commerciale ci sono, ma sono
nascoste *MOLTO* bene...


scriveva:

Io uso Fast Templates per tutte le pagine dinamiche del mio sito
http://www.tupamaros.com
è di una semplicità disarmante... almeno per me
sinceramente se un anno fa -completamente digiuno di programmazione-
avessi dovuto implementare un "motore" per i template con le
espressioni regolari non avrei saputo da che parte iniziare.
Fast Template fa proprio questo, ma almeno non l'ho programmato io ;-)
Bisognerebbe poi verificare i tempi di esecuzione, di quanto rallenta
il tutto  ecc...
Per me però va più che bene.
la trovi qui:
http://www.thewebmasters.net/php/
ciao
Stefano
---------------------------------
Stefano, webmaster Tupamaros OnLine
http://www.tupamaros.com
webmaster(at)
tupamaros.com


http://www.thewebmasters.net/php/
scusa è il sito vecchio: le versioni aggiornate -più veloci e
flessibili, sono su
http://www.thewebmasters.net/
