Bonjour à toutes et à tous.
Excusez-moi si ce n'est pas le bon sous-forum.
J'ai besoin de renseignements pour bien comprendre le fonctionnement de Mysql. Je travaille en local sur Wordpress car l'hébergeur ne peux (veux?) pas activer l'envent scheduler sur un serveur mutualisé. Wordpress et Mysql ont été installé avec WAMP.
Pour un site de club d'athlétisme j'ai souhaité intégrer un certain nombre de publicités émanant de la Fédération Française d'athlétisme. J'ai voulu changer l'affichage de ces publicités de manière cyclique toutes les cinq minutes. En production ce sera moins souvent, de l'ordre d'une à deux fois par jour. J'ai créé une fonction appelée pubffa que voici, j'ai supprimé les préfixes des tables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BEGIN
    DECLARE id,id_min,id_max,id_sel INT;
    SET id_min = (SELECT MIN(bnd_id) FROM t_e_bandeauffa_bnd);
    SET id_max = (SELECT MAX(bnd_id) FROM t_e_bandeauffa_bnd);
    SET id_sel = (SELECT bnd_id FROM t_e_bandeauffa_bnd WHERE bnd_selection = 1);
    IF id_sel < id_max THEN SET id = id_sel + 1;
    ELSEIF id_sel = id_max THEN SET id = id_min;
    END IF;
    WHILE (SELECT bnd_selectionnable FROM t_e_bandeauffa_bnd WHERE bnd_id = id) = 0
    	DO SET id = id + 1;
        IF id > id_max THEN SET id = id_min;
        END IF;
    END WHILE;
    RETURN id;
END
J'ai ensuite créé un évènement, pour changer la publicité, essai_pubffa :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
BEGIN
	SET @id = pubffa();
        UPDATE t_e_bandeauffa_bnd SET bnd_selection = 0 WHERE bnd_selection = 1;
	UPDATE t_e_bandeauffa_bnd SET bnd_selection = 1 WHERE bnd_id = @id;
END
Un croix rouge persiste en face du END. Malgré cela, tout fonctionne correctement avec ou sans accès à la base de donnée par phpmyadmin. La base de données serait-elle active continuellement, dès le démarrage de l'ordinateur? Comment le savoir?
Merci anticipé pour vos réponses, Michel.