Newsgroup: it.comp.www.php
Titolo: Re: query php + mssql

 nessun messaggio di errore.
dov'è che controlli il messaggio di errore, sulla pagina?
devi guardare nel log di apache, 
comunque l'errore è che in tutte le funzioni ti manda una s!
msql != mssql
 


Ciao RedWiz,
la "s" l'ho aggiunta ma purtroppo non cambia nulla. :-(
Come avrai capito non sono molto esperta, preparo le pagine e poi le
carico all'interno di una cartella sul server, poi scrivo l'indirizzo
relativo a quella pagina su explorer.(non so e non credo sia il modo
giusto ma sinceramente non saprei come altro fare)
Ma come posso guardare il log di apache?
Grazie per l'aiuto
Lidia

 dirmi cosa sbaglio ???
Noi no, ma PHP si`.
Aggiungi
error_reporting(E_ALL & E_STRICT);
all'inizio dello script.
Bye.

 error_reporting(E_ALL & E_STRICT);
Scusami...
E_ALL | E_STRICT
In or, non in and...
Bye.


Ho riscritto il codice così
<?php
error_reporting(E_ALL & E_STRICT);
$link = mssql_connect("cka","bbbb","jjjjj") or die ("Could not connect
to database: ".mssql_get_last_message());
$db = mssql_select_db('[kkV7]',$link)or die("Unable to select
database");
$result = mssql_query("SELECT * FROM Telephony Daily  WHERE Queue =
'SEN'", $link);
if (!$result) {
    die("query failed: " . mssql_error());
}
while ($row = mssql_fetch_array($result)) {
    echo $row["Queue"];
}
echo "Ciao... questo è PHP!";
?>
non mi da messaggi di errore, vedo solo la scritta "Ciao... questo è
PHP!"


No ho detto una cazzata, quanto se tolgo il commento alla parte
centrale mi torna la pagina bianca (mi sparisce la scritta "Ciao...
questo è PHP;  )
<?php
error_reporting(E_ALL | E_STRICT );
$link = mssql_connect("aa","aa","aa") or die ("Could not connect
to database: ".mssql_get_last_message());
$db = mssql_select_db('[aaa7]',$link)or die("Unable to select
database");
/* $result = mssql_query("SELECT * FROM Telephony Daily  WHERE Queue =
'SEN'", $link);
if (!$result) {
  die("query failed: " . mssql_error());
}
while ($row = mssql_fetch_array($result)) {
    echo $row["Queue"];
} */


Ho riletto la frase iniziale, l'avevo scritta al volo senza rileggerla
scusate l'italiano casuale!

 centrale mi torna la pagina bianca
Forse appare bianca, ma in realtà non lo è ed è solo il browser che
non la renderizza: prova a fare un "view source" da explorer e guarda
se c'e' scritto qualcosa...
bye!


Ora vedo gli errori, (un sacco di errori!) però non ho ancora capito
come risolverli!
-------------------------------------------------------------
Warning: mssql_query() [function.mssql-query]: message: Invalid object
name 'Telephony'. (severity 16) in C:\Program Files\xampp\htdocs
\intranet\test_10_03_08_19.php on line 11
Warning: mssql_query() [function.mssql-query]: Query failed in C:
\Program Files\xampp\htdocs\intranet\test_10_03_08_19.php on line 11
Warning: mssql_fetch_array(): supplied argument is not a valid MS SQL-
result resource in C:\Program Files\xampp\htdocs\intranet
\test_10_03_08_19.php on line 16
Ciao... questo è PHP!
---------------------------------------------------------------------
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$link = mssql_connect("dd","dd","dd") or die ("Could not connect
to database: ".mssql_get_last_message());
$db = mssql_select_db('[dddd]',$link)or die("Unable to select
database");
$result = mssql_query("SELECT * FROM Telephony Daily  WHERE Queue =
'SEN'", $link);
if (!$result) {
}


 [...]
Il problema è qui. Il server cerca la tabella Telephony e non la trova 
perchè si chiama Telephony Daily, ovvero contiene uno spazio nel nome.
Devi quindi usare un nome senza spazi oppure inserire tale nome con dei 
caratteri di escape nel codice SQL. In MySQL si usano i backquotes (`), 
ma con MsSQL non saprei.

Eccomi di nuovo,
ho fatto circa un milione di prove e qualcosina ho tirato fuori ,
questo codice funziona ed ecco il risultato.
MS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EITMS_EIT
Ciao... questo è PHP!
Ora vorrei che stampare tutta la tabella,  il codice credo sia
qualcosa tipo :
 $result = mssql_query("SELECT * FROM [Telephony Daily ]
ma poi non so come gestire l'echo  e nemmeno come vederlo intabellato
invece che così tutto di seguito.
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$link = mssql_connect("aaa","dddd","ddd") or die ("Could not connect
to database: ".mssql_get_last_message());
$db = mssql_select_db('[sssss]',$link)or die("Unable to select
database");
$result = mssql_query("SELECT * FROM [Telephony Daily ]  WHERE Queue
=
'MS_IT'", $link);
if (!$result) {
}
while ($row = mssql_fetch_array($result)) {
    echo $row["Queue"];
}
?>
<br />
<?php


 
Hai eseguito una query, con il while cicli sui record estratti dal 
recordset.
Se vuoi un valore sotto l'altro ti basta un "<br />", se vuoi una 
tabella html dovrai giocare con i tag tr e td...questi sono problemi di 
impaginazione (html) non di php!
	Francesco

         Francesco
grazie per le dritte, per la tabella guarderò l'html però non ho
capita come stampare a video tutta la tabella

 capita come stampare a video tutta la tabella
Sei OT:
$result = mssql_query("SELECT * ...");
echo '<table>';
while ($row = mssql_fetch_array($result)) {
     echo '<tr>';
     echo '<td>$row['a']</td>';	//Campo A
     echo '<td>$row['b']</td>';	//Campo B
     echo '</tr>;
}
echo '</table>';
?>
	Francesco



 - Mostra testo tra virgolette -
Scusa non volevo andare OT volevo  sapere il codice per stampare la
query (anche senza l'allineamento.)
Cmq grazie ho risolto 2 problemi in un colpo solo

 - Mostra testo tra virgolette -
Ma se io volessi stampare tutti i campi contenuti in quella
tabella????
devo obbligatoriamente fare l'echo di ogni campo o posso in qualche
modo dire "stampa tutti i campi"?


 devo obbligatoriamente fare l'echo di ogni campo o posso in qualche
Hai a disposizione diversi strumenti: mssql_num_fields ti consente di 
avere il numero delle colonne (campi) del recordset; oppure puoi 
utilizzare *_fetch_array con l'opzione MYSQL_NUM e ciclare per tutti i 
campi dell'array:
$result = mssql_query("SELECT * ...");
echo '<table>';
while ($row = mssql_fetch_array($result, MYSQL_NUM)) {
    echo '<tr>';
    foreach($row as $key => $val) {
       echo '<td>' . $val . '</td>';
    }
    echo '</tr>';
}
echo '</table>';
	Francesco


Ciao Funziona sei un genio!!!!!!!
però vorrei che in alto venisse stampato (come prima riga) il nome del
campo. ora vedo tutto il contenuto ma non il "titolo".

 campo. ora vedo tutto il contenuto ma non il "titolo".
Non vorrei essere scortese, ma un occhio al manuale???
mssql_field_name — Get the name of a field
http://it.php.net/manual/en/function.mssql-field-name.php
Qua hai tutte le funzioni di mssql_*
http://it.php.net/manual/en/ref.mssql.php
Oppure guarda MSSQL_ASSOC su 
http://it.php.net/mssql_fetch_array
while ($row = mssql_fetch_array($result, MSSQL_ASSOC)) {
    echo '<tr>';
    foreach($row as $key => $val) {
      echo '<td>' . $key . '</td>';
      echo '<td>' . $val . '</td>';
    }
    echo '</tr>';
}
	Francesco

         Francesco
No, non sei scortese anzi hai ragione, solo che non avevo mai usato
php con mssql o mysql prima 10 giorni fa e ancora non riesco a capire
bene come funzioni. (Però lo sto studiando giorno e notte quindi prima
o poi imparerò)

 o poi imparerò)
Le funzioni (di base) per l'accesso al database sono tutte molto simili: 
per mysql c'e' mysql_query per MSsql c'è mssql_query; il manuale è fatto 
bene e ti può chiarire qualsiasi dubbio.
Quando esegui una query puoi elaborare il resultset in diversi modi: 
scorrendolo, tramite *_result, dove hai l'indice per la riga e l'indice 
per la colonna (il campo) oppure con *_fetch_[array|assoc|row....] dove, 
semplificando al massimo, carichi in memoria una riga del recordset alla 
volta (tramite un ciclo, scorri tutto il RS) e il risultato viene 
memorizzato in un array dove puoi avere come indice dell'array un numero 
(indice della colonna), il nome del campo, oppure entrambi (indice 
numerico + nome del campo).
Il manuale riporta inoltre un'utile informazione:
Performance:  An important thing to note is that using 
mysql_fetch_assoc() is not significantly slower than using 
mysql_fetch_row(), while it provides a significant added value.
valido ovviamente anche per MSSQL, dovuto dalla gestione dell'array in 
php, ma questa è un'altra storia!
Ultima cosa, se sei all'inizio e la circostanza lo permette, prova ad 
utilizzare una classe per l'astrazione del database (dal php 5 c'e' PDO 
integrata, ma occhio alla versione del php, all'inizio faceva certi 
arrosti...) altrimenti hai pear:DB/MDB, adodb etc
	Francesco


Grazie Francesco ora mi rileggo tutto con calma perchè è tutto un pò
complicato. Purtroppo l'unica cosa che non ho è il tempo entro domani
mattina devo consegnare un report gestito tramite combobox in cui
trovo i dati della tabella scelta) (per capirci ci sono 10 tabelle
ognuna riferita ad un`azienda diversa, io devo inserire nel combobox i
nomi delle 10 aziende, nel momento in cui si sceglie dallla combobox
un'azienda si dovrebbe aprire nella stessa pagina il report della
tabella relativo a quell'azienda.)
Sto cercando di fare le cose passo passo, prima capire come si
estraggono i dati, e all'incirca ci sono, ora sto cercando di capire
come allinearli in maniera giusta,  poi cerchero' di capire come posso
creare il combobox e farlo interagire (ma probabilmente aprirò un
topic a parte tra un pò, quando avrò capito come allineare in maniera
decente le tabelle.

 decente le tabelle.
La prossima volta utilizza strumenti ad alto livello(p.e. 
pear::QuickForm pear::Structures_DataGrid) e in 10-15 minuti (senza 
esagerare) esegui il tutto (compreso l'export su excel!)
	Francesco


e io lo scopro solo ora???  brutta cosa essere ignoranti!
Mi sapresti dire dove posso trovare un manuale o qualcosa del genere
(possibilmente in italiano) mi do un ora di tempo per vedere se riesco
a capire come funziona e se devo installarlo in qualche modo. intanto
faccio una ricerca su google qualcosa troverò!!!
Grazie mille!

 (possibilmente in italiano) mi do un ora di tempo per vedere se riesco
In italiano non c'e' praticamente niente.
La tua mail è valida? in tal caso, se vuoi, ti invio qualche "demo"
 > a capire come funziona e se devo installarlo in qualche modo. intanto
 > faccio una ricerca su google qualcosa troverò!!!
Per l'installazione, dipende dal OS: se sei su linux esiste il package 
php-pear su win non ho idea :-(
	Francesco

         Francesco
Ho guargato 1000 esempi ma non riesco a risolvere.
ora la tabella viene visualizzata così:praticamente dato e risultato
dato e risultato,
Queue SHC  Date Jul 2 2007 12:00AM Offered  9
Queue SHC  Date Jul 3 2007 12:00AM Offered  9
io invece latabella vorrei impostarla cosi.
Queue	Date        Offered
SHC 7/2/2007	29
SHC 	7/3/2007	37
SHC         7/4/2007	24
SHC	7/5/2007	12
SHC	7/6/2007	14
SHC	7/9/2007	17
5699	7/10/2007	14
5699	7/11/2007	25
5699	7/12/2007	25
5699	7/13/2007	9
5699	7/16/2007	20
5699	7/17/2007	37
Grazie Lid

 Grazie Lid
$result = mssql_query(...);
if(mssql_num_rows($result) == 0) die("No record");
echo '<table>';
echo '<tr>';
for($i =0; $i < mssql_num_fields($result); $i++) {
   echo '<th>' . mssql_field_name($result, $i) . '</th>';
}
echo '</tr>';
while ($row = mssql_fetch_array($result)) {
   echo '<tr>';
   foreach($row as $val) {
     echo '<td>' . $val . '</td>';
   }
   echo '</tr>';
}
echo '</table>';
Ovviamente non provato...
Uno dei n-mila modi possibili, ti rinnovo nuovamente la lettura del 
manuale, dove trovi tutto il necessario!
	Francesco

 - Show quoted text -
Ora ci provo!!!! grazie grazie!!!!

 - Mostra testo tra virgolette -
Il codice funziona (quasi) non ho capito perchè ma mi mette il
contenuto dei campi doppi invece che essere:
nome  cognome  indirizzo      cap
marco   rossi     via roma      21100
è così:
nome  cognome  indirizzo      cap
marco   marco     rossi           rossi      via roma via roma
21100  21100
Ho provato a capirlo da sola, ho anche trovato un codice che ci
assomiglia per capire dov'era il problema ma non ne ho tirato fuori
nulla .
Example
Example 1310. Dynamically display query results
$db = @sybase_connect("SERVER","DBUSER","DBPASSWD") or die("Unable to
connect to server");
sybase_select_db("pubs");
$result = sybase_query("SELECT * FROM authors");
print("<table border=1>");
print("<tr><th>Name</th></tr>");
for ($i=0; $i < sybase_num_fields($result); $i++) {
    print("<tr>");
    printf("<td>%s</td>", sybase_field_name($result, $i));
    print("</tr>");
}
print("</table>");

 - Mostra testo tra virgolette -
ce l'ho fatta!!!!! l'ho confrontato col codice che non aveva i titoli
dei campi è ho capito dovera l'inghippo!.
while ($row = mssql_fetch_array($result, MSSQL_ASSOC)) {  (non mi ero
accorta che non c'era   MSSQL_ASSOC)
almeno per oggi un problema su due l'ho risolto!!!! :-)