19:4923062007
Les requêtes SQL insert, update et delete avec Dotclear 2
Par Moe - Site / Dév
Il est recommandé de lire d'abord le billet précédent pour comprendre ce billet.
Insérer un enregistrement
Admettons qu'on ait créé une table $core->prefix.'test' qui contient 3 colonnes :
idest un id unique et incrémentaldtest un datetimerandest un entier
function insert() { global $core; $cur = $core->con->openCursor($core->prefix.'test'); $cur->dt = date("Y-m-d H:i:s"); $cur->rand = rand(5,15); $cur->insert(); }
Explications :
$cur = $core->con->openCursor($core->prefix.'test');
$cur est un curseur qui sélectionne la table sur laquelle on va agir.
$cur->dt = date("Y-m-d H:i:s"); $cur->rand = rand(5,15);
On donne des valeurs pour les colonnes :
dtest le datetime actuelrandest un entier aléatoire compris entre 5 et 15
$cur->insert();
On insère les données dans la table. C'est fini !
Mettre à jour un enregistrement
On va mettre à jour notre enregistrement créé précédemment en modifiant la valeur rand de l'enregistrement ayant l'id 42.
function update() { global $core; $cur = $core->con->openCursor($core->prefix.'test'); $cur->rand = 30; $cur->update('WHERE (`id` = 42) LIMIT 1;'); }
Explications :
$cur = $core->con->openCursor($core->prefix.'test');
$cur est un curseur.
$cur->rand = 30;
On donne la valeur 30 à rand.
$cur->update('WHERE (`id` = 42) LIMIT 1;');
On met à jour l'enregistrement avec l'id 42.
Notre enregistrement a été mis à jour.
Effacer un enregistrement
On va effacer notre enregistrement avec l'id 42.
function delete() { global $core; $query = 'DELETE FROM '.$core->prefix.'test WHERE (`id` = 42) LIMIT 1;'; $core->con->execute($query); }
On éxécute la requête qui efface l'enregistrement avec l'id 42.
Commentaires
aidez moi svp en php je veux devenir pro
Je ne donne pas de cours de PHP. Bon courage! :)
Je trouve bizarre de passer par le curseur pour l'insert et l'update mais pas pour le delete est ce que $cur->execute ne s'inscrirait pas dans la continuité du cours?
De plus, en ce qui me concerne (avec la nouvelle version de dotclear 2) les membres update et insert n'ont plus l'air de fonctionner (et dans la doc de l'api ils n'y figurent pas)
http://doc.dotclear.net/2.0/api/cla...
@Bhaa Dhrymm : Bhaa Dhrymm : à ma connaissance on ne peut pas passer par un curseur pour effacer un enregistrement, si tu as plus d'informations je suis preneur.
Les fonctions insert() et update() sont définies dans
/dotclear/inc/clearbricks/dblayer/class.cursor.phpmais bizarrement cette classe n'apparaît pas dans la doc.Oui en effet autant (au temps?) pour moi.
j'étais passé sur ce blog car j'étais justement à la recherche d'informations complémentaires (écumant la documentation, et y trouvant énormément de "blanc" ou contradictions avec ce que je peut lire parfois ailleurs).
J'essayais de comprendre ce que tu disait, car trouvant bizarre cette histoire de curseur... mon commentaire précédent n'était donc pas une affirmation, mais plutôt une tentative de comprendre
@Bhaa Dhrymm : cette documentation se base sur ce que j'ai pu lire dans les forums Dotclear (voir le lien dans le billet d'introduction) et sur l'étude du code de Dotclear. Je n'ai fait qu'expliquer ce qu'on peut trouver dans tout le code de Dotclear et dans les plugins. Tu as essayé d'utiliser ces fonctions avec Dotclear 2.0 et tu as rencontré un problème ?
Oui j'avais rencontrer un probleme, mais rien de grave, juste moi qui avait mal lu la notice (confusion entre core et blog)
J'ai avancé coté requete avec la base de données, je n'en suis plus là, je m'excuse donc pour ma remarque qui n'était que le fruit d'un cerveau embrumé par les nuits blanches, la caféine et la difficulté de trouver des infos sur dotclear 2 ^^