Astuces |
Envoyez-nous vos trucs ! |
|

Recherche de dates avec SQL server
Suite à un problème que j'ai eu avec SQL Server, j'ai trouvé une petite astuce.
En effet, lorsque vous remplissez un champ date avec la fonction GETDATE(), vous obtenez la date et l'heure dans le champs.
Pour faire une requete sur la date uniquement, faites donc:
query = "SELECT DISTINCT left(champ,11) from table"
Lorsque vous lancerez la requete, vous récupérais les 11 premiers caracteres du champ, à savoir (pour aujoud'hui) jan 24 2002
Et oui, grosse surprise: un champ est retourné interprété :)

Les dates et l'heure
Pour avoir la date et l'heure courante dans un format totalement exploitable, voici ce que vous permettent l'ASP et le PHP:
| ASP | PHP | Sortie |
| Format(Now,"j/m/aa") |
date("m/d/y") |
26/12/01 |
| Format(Now,"jjjj jj mmmm aaaa") |
date("l d F Y") |
Mercredi 26 décembre 2001 |
| Format(Now,"j mmm") |
date("d M") |
26 dec |
| Format(Now,"mmmm-aa") |
date("Y-y") |
Décembre-01 |
| Format(Now,"hh:mm AM/PM") |
date("h:i A") |
03:49 PM |
| Format(Now,"h:mm:ss a/p") |
date("g:i:s a") |
3:50:00 p |
| Format(Now,"j mmmm h:mm") |
date("d Y g:i") |
26 décembre 3:51 |

Mon site est sur mon PC, j'ai une IP dynamique
la fonction getenv("REMOTE_ADDR"); vous sauve la vie.
Le script de reroutage existe ICI et il est expliqué.

Les variables d'une requête ne s'affichent pas
Il arrive souvent que lors d'une requête vous ayez des champs qui s'affichent comme étant vides alors qu'ils ne le sont pas.
Ceci est souvent vérifié avec SQLserver.
Il vous faut utiliser les variables dans l'ordre de la table, ce qui vous donne donc :
set rsConn = Server.CreateObject("ADODB.Recordset") rsConn.open "SELECT * FROM table WHERE champ1='" & valeur & " ORDER BY date ASC", connSQL rsConn.moveFirst dim var1, var2, var3, ..., varN var1 = rsConn("champ1") var2 = rsConn("champ2") var3 = rsConn("champ3") ..... varN = rsConn("champN") $string = "inserez les champs " & <b>var3</b> & <b>varN</b> & <b>var2</b> & " dans l'ordre que vous voulez " & <b>var1</b>
|
Attention: pensez bien à la ligne dim var1, var2, var3, ..., varN qui vous permet d'éviter les erreurs d'allocation de mémoire.

ASP / SQL Server et les dates
Les dates ont toujours été un problème pour grand nombre de développeurs.
Avec SQL Serveur, même si le serveur Web a bien été configuré, même si les codepages ont été définis dans chaque page, il arrive qu'une date qui a été insérée et stockée sous la forme jj/mm/aaaa se retrouve lue et affichée en mm/jj/aaaa.
Pour éviter cela, il faut placer "set dateformat DMY" dans chaque requête utilisant des dates :
sql = "set dateformat DMY insert into..." sql = "set dateformat DMY select *..."
|

ASP et les textarea
Quand on récupère le contenu d'un textarea, avec un
texte = request.form("texte") par exemple et qu'on l'affiche à l'écran, les sauts de lignes passent à la trappe.
Ex :
l'utilisateur a saisi :
"coucou
les gens"
on affiche "coucoules gens"
Pour que les retours chariot ne soient pas perdus :
texte = replace(texte, VbCrLf, "<br>")
|

Redirection de page
header("Location: page.php"); ne fonctionne pas lorsqu'un affichage a été effectué.
Pour faire une redirection qui fonctionne dans tous les cas, utilisez plutôt: die('<META HTTP-equiv="refresh" content="0;URL=page.php>');

Expiration d'une page dans le cache
Certaines pages qui affichent des données en provenance d'une base de
données s'affichent toujours de façon identique, même après modification de
la base de données.
Par exemple, une page affiche la liste des clients d'une société;
l'utilisateur crée un nouveau client pour cette société et réaffiche la page qui contient la liste, mais celle-ci est identique à la première.
Pour éviter cela, il suffit de mettre en haut de chacune des pages :
response.expires = -1 response.AddHeader "Pragma", "no-cache" response.AddHeader "cache-control", "no-store" |
et en PHP
<? header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); ?>
|
by :-) Fredo (-:

Récupérer le numéro automatique après insertion
Ce petit bout de code permet de récupérer la valeur d'un champ de type
"numéro automatique" d'une table après insertion d'un enregistrement :
dim rs, nouveau_num_auto
Set rs = server.CreateObject("ADODB.recordset") rs.open "Votretable", votreconnexion,1,3
rs.AddNew
rs("champ1") = "valeur1" rs("champ2") = "valeur2"
rs.Update
nouveau_num_auto = rs("Num_auto")
rs.close set rs = nothing
|
L'astuce existe aussi pour SQL Server, allez jeter un oeil a http://www.devparadise.com/technoweb/code/sql/A436.asp
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
(_Y_.)' ._ ) `._ `. ``-..-'
_..`--'_..-_/ /--'_.' ,'
(il),-'' (li),' ((!.-'
CrazyCat was Here
|
|
|