Accueil > > > EXTRACTION/INSERTION DE CONDITIONS SQL DANS UNE REQUÊTE
EXTRACTION/INSERTION DE CONDITIONS SQL DANS UNE REQUÊTE
Information sur la source
Description
Cette fonction permet de remplacer et/ou d'insérer des conditions SQL dans une requête. Cela est pratique pour les formulaires dynamiques dont la mise à jour repose sur les valeurs uploadées par l'internaute. Elle est composé d'une fonction de vérification de l'intégrité du tableau de critères passé en paramètre (Verif_Interg_Tbl) et de la fonction d'extraction et d'insertion proprement dite (Place_cond_SQL) Un petit exemple : $SQL='SELECT Toto FROM Tata WHERE Titi<>\'Gros Minet\''; echo $SQL donnera 'SELECT Toto FROM Tata WHERE Titi<>'Gros Minet' $Tbl_insert[0][0]='Champ1';$Tbl_insert[0][ 1]=0;$Tbl_insert[0][2]='';$Tbl_insert[0][3]='or'; $Tbl_insert[1][0]='Champ2';$Tbl_insert[1][1]='C\'é tait';$Tbl_insert[1][2]='\'';$Tbl_insert[1][3]=''; $Tbl_insert[2][0]='Champ3';$Tbl_insert[2][1]='le temps béni';$Tbl_insert[2][2]='\'';$Tbl_insert[2][3]='an d'; $Tbl_insert[3][0]='Champ4';$Tbl_insert[3][1]=' de la rengaine';$Tbl_insert[3][2]='\'';$Tbl_insert[3][3] ='or'; $Tbl_insert[4][0]='Champ5';$Tbl_insert[4][1 ]='Serge';$Tbl_insert[4][2]='\'';$Tbl_insert[4][3] ='and'; $Tbl_insert[5][0]='Champ6';$Tbl_insert[5][ 1]='Lama';$Tbl_insert[5][2]='\'';$Tbl_insert[5][3] ='or'; echo Place_cond_SQL($SQL,$Tbl_insert,'AND Titi BETWEEN \'Toi AND Moi\'') donnera SELECT Toto FROM Tata WHERE Champ1=0 AND Champ2='C\'était' AND Champ3='le temps béni' OR Champ4='de la rengaine' AND Champ5='Serge' OR Champ6='Lama' AND Titi BETWEEN \'Toi AND Moi\''
Source
- <?php
- function Verif_Interg_Tbl(&$Tbl,$Nbre_Col=0,$Nbre_Lignes=0)
- {
- //Cette fonction vérifie que le nombre de colonnes et/ou de lignes attendues dans un tableau sont bien là
- $Lignes=sizeof($Tbl);
- if($Nbre_Lignes>0 & $Lignes!=$Nbre_Lignes) return false;//Les colonnes
- foreach($Tbl as $Colonne)
- {
- if($Nbre_Col>0 & sizeof($Colonne)!=$Nbre_Col)return false; //Les colonnes des lignes du tableau
- }
- return true;
- }
-
- function Place_cond_SQL($Source,$Tbl_insert=array(),$Filtre_insecable="")
- {/*Place_cond_SQL permet d'ajouter ou de remplacer les conditions de filtre existant sur une requête SQL
- tout en concervant les paramètres de tri initiaux.
- $Tbl_insert est un tableau dont la structure est :
- [x][0] : Nom du champ sur lequel s'opère le filtre
- [x][1] : Valeur à appliquer au filtre
- [x][2] : Caractère déterminant le type de valeur ' pour String et Date
- [x][3] : Liaison avec le critère précédent. Si vide, il sera mis par défaut AND
-
- $Filtre_insecable sera toujours interprêté comme une liaison AND même s'il commence par AND ou OR.
-
- Règle des liaisons entre le champ n et le champ n+1 :
-
- Liaison n = AND et Liaison n+1= AND => La laison sera champ n AND champ n+1
- Liaison n = OR et Liaison n+1= AND => La laison sera champ n AND champ n+1
- Liaison n = OR et Liaison n+1= OR => La laison sera champ n OR champ n+1
- Liaison n = AND et Liaison n+1= OR => La laison sera champ n OR champ n+1
-
- On extrait tout sauf les conditions de filtre
- Au pire, une requête peut avoir la nomenclature suivante
- [...]WHERE[...]GROUP BY[...]HAVING[...]ORDER BY[...]*/
-
- if(sizeof($Tbl_insert)>0) if(!Verif_Interg_Tbl($Tbl_insert,4)) die('Le tableau d\'insertion de critères n\' a pas 4 colonnes partout !<br>Veuillez vérifier la deuxième dimension []<b><u>[]</u></b>');
-
- $Pds_Mot=0;
- $Pos_Mot_cle[0] = preg_match_all("~[[:space:]]+WHERE[[:space:]]+~i",$Source,$Occurrences[0])==0 ? 0: stripos($Source,"WHERE");
- $Pos_Mot_cle[1] = preg_match_all("~[[:space:]]+GROUP[[:space:]]+BY[[:space:]]+~i",$Source,$Occurrences[1])==0 ? 0: stripos($Source,"GROUP");
- $Pos_Mot_cle[2] = preg_match_all("~[[:space:]]+HAVING[[:space:]]+~i",$Source,$Occurrences[2])==0 ? 0: stripos($Source,"HAVING");
- $Pos_Mot_cle[3] = preg_match_all("~[[:space:]]+ORDER[[:space:]]+BY[[:space:]]+~i",$Source,$Occurrences[3])==0 ? 0: stripos($Source,"ORDER");
-
- //On vérifie qu'il n'y a pas plusieurs occurrences pour un même mot clé
- $Nbre_Occ=sizeof($Occurrences[0][0]);
- if($Nbre_Occ>1)die("Il y a ".$Nbre_Occ." WHERE dans votre SQL !");
-
- $Nbre_Occ=sizeof($Occurrences[1][0]);
- if($Nbre_Occ>1)die("Il y a ".$Nbre_Occ." GROUP BY dans votre SQL !");
-
- $Nbre_Occ=sizeof($Occurrences[2][0]);
- if($Nbre_Occ>1)die("Il y a ".$Nbre_Occ." HAVING dans votre SQL !");
-
- $Nbre_Occ=sizeof($Occurrences[3][0]);
- if($Nbre_Occ>1)die("Il y a ".$Nbre_Occ." ORDER BY dans votre SQL !");
-
- //On détermine quels mots clés sont présents
- for($a=0;$a<4;$a++)
- {
- if($Pos_Mot_cle[$a]>0)
- {
- switch($a)
- {
- case 0:
- $Pds_Mot+=3;
- break;
-
- case 1:
- $Pds_Mot+=7;
- break;
- case 2:
- $Pds_Mot+=9;
- break;
- case 3:
- $Pds_Mot+=11;
- break;
- }
- }
- }
- /*En fonction des cas, on élabore le SQL
- $SQL[0] est le début du SQL avant tout mot clé de tri
- $SQL[1] contient tout le SQL de filtrage
- $SQL[2] pour placer le GROUP BY
- $SQL[3] pour placer le ORDER*/
- $SQL[0] = ''; $SQL[2] = ''; $SQL[3] = '';
-
- if(preg_match("~^[[:space:]]*(AND|OR)[[:space:]]+~i",$Filtre_insecable)) $Filtre_insecable=preg_replace("~^[[:space:]]*(AND|OR)[[:space:]]+~i",'',$Filtre_insecable);
-
- switch($Pds_Mot)
- {
- case 0: //Aucun mot clé
- $SQL[0][0]=$Source;
- break;
- case 3: //WHERE
- case 10: //WHERE+GROUP
- case 12: //WHERE+HAVING
- case 14: //WHERE+ORDER
- case 19: //WHERE+GROUP+HAVING
- case 21: //WHERE+GROUP+ORDER
- case 23: //WHERE+HAVING+ORDER
- case 30: //WHERE+GROUP+HAVING+ORDER
- preg_match("~.+WHERE~is",$Source,$SQL[0]);
- $SQL[0][0]=substr($SQL[0][0],0,strlen($SQL[0][0])-5).' ';
- break;
- case 7: //GROUP
- case 16: //GROUP+HAVING
- case 18: //GROUP+ORDER
- case 27: //GROUP+HAVING+ORDER
- preg_match("~.+GROUP([[:space:]]+)BY~is",$Source,$SQL[0]);
- $SQL[0][0]=substr($SQL[0][0],0,strlen($SQL[0][0])-7-strlen($SQL[0][1])).' ';
- break;
- case 9: //HAVING
- case 20: //HAVING+ORDER
- preg_match("~.+HAVING~is",$Source,$SQL[0]);
- $SQL[0][0]=substr($SQL[0][0],0,strlen($SQL[0][0])-6).' ';
- break;
- case 11: //ORDER
- preg_match("~.ORDER+([[:space:]]+)BY~is",$Source,$SQL[0]);
- $SQL[0][0]=substr($SQL[0][0],0,strlen($SQL[0][0])-7-strlen($SQL[0][1])).' ';
- }
-
- switch($Pds_Mot)
- {
- case 7:
- case 10:
- preg_match("~GROUP.+~is",$Source,$SQL[2]);
- $SQL[2][0].=' ';
- break;
- case 16:
- case 19:
- case 27:
- case 30:
- preg_match("~GROUP.+HAVING~is",$Source,$SQL[2]);
- $SQL[2][0]=substr($SQL[2][0],0,strlen($SQL[2][0])-6).' ';
- break;
- case 18:
- case 21:
- preg_match("~GROUP.+ORDER~is",$Source,$SQL[2]);
- $SQL[2][0]=substr($SQL[2][0],0,strlen($SQL[2][0])-5).' ';
- break;
- }
-
- switch($Pds_Mot)
- {
- case 9:
- case 10:
- case 11:
- case 14:
- case 18:
- case 20:
- case 21:
- case 23:
- case 27:
- case 30:
- preg_match("~ORDER.+~is",$Source,$SQL[3]);
- break;
- }
- $SQL[0][0] .= ' WHERE ';
- //On génère les critères de filtrage
- Foreach($Tbl_insert as $Cle => $Valeur)
- {
- $Liaison=strlen($Tbl_insert[$Cle][3])==0 |(trim(strtoupper($Tbl_insert[$Cle][3]))!='AND' & trim(strtoupper($Tbl_insert[$Cle][3]))!='OR') ? 'AND':trim($Tbl_insert[$Cle][3]);
- if(strlen($Tbl_insert[$Cle][1])>0) $SQL[1] .= ' '.$Liaison.' '.$Tbl_insert[$Cle][0].'='.$Tbl_insert[$Cle][2].addslashes($Tbl_insert[$Cle][1]).$Tbl_insert[$Cle][2].' '.$Liaison.' ';
- }
- //On enlève tout le superflus
- If(strlen($SQL[1])>0)
- {
- $SQL[1]=preg_replace("~(AND|OR)[[:space:]]+AND~i","AND",$SQL[1]);
- $SQL[1]=preg_replace("~(AND|OR)[[:space:]]+OR~i","OR",$SQL[1]);
- }
- //On rajoute les critères à ne pas supprimer
- $SQL[1] .= $Filtre_insecable;
- //On enlève l'éventuel AND ou OR de fin s'il n'y a pas de filtre insécable
- $SQL[1]=trim($SQL[1]);
- $SQL[1]=preg_replace("~[[:space:]]+(AND|OR)$~i","",$SQL[1]);
- //S'il aucune condition n'est appliquée, on enlève le WHERE mis par défaut précédemment.
- $Check_WHERE=strtoupper(rtrim($SQL[0][0]));
- if(substr($Check_WHERE,-5)=='WHERE' & strlen($SQL[1])==0) $SQL[0][0]=substr($Check_WHERE,0,strlen($Check_WHERE)-5);
- $SQL[0][0]=$SQL[0][0].$SQL[1].' '.$SQL[2][0].$SQL[3][0];
- $SQL[0][0]=preg_replace("~WHERE[[:space:]]+(AND|OR)[[:space:]]+~i","WHERE ",$SQL[0][0]);
-
- //On renvoie le tout
- return $SQL[0][0];
- }
- ?>
<?php
function Verif_Interg_Tbl(&$Tbl,$Nbre_Col=0,$Nbre_Lignes=0)
{
//Cette fonction vérifie que le nombre de colonnes et/ou de lignes attendues dans un tableau sont bien là
$Lignes=sizeof($Tbl);
if($Nbre_Lignes>0 & $Lignes!=$Nbre_Lignes) return false;//Les colonnes
foreach($Tbl as $Colonne)
{
if($Nbre_Col>0 & sizeof($Colonne)!=$Nbre_Col)return false; //Les colonnes des lignes du tableau
}
return true;
}
function Place_cond_SQL($Source,$Tbl_insert=array(),$Filtre_insecable="")
{/*Place_cond_SQL permet d'ajouter ou de remplacer les conditions de filtre existant sur une requête SQL
tout en concervant les paramètres de tri initiaux.
$Tbl_insert est un tableau dont la structure est :
[x][0] : Nom du champ sur lequel s'opère le filtre
[x][1] : Valeur à appliquer au filtre
[x][2] : Caractère déterminant le type de valeur ' pour String et Date
[x][3] : Liaison avec le critère précédent. Si vide, il sera mis par défaut AND
$Filtre_insecable sera toujours interprêté comme une liaison AND même s'il commence par AND ou OR.
Règle des liaisons entre le champ n et le champ n+1 :
Liaison n = AND et Liaison n+1= AND => La laison sera champ n AND champ n+1
Liaison n = OR et Liaison n+1= AND => La laison sera champ n AND champ n+1
Liaison n = OR et Liaison n+1= OR => La laison sera champ n OR champ n+1
Liaison n = AND et Liaison n+1= OR => La laison sera champ n OR champ n+1
On extrait tout sauf les conditions de filtre
Au pire, une requête peut avoir la nomenclature suivante
[...]WHERE[...]GROUP BY[...]HAVING[...]ORDER BY[...]*/
if(sizeof($Tbl_insert)>0) if(!Verif_Interg_Tbl($Tbl_insert,4)) die('Le tableau d\'insertion de critères n\' a pas 4 colonnes partout !<br>Veuillez vérifier la deuxième dimension []<b><u>[]</u></b>');
$Pds_Mot=0;
$Pos_Mot_cle[0] = preg_match_all("~[[:space:]]+WHERE[[:space:]]+~i",$Source,$Occurrences[0])==0 ? 0: stripos($Source,"WHERE");
$Pos_Mot_cle[1] = preg_match_all("~[[:space:]]+GROUP[[:space:]]+BY[[:space:]]+~i",$Source,$Occurrences[1])==0 ? 0: stripos($Source,"GROUP");
$Pos_Mot_cle[2] = preg_match_all("~[[:space:]]+HAVING[[:space:]]+~i",$Source,$Occurrences[2])==0 ? 0: stripos($Source,"HAVING");
$Pos_Mot_cle[3] = preg_match_all("~[[:space:]]+ORDER[[:space:]]+BY[[:space:]]+~i",$Source,$Occurrences[3])==0 ? 0: stripos($Source,"ORDER");
//On vérifie qu'il n'y a pas plusieurs occurrences pour un même mot clé
$Nbre_Occ=sizeof($Occurrences[0][0]);
if($Nbre_Occ>1)die("Il y a ".$Nbre_Occ." WHERE dans votre SQL !");
$Nbre_Occ=sizeof($Occurrences[1][0]);
if($Nbre_Occ>1)die("Il y a ".$Nbre_Occ." GROUP BY dans votre SQL !");
$Nbre_Occ=sizeof($Occurrences[2][0]);
if($Nbre_Occ>1)die("Il y a ".$Nbre_Occ." HAVING dans votre SQL !");
$Nbre_Occ=sizeof($Occurrences[3][0]);
if($Nbre_Occ>1)die("Il y a ".$Nbre_Occ." ORDER BY dans votre SQL !");
//On détermine quels mots clés sont présents
for($a=0;$a<4;$a++)
{
if($Pos_Mot_cle[$a]>0)
{
switch($a)
{
case 0:
$Pds_Mot+=3;
break;
case 1:
$Pds_Mot+=7;
break;
case 2:
$Pds_Mot+=9;
break;
case 3:
$Pds_Mot+=11;
break;
}
}
}
/*En fonction des cas, on élabore le SQL
$SQL[0] est le début du SQL avant tout mot clé de tri
$SQL[1] contient tout le SQL de filtrage
$SQL[2] pour placer le GROUP BY
$SQL[3] pour placer le ORDER*/
$SQL[0] = ''; $SQL[2] = ''; $SQL[3] = '';
if(preg_match("~^[[:space:]]*(AND|OR)[[:space:]]+~i",$Filtre_insecable)) $Filtre_insecable=preg_replace("~^[[:space:]]*(AND|OR)[[:space:]]+~i",'',$Filtre_insecable);
switch($Pds_Mot)
{
case 0: //Aucun mot clé
$SQL[0][0]=$Source;
break;
case 3: //WHERE
case 10: //WHERE+GROUP
case 12: //WHERE+HAVING
case 14: //WHERE+ORDER
case 19: //WHERE+GROUP+HAVING
case 21: //WHERE+GROUP+ORDER
case 23: //WHERE+HAVING+ORDER
case 30: //WHERE+GROUP+HAVING+ORDER
preg_match("~.+WHERE~is",$Source,$SQL[0]);
$SQL[0][0]=substr($SQL[0][0],0,strlen($SQL[0][0])-5).' ';
break;
case 7: //GROUP
case 16: //GROUP+HAVING
case 18: //GROUP+ORDER
case 27: //GROUP+HAVING+ORDER
preg_match("~.+GROUP([[:space:]]+)BY~is",$Source,$SQL[0]);
$SQL[0][0]=substr($SQL[0][0],0,strlen($SQL[0][0])-7-strlen($SQL[0][1])).' ';
break;
case 9: //HAVING
case 20: //HAVING+ORDER
preg_match("~.+HAVING~is",$Source,$SQL[0]);
$SQL[0][0]=substr($SQL[0][0],0,strlen($SQL[0][0])-6).' ';
break;
case 11: //ORDER
preg_match("~.ORDER+([[:space:]]+)BY~is",$Source,$SQL[0]);
$SQL[0][0]=substr($SQL[0][0],0,strlen($SQL[0][0])-7-strlen($SQL[0][1])).' ';
}
switch($Pds_Mot)
{
case 7:
case 10:
preg_match("~GROUP.+~is",$Source,$SQL[2]);
$SQL[2][0].=' ';
break;
case 16:
case 19:
case 27:
case 30:
preg_match("~GROUP.+HAVING~is",$Source,$SQL[2]);
$SQL[2][0]=substr($SQL[2][0],0,strlen($SQL[2][0])-6).' ';
break;
case 18:
case 21:
preg_match("~GROUP.+ORDER~is",$Source,$SQL[2]);
$SQL[2][0]=substr($SQL[2][0],0,strlen($SQL[2][0])-5).' ';
break;
}
switch($Pds_Mot)
{
case 9:
case 10:
case 11:
case 14:
case 18:
case 20:
case 21:
case 23:
case 27:
case 30:
preg_match("~ORDER.+~is",$Source,$SQL[3]);
break;
}
$SQL[0][0] .= ' WHERE ';
//On génère les critères de filtrage
Foreach($Tbl_insert as $Cle => $Valeur)
{
$Liaison=strlen($Tbl_insert[$Cle][3])==0 |(trim(strtoupper($Tbl_insert[$Cle][3]))!='AND' & trim(strtoupper($Tbl_insert[$Cle][3]))!='OR') ? 'AND':trim($Tbl_insert[$Cle][3]);
if(strlen($Tbl_insert[$Cle][1])>0) $SQL[1] .= ' '.$Liaison.' '.$Tbl_insert[$Cle][0].'='.$Tbl_insert[$Cle][2].addslashes($Tbl_insert[$Cle][1]).$Tbl_insert[$Cle][2].' '.$Liaison.' ';
}
//On enlève tout le superflus
If(strlen($SQL[1])>0)
{
$SQL[1]=preg_replace("~(AND|OR)[[:space:]]+AND~i","AND",$SQL[1]);
$SQL[1]=preg_replace("~(AND|OR)[[:space:]]+OR~i","OR",$SQL[1]);
}
//On rajoute les critères à ne pas supprimer
$SQL[1] .= $Filtre_insecable;
//On enlève l'éventuel AND ou OR de fin s'il n'y a pas de filtre insécable
$SQL[1]=trim($SQL[1]);
$SQL[1]=preg_replace("~[[:space:]]+(AND|OR)$~i","",$SQL[1]);
//S'il aucune condition n'est appliquée, on enlève le WHERE mis par défaut précédemment.
$Check_WHERE=strtoupper(rtrim($SQL[0][0]));
if(substr($Check_WHERE,-5)=='WHERE' & strlen($SQL[1])==0) $SQL[0][0]=substr($Check_WHERE,0,strlen($Check_WHERE)-5);
$SQL[0][0]=$SQL[0][0].$SQL[1].' '.$SQL[2][0].$SQL[3][0];
$SQL[0][0]=preg_replace("~WHERE[[:space:]]+(AND|OR)[[:space:]]+~i","WHERE ",$SQL[0][0]);
//On renvoie le tout
return $SQL[0][0];
}
?>
Conclusion
Cette fonction est utilisée, entre autre sur la page http://www.vipere.lekod.com/Francais/Stats.php
Historique
- 02 mars 2008 15:01:37 :
- Optimisation du code
- 03 mars 2008 06:10:59 :
- Débugage de la ligne 154 et des PCRE qui n'étaient pas tous avec l'option i.
- 04 mars 2008 06:43:35 :
- Débugage pour que tous les test sur la chaîne SQL soient insensible à la casse.
- Changement des strpos en stripos pour la détermination de la position des mots-clés
- Mise en majuscules de $Check_WHERE
- 04 mars 2008 06:46:50 :
- Débugage pour que tous les tests sur $Source soient insensibles à la casse.
- Changement des strpos en stripos
- Mise en majuscules de $Check_WHERE
- 04 mars 2008 06:55:36 :
- Débugage, pas assez de caféïne dans le sang
- strtolower est remplacé par strtoupper.
Pardon
- 05 mars 2008 06:15:03 :
- Pour la récupération des tronçons de SQL servant à alimenter le tableau $SQL, activation de l'option "s" dans les PCRE des lignes 103 à 171 afin que l'extraction des parties SQL se fasse lorsque $Source s'étale sur plusieurs lignes.
- 13 mars 2008 09:14:19 :
- Implémentation de la version 2
- Vérification de l'intégrité du tableau passé en paramètre
- Possibilité de choisir AND ou OR comme critère de condition
- Gestion des apostrophes pour les valeurs String
- 13 mars 2008 09:15:44 :
- Voir ci-dessus
- 20 mars 2008 05:46:09 :
- Débugage de la ligne 175 pour tenir compte d'un OR final.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
requête sql [ par eax ]
j'ai un tout petit pbquand je faisselect * from `blabla` where `pouet`=NULLça marche pas je veux juste récupérer mes données pour pouet nulsi qqun con
requête sql [ par yeble ]
je débute en base de données, j'essaie de reproduire votre exemple de site marchand pour comprendre le fonctionnement.j'ai crée 2 tables (articles, ma
Requête sur AS400 [ par Bruto ]
Bonjour,j'essaye de lancer une connection sur un as400 et lancer une requête. J'arrive à me connecter à l'as400 via odbc ( via driver client access )
Requête SQL [ par lagombe ]
Bonjour à tous,voilà, j'ai une requête SQL qui me renvoie 5 lignes quand je l'éxécute avec phpmyadmin puis lorsque je l'utilise dans du code php (avec
affichage requête SQL dans pseudo frame php [ par titsuisse ]
Bonjour, J'ai une petite question. J'ai construit mon site en le divisant comme un tableau. Au centre de ce tableau se trouve une page avec un includ
help requête SQL [ par hargyll ]
Bonsoir j'ai un problème sur une requête SQL que je n'arrive pas à résoudre :(Je m'explique, j'aimerais faire une recherche dans u
Requête et date, à l'aide !!! [ par Splite ]
BonjourVoilà je voudrais executé cette requête SQL sur ma BDD, mais ca ne fonctionne pas, est ce que vous auriez une petite idée, merci $sql_delete =
Pb syntax php mysql+systèmes fichiers [ par XFLR6 ]
hellodsl pour ce titre un peu bizarre, mais je savais pas quoi mettre d'autre pour qualifier mon problème ...alors voila ;je V vous montrer un bout du
Requête SQL [ par nino69 ]
Il y a une erreur de syntaxe sur la requête ci dessous:"SELECT jet_chantier.'".$_POST['clients']."FROM jet_chantier WHERE jet_chantier.titre_lien
Problème requête MySQL [ par albator77 ]
Bonjour,Je débute en PHP, et j'ai un problème :Si je fais la requête suivante, il n'y a pas de problème :$result_sql = mysql_query
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
SYSTEME D'AMISYSTEME D'AMI par moza2409
Cliquez pour lire la suite par moza2409
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|