Accueil > > > [PHP5 - DOM - XPATH] CLASSE DE PRE-FILTRAGE DE TEXTE
[PHP5 - DOM - XPATH] CLASSE DE PRE-FILTRAGE DE TEXTE
Information sur la source
Description
Cette classe calcul un pourcentage d'apparition de certains mots pre-enregistre dans une base de donnees au format xml. Les mots sont classes par categorie et la classe permet d'en ajouter ou d'en creer de nouvelles (pas d'effacement possible pour l'instant). On peut utiliser cette classe pour valider une reponse dans un forum par exemple en recherchant le nombre de mots present dans la categorie 'insultes' (non presente dans le code, a creer vous meme donc) ou dans la categorie 'spamm' (avec des mots genre viagra, credits, financement... j'en passe et des meilleurs). La fonction a utiliser est la fonction Filtre::Anaylse() qui renvoi un tableau avec pour cle le nom de chaque categorie et pour valeur le pourcentage d'apparition des mots presents dans chaque categorie (je sais pas si j'ai ete clair). La validation du texte transmis sera par contre gere par vos soins. Le code est loin d'etre parfait (pas mal de boucle foreach() ) mais le temps d'execution reste bon, pas de probleme donc logiquement pour l'integration de cette classe dans vos projets. Un tableau de code d'erreurs est disponible mais etant donne qu'il n'y a que 2 focntions (en plus du constructeur), la gestion d'erreur est un peu particuliere. J'ai essaye de commenter le code le plus possible mais n'hesitez pas a me demander de l'aide ou des renseignements, je le ferai avec plaisir :-)
Source
- <?php
- /*
- |------------|
- | MODELE XML |
- |------------|
-
- <filtre>
- <cat1>
- <value>mot1</value>
- <value>mot2</value>
- <value>mot3</value>
- <value>mot4</value>
- </cat1>
- <cat2>
- <value>mot1</value>
- <value>mot2</value>
- <value>mot3</value>
- <value>mot4</value>
- </cat2>
- <cat3>
- <value>mot1</value>
- <value>mot2</value>
- <value>mot3</value>
- <value>mot4</value>
- </cat3>
- </filtre>
-
- Auteur : IoNAce (jean84)
- Version PHP : 5
- Lib utilise : DOM & XPATH (incluses par defaut dans php5)
- Version classe : 1.4
- */
-
- class Filtre
- {
- /**********************/
- /* Nom du fichier XML */
- /**********************/
- private $File;
-
- /*************************/
- /* Handle du fichier XML */
- /*************************/
- private $Handle;
-
- /*********************************************/
- /* Tableau d'erreurs renvoyees par la classe */
- /*********************************************/
- private static $TableOfErrors = array(
- 'CANT_CREATE_XML_FILE',
- 'CANT_LOAD_XML_FILE',
- 'LOAD_SUCCESS',
- 'CREATE_SUCCESS',
- 'CANT_OPEN_FILE',
- 'CANT_READ_FILE',
- 'CANT_SAVE_XML_FILE',
- 'NO_ERROR',
- 'CANT_SEPARATE_STRING'
- );
-
- /********************************************************************************/
- /* Rapport d'erreur de la classe */
- /* A consulter pour connaitre le resutlat de certaines actions du constructeur */
- /********************************************************************************/
- public $LastError;
-
- /****************************************************************/
- /* Constructeur de la classe */
- /* Param 1 : $sNameOfFile */
- /* -> Nom et path du fichier xml a charger (ou a creer) */
- /****************************************************************/
- function __construct($NameOfFile)
- {
- // Creation d'un nouvel handle
- $this->Handle = new DOMDocument('1.0', 'iso-8859-1');
- $this->Handle->formatOutput = TRUE;
-
- // Si le fichier n'existe pas, on le cree
- if ( !file_exists((string)$NameOfFile) )
- {
- $HandleDoc = $this->Handle;
-
- // Creation du noeud racine
- $Racine = $HandleDoc->createElement('filtre');
- $Racine = $HandleDoc->appendChild($Racine);
-
- // On sauvegarde le fichier
- if ( $HandleDoc->save($NameOfFile) === FALSE )
- $this->LastError = $this->TableOfErrors[0];
- else
- $this->LastError = $this->TableOfErrors[3];
- }
- else
- {
- // Sinon on le charge
- if ( !$this->Handle->load($NameOfFile) )
- $this->LastError = $TableOfErrors[1];
- else
- $this->LastError = $this->TableOfErrors[2];
- }
-
- $this->File = $NameOfFile;
- }
-
- /************************************************************************************************************/
- /* Fonction recherchant les mots de $LenWords caracteres afin de les enregistrer dans le fichier xml */
- /* La fonction decoupe les mots grace aux espaces. Pensez donc a les inclures ! */
- /* Param 1 : $String */
- /* -> Chaine de caractere ou recuperer les mots */
- /* Param 2 : $LenWords */
- /* -> Nombre de caractere minimum par mot (si = 0, on recupere tout. Attention donc !) */
- /* Param 3 : $Cat */
- /* -> Nom de la categorie definissant le type de mots a enregistre */
- /* Param 4 : $IsFile */
- /* -> Si = TRUE, $String est le nom d'un fichier qu'il faudra lire en premier */
- /* -> Par defaut, la valeur est mise a FALSE pour faire simple */
- /* Attention a ne pas creer de categorie nommee 'foo' ou 'final', reserve a la classe ! */
- /************************************************************************************************************/
- public function SaveWords($String, $LenWords, $Cat, $IsFile=FALSE)
- {
- // Lecture du fichier
- if ( $IsFile )
- {
- $File = fopen($String, 'r');
- if ( $File === FALSE )
- return $this->TableOfErrors[4];
-
- $Buffer = fread($File, filesize($String));
- if ( $Buffer === FALSE )
- return $this->TableOfErrors[5];
-
- fclose($File);
- $String = $Buffer;
- }
-
- $Compteur = 0;
- $Table = array();
-
- $String = $this->Clean($String);
-
- $SubString = explode(' ', $String);
- if ( $SubString === FALSE )
- return $this->TableOfErrors[8];
-
- $NbrCases = count($SubString);
- for ( $i=0; $i<$NbrCases; $i++ )
- {
- if ( strlen($SubString[$i]) >= $LenWords )
- {
- if ( !empty($SubString[$i]) )
- {
- $Table[$Compteur] = strtolower($SubString[$i]);
- $Compteur += 1;
- }
- }
- }
-
- // Recherche de la balise <$Cat> dans le fichier xml
- $XPath = new DOMXPath($this->Handle);
- $Query = "boolean(/filtre/$Cat) = false";
- $Result = $XPath->evaluate($Query);
-
- $Handle = $this->Handle;
- $Handle->formatOutput = TRUE;
-
- if ( $Result === TRUE )
- {
- // Recupere la racine
- $Racine = $Handle->getElementsByTagName('filtre')->item(0);
- $Categorie = $Handle->createElement($Cat);
- $Categorie = $Racine->appendChild($Categorie);
-
- // Sauvegarde du fichier
- if ( $Handle->save($this->File) === FALSE )
- return $this->TableOfErrors[6];
- }
-
- // Recupere la balise <$Cat>
- $Racine = $Handle->getElementsByTagName($Cat)->item(0);
-
- // On ajoute les elements
- foreach ( $Table as $Key => $Value )
- {
- $Value = soundex($Value);
- // Verifie que le mot n'est pas deja enregistre
- $Query = '/filtre/*/word[@value="'.$Value.'"]';
- $Result = $XPath->query($Query);
- if ( empty($Result->item(0)->nodeValue) )
- {
- $BaliseElement = $Handle->createElement('word');
- $BaliseElement = $Racine->appendChild($BaliseElement);
- $BaliseElement->setAttribute('value', $Value);
- }
- }
-
- // Sauvegarde du fichier
- if ( $Handle->save($this->File) === FALSE )
- return $this->TableOfErrors[6];
- else
- return $this->TableOfErrors[7];
- }
-
- /****************************************************************************************************************************/
- /* Cette fonction calcule (en pourcentage) le taux d'apparition de chaque mot et place le resultat dans un tableau. */
- /* Le tableau renvoye index ses cases avec le nom des categories et le pourcentage de mots de cette catehorie comme valeur */
- /* Param 1 : $String */
- /* -> Texte a analyser */
- /* Param 2 : $Cat */
- /* -> Precise la categorie ou rechercher. Dans ce cas, le pourcentage ne sera calcule que pour cette categorie */
- /* -> /!\ Si la categorie n'existe pas, le pourcentage sera toujours = 0 */
- /* Dans le tableau renvoye, il y a une case speciale appellee 'foo' qui contient le nombre de mots trouvees par la fonction.*/
- /* Permet de pouvoir apprehender le resultat final. Attention donc a ne pas creer de categorie 'foo' sous peine de voir le */
- /* resultat errone. Une autre case appelle 'final' contient la somme de tous les pourcentages calcules jusque la. */
- /****************************************************************************************************************************/
- public function Analyse($String, $Cat=NULL)
- {
- // Preparation d'une instance de la classe DOMXPath
- $XPath = new DOMXPath($this->Handle);
-
- // Compteur de mots
- $Comtpeur = 0;
-
- // Preparation du tableau
- $Table = array();
- if ( $Cat === NULL )
- {
- $Query = '/filtre/*';
- $Result = $XPath->query($Query);
- foreach ( $Result as $Key => $Value )
- $Table[$Value->nodeName] = 0;
- }
- else { $Table[$Cat] = 0; }
-
- // Cree une case 'final' qu'on fait partir a 0
- $Table['final'] = 0;
-
- $String = $this->Clean($String);
-
- // Exctraction des mots
- $SubString = explode(' ', $String);
- if ( $SubString === FALSE )
- return $this->TableOfErrors[8];
-
- $NbrCases = count($SubString);
- for ( $i=0; $i<$NbrCases; $i++ )
- {
- if ( !empty($SubString[$i]) )
- {
- $SubString[$i] = soundex($SubString[$i]);
- // On verifie que ce mot est enregistre dans une categorie (celle precise ou toutes)
- if ( $Cat === NULL )
- $Query = '/filtre/*/word[@value="'.$SubString[$i].'"]';
- else
- $Query = '/filtre/'.$Cat.'/word[@value="'.$SubString[$i].'"]';
-
- $Result = $XPath->query($Query);
- if ( !empty($Result->item(0)->nodeValue) )
- {
- // Si c'est le cas, on cherche les categories
- foreach ( $Table as $Key => $Value )
- {
- $Query = '/filtre/'.$Key.'/word[@value="'.$SubString[$i].'"]';
- $Result = $XPath->query($Query);
-
- // Si la categorie en cours contient bien la valeur obtenue
- if ( !empty($Result->item(0)->nodeValue) )
- {
- $Table[$Key] += 1;
- break;
- }
- }
- }
- $Compteur += 1;
- }
- }
-
- // Calcul des pourcentages
- foreach ( $Table as $Key => $Value )
- {
- if ( $Key != 'final' )
- {
- if ( $Value != 0 )
- $Table[$Key] = round((($Value * 100) / $Compteur), 2);
-
- $Table['final'] += $Table[$Key];
- }
- }
-
- // Cree une case 'foo' permettant a l'utilisateur de conaitre le nombre de mots pris en compte par la fonction
- $Table['foo'] = $Compteur;
-
- // Retourne le tableau
- return $Table;
- }
-
- /************************************************/
- /* Enleve la plupart des signes de ponctuation */
- /* Param 1 : $Value */
- /* -> Chaine a nettoyer */
- /************************************************/
- private function Clean($Table)
- {
- $Array = array(',', '!', ',', ';', '?', '*', '+', '-', '/', '²', '=', ')', '(', '{', '}', '"', '\'', '\\', '`', ':', ' ');
- return str_replace($Array, '', $Table);
- }
- }
- ?>
<?php
/*
|------------|
| MODELE XML |
|------------|
<filtre>
<cat1>
<value>mot1</value>
<value>mot2</value>
<value>mot3</value>
<value>mot4</value>
</cat1>
<cat2>
<value>mot1</value>
<value>mot2</value>
<value>mot3</value>
<value>mot4</value>
</cat2>
<cat3>
<value>mot1</value>
<value>mot2</value>
<value>mot3</value>
<value>mot4</value>
</cat3>
</filtre>
Auteur : IoNAce (jean84)
Version PHP : 5
Lib utilise : DOM & XPATH (incluses par defaut dans php5)
Version classe : 1.4
*/
class Filtre
{
/**********************/
/* Nom du fichier XML */
/**********************/
private $File;
/*************************/
/* Handle du fichier XML */
/*************************/
private $Handle;
/*********************************************/
/* Tableau d'erreurs renvoyees par la classe */
/*********************************************/
private static $TableOfErrors = array(
'CANT_CREATE_XML_FILE',
'CANT_LOAD_XML_FILE',
'LOAD_SUCCESS',
'CREATE_SUCCESS',
'CANT_OPEN_FILE',
'CANT_READ_FILE',
'CANT_SAVE_XML_FILE',
'NO_ERROR',
'CANT_SEPARATE_STRING'
);
/********************************************************************************/
/* Rapport d'erreur de la classe */
/* A consulter pour connaitre le resutlat de certaines actions du constructeur */
/********************************************************************************/
public $LastError;
/****************************************************************/
/* Constructeur de la classe */
/* Param 1 : $sNameOfFile */
/* -> Nom et path du fichier xml a charger (ou a creer) */
/****************************************************************/
function __construct($NameOfFile)
{
// Creation d'un nouvel handle
$this->Handle = new DOMDocument('1.0', 'iso-8859-1');
$this->Handle->formatOutput = TRUE;
// Si le fichier n'existe pas, on le cree
if ( !file_exists((string)$NameOfFile) )
{
$HandleDoc = $this->Handle;
// Creation du noeud racine
$Racine = $HandleDoc->createElement('filtre');
$Racine = $HandleDoc->appendChild($Racine);
// On sauvegarde le fichier
if ( $HandleDoc->save($NameOfFile) === FALSE )
$this->LastError = $this->TableOfErrors[0];
else
$this->LastError = $this->TableOfErrors[3];
}
else
{
// Sinon on le charge
if ( !$this->Handle->load($NameOfFile) )
$this->LastError = $TableOfErrors[1];
else
$this->LastError = $this->TableOfErrors[2];
}
$this->File = $NameOfFile;
}
/************************************************************************************************************/
/* Fonction recherchant les mots de $LenWords caracteres afin de les enregistrer dans le fichier xml */
/* La fonction decoupe les mots grace aux espaces. Pensez donc a les inclures ! */
/* Param 1 : $String */
/* -> Chaine de caractere ou recuperer les mots */
/* Param 2 : $LenWords */
/* -> Nombre de caractere minimum par mot (si = 0, on recupere tout. Attention donc !) */
/* Param 3 : $Cat */
/* -> Nom de la categorie definissant le type de mots a enregistre */
/* Param 4 : $IsFile */
/* -> Si = TRUE, $String est le nom d'un fichier qu'il faudra lire en premier */
/* -> Par defaut, la valeur est mise a FALSE pour faire simple */
/* Attention a ne pas creer de categorie nommee 'foo' ou 'final', reserve a la classe ! */
/************************************************************************************************************/
public function SaveWords($String, $LenWords, $Cat, $IsFile=FALSE)
{
// Lecture du fichier
if ( $IsFile )
{
$File = fopen($String, 'r');
if ( $File === FALSE )
return $this->TableOfErrors[4];
$Buffer = fread($File, filesize($String));
if ( $Buffer === FALSE )
return $this->TableOfErrors[5];
fclose($File);
$String = $Buffer;
}
$Compteur = 0;
$Table = array();
$String = $this->Clean($String);
$SubString = explode(' ', $String);
if ( $SubString === FALSE )
return $this->TableOfErrors[8];
$NbrCases = count($SubString);
for ( $i=0; $i<$NbrCases; $i++ )
{
if ( strlen($SubString[$i]) >= $LenWords )
{
if ( !empty($SubString[$i]) )
{
$Table[$Compteur] = strtolower($SubString[$i]);
$Compteur += 1;
}
}
}
// Recherche de la balise <$Cat> dans le fichier xml
$XPath = new DOMXPath($this->Handle);
$Query = "boolean(/filtre/$Cat) = false";
$Result = $XPath->evaluate($Query);
$Handle = $this->Handle;
$Handle->formatOutput = TRUE;
if ( $Result === TRUE )
{
// Recupere la racine
$Racine = $Handle->getElementsByTagName('filtre')->item(0);
$Categorie = $Handle->createElement($Cat);
$Categorie = $Racine->appendChild($Categorie);
// Sauvegarde du fichier
if ( $Handle->save($this->File) === FALSE )
return $this->TableOfErrors[6];
}
// Recupere la balise <$Cat>
$Racine = $Handle->getElementsByTagName($Cat)->item(0);
// On ajoute les elements
foreach ( $Table as $Key => $Value )
{
$Value = soundex($Value);
// Verifie que le mot n'est pas deja enregistre
$Query = '/filtre/*/word[@value="'.$Value.'"]';
$Result = $XPath->query($Query);
if ( empty($Result->item(0)->nodeValue) )
{
$BaliseElement = $Handle->createElement('word');
$BaliseElement = $Racine->appendChild($BaliseElement);
$BaliseElement->setAttribute('value', $Value);
}
}
// Sauvegarde du fichier
if ( $Handle->save($this->File) === FALSE )
return $this->TableOfErrors[6];
else
return $this->TableOfErrors[7];
}
/****************************************************************************************************************************/
/* Cette fonction calcule (en pourcentage) le taux d'apparition de chaque mot et place le resultat dans un tableau. */
/* Le tableau renvoye index ses cases avec le nom des categories et le pourcentage de mots de cette catehorie comme valeur */
/* Param 1 : $String */
/* -> Texte a analyser */
/* Param 2 : $Cat */
/* -> Precise la categorie ou rechercher. Dans ce cas, le pourcentage ne sera calcule que pour cette categorie */
/* -> /!\ Si la categorie n'existe pas, le pourcentage sera toujours = 0 */
/* Dans le tableau renvoye, il y a une case speciale appellee 'foo' qui contient le nombre de mots trouvees par la fonction.*/
/* Permet de pouvoir apprehender le resultat final. Attention donc a ne pas creer de categorie 'foo' sous peine de voir le */
/* resultat errone. Une autre case appelle 'final' contient la somme de tous les pourcentages calcules jusque la. */
/****************************************************************************************************************************/
public function Analyse($String, $Cat=NULL)
{
// Preparation d'une instance de la classe DOMXPath
$XPath = new DOMXPath($this->Handle);
// Compteur de mots
$Comtpeur = 0;
// Preparation du tableau
$Table = array();
if ( $Cat === NULL )
{
$Query = '/filtre/*';
$Result = $XPath->query($Query);
foreach ( $Result as $Key => $Value )
$Table[$Value->nodeName] = 0;
}
else { $Table[$Cat] = 0; }
// Cree une case 'final' qu'on fait partir a 0
$Table['final'] = 0;
$String = $this->Clean($String);
// Exctraction des mots
$SubString = explode(' ', $String);
if ( $SubString === FALSE )
return $this->TableOfErrors[8];
$NbrCases = count($SubString);
for ( $i=0; $i<$NbrCases; $i++ )
{
if ( !empty($SubString[$i]) )
{
$SubString[$i] = soundex($SubString[$i]);
// On verifie que ce mot est enregistre dans une categorie (celle precise ou toutes)
if ( $Cat === NULL )
$Query = '/filtre/*/word[@value="'.$SubString[$i].'"]';
else
$Query = '/filtre/'.$Cat.'/word[@value="'.$SubString[$i].'"]';
$Result = $XPath->query($Query);
if ( !empty($Result->item(0)->nodeValue) )
{
// Si c'est le cas, on cherche les categories
foreach ( $Table as $Key => $Value )
{
$Query = '/filtre/'.$Key.'/word[@value="'.$SubString[$i].'"]';
$Result = $XPath->query($Query);
// Si la categorie en cours contient bien la valeur obtenue
if ( !empty($Result->item(0)->nodeValue) )
{
$Table[$Key] += 1;
break;
}
}
}
$Compteur += 1;
}
}
// Calcul des pourcentages
foreach ( $Table as $Key => $Value )
{
if ( $Key != 'final' )
{
if ( $Value != 0 )
$Table[$Key] = round((($Value * 100) / $Compteur), 2);
$Table['final'] += $Table[$Key];
}
}
// Cree une case 'foo' permettant a l'utilisateur de conaitre le nombre de mots pris en compte par la fonction
$Table['foo'] = $Compteur;
// Retourne le tableau
return $Table;
}
/************************************************/
/* Enleve la plupart des signes de ponctuation */
/* Param 1 : $Value */
/* -> Chaine a nettoyer */
/************************************************/
private function Clean($Table)
{
$Array = array(',', '!', ',', ';', '?', '*', '+', '-', '/', '²', '=', ')', '(', '{', '}', '"', '\'', '\\', '`', ':', ' ');
return str_replace($Array, '', $Table);
}
}
?>
Conclusion
Pas de bugs connus (je pense avoir fait le tour) mais pas de probleme pour les mises a jours si jamais vous en trouvez. Idem pour les fonctions a rajouter (je pense que je vais integre la possibilite d'effacer certains mots enregistres ou certaines categories, suivant les besoins).
Pour le niveau (mis en initie), j'ai fait ce choix car j'utilise XPath et DOM (de maniere simple). Que les debutants ne se frustrent pas, le code est tres accessible (de mon point de vue c'est vrai mais normalement y a pas trop de difficulte) et je reste de toute facon disponible.
En esperant que cela vous plaise :p
@++
Historique
- 29 janvier 2007 21:08:08 :
- Modification du modele XML present au debut du source dans les commentaires. L'autre etait l'ancien modele, celui-ci reflete la vrai structure du document xml generee par la classe.
- 30 janvier 2007 17:16:30 :
- Pas de mises a jour importante pour l'instant (j'ai pas encore modifier selon les conseils de Fhx) mais j'ai mis les deux versions de ma classe (avec strtok() et avec explode()), comme je l'explique plus bas.
- 30 janvier 2007 17:16:41 :
- Pas de mises a jour importante pour l'instant (j'ai pas encore modifier selon les conseils de Fhx) mais j'ai mis les deux versions de ma classe (avec strtok() et avec explode()), comme je l'explique plus bas.
- 10 février 2007 15:45:39 :
- - Mise a jour de la fonction Filtre::Clean() avec un traitement par tableau
- Mise a jour de quelques bouts de codes par-ci par la
- Ajout de la fonction soundex() afin de permettre a Filtre::Analayse() d'etre plus precise
Sources du même auteur
Sources de la même categorie
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBERÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE Le code est simple, il permet depuis une url youtube de récupérer son identifiant et de se connecter au serveur de miniatures pour en récupérer les im...
par tefa24600
CONVERTISSEUR DE NOMBRES EN TEXTECONVERTISSEUR DE NOMBRES EN TEXTEQu'est-ce ? Un convertisseur de nombre en texte.
Ses particularités?
- pas de limitation sur la taille du nombre (traitement en string, et non en ...
par macruz
CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGECODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGECe script php permet, comme son nom l'indique de coder un texte pour remplacer les caractères spéciaux, ou apprendre à comprendre les htmlentities, sp...
par Salva9473
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Exécution automatique d'une tâche [ par wininfos ]
Bonjour,Sur mon site, j'ai des rapports à envoyer par mail, mais je ne vais pas meconnecter tous les jours à une heure précise pour que je lance la pr
envoi mail automatique [ par dargaud ]
Bonjour,je suis tout nouveau en php et j'aimerai avoir un renseignement :est-il possible d'envoyer un mail automatiquement à une certaine heure tous l
Mail d'avertissement automatique [ par ass ]
Bonjour!Je voudrais un script qui me permet d'avertir mes clients de manière automatique un mois avent la fin de l'habonnement.Ils s'inscrivent via un
redirection automatique [ par Daimadoshi ]
je voudrair faire une redirection automatique e nenvoyant des valeur contenu ds des variable
Detection automatique de flach [ par frespech ]
qqun pourait-il m'indiquer comment faire pour detecter la presence de falsh sur le poste qui se connecte au site.
destructeur automatique en php [ par 751 ]
Je cherche une equivalence du destructeur Finalize() du langage Cpp en PHP.Merci d'avance.:)
Execution automatique d'une page php a une heure precise [ par TiotBour ]
Voila je voudrai savoir comment faire pour qu'une page php s'execute toute seule sans qu'il y est besoin de cliquer dessus (enfin 1 fois pour la lance
création automatique table et champs [ par liege ]
bonsoir,je cherche un code à insérer dans le fichier de récupération des données de mon formulaire pour qu'il crée automatiquement la table si elle n'
Lien automatique vers une autre page. [ par jcdc ]
Voilà mon soucis. Sur une page en php, je fais un test. ET j'aimerais que selon le résultat de ce test, on soit redirigé vers une autre page. Je ne pe
Menu déroulant automatique ... [ par oki972 ]
Bonjour je suis débutant et j'ai un gros soucis.J'ai une base de donnée qui recense des titres de livres et pour supprimer le champ correspondant a un
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|