Vous n'êtes pas identifié.
Annonce
Mettez-vous à jour ! WordPress 3.3.1 est disponible en français.
Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite recherche et de lire les règles de ce forum.
Annonce 3 : Lisez notre blog, il regorge de bonnes informations.
Annonce 4 : Rejoignez-nous sur Facebook, Google + et sur Twitter
#1 29-06-2006 11:56:30
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Plug-in paroles de chansons
Alors là je tape certainement dans un domaine inexistant, mais je recherche un plug-in qui permettrait d'ajouter une gestion de paroles de chansons.
On y retrouverait une gestion par auteur, éventuellement par thème abordé. On pourrait y mettre donc les paroles du chant, éventuellement les accords.
Vous connaissez quelque chose de ce genre ?
Hors ligne
#2 29-06-2006 12:29:25
Re: Plug-in paroles de chansons
Salut,
En recherchant sur http://wp-plugins.net, je trouve ça avec comme mot clé "Lyrics" !
Mais pas tout à fait ce que tu demandes !
Vis comme si tu devais mourir demain, apprends comme si tu devais vivre toujours !!! - M. Gandhi
Portail Web - Le jeu des 1001 photos - Blog - Zooomr
Hors ligne
#3 29-06-2006 12:37:06
- Qwindoo
- Admin
- Lieu: Lyon (69)
- Date d'inscription: 03-06-2006
- Messages: 3147
Re: Plug-in paroles de chansons
Pfffffiouuu ta demande est tellement spécifique que ça m'étonnerait beaucoup qu'un tel plugin existe 
Par contre, tu peux essayer de le coder toi-même, ça ne doit pas être excessivement compliqué :
Code: html
Plugin : SongManager v1.0
MySQL : sm_lyrics
id INT (5) auto_increment index
author INT (5)
lyrics TEXT
sm_authors
id INT (5) auto_increment index
name VARCHAR (50)
firstname VARCHAR (50)
sex ENUM ('M', 'F')
age INT (3)
songs INT (4)
...
Tiens rien qu'en écrivant la structure des tables j'ai envie de le faire moi-même 
Hors ligne
#4 29-06-2006 13:55:21
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
Oo Bubu a écrit:
Salut,
En recherchant sur http://wp-plugins.net, je trouve ça avec comme mot clé "Lyrics" !
Mais pas tout à fait ce que tu demandes !
Oui j'avais déjà recherché sur ce site, et effectivement ça ne correspond pas, mais merci de ta participation lol

Nan sans dec', merci d'avoir cherché 
Hors ligne
#5 29-06-2006 13:56:45
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
MS-DOS_1991 a écrit:
Pfffffiouuu ta demande est tellement spécifique que ça m'étonnerait beaucoup qu'un tel plugin existe
Par contre, tu peux essayer de le coder toi-même, ça ne doit pas être excessivement compliqué :Code: html
Plugin : SongManager v1.0 MySQL : sm_lyrics id INT (5) auto_increment index author INT (5) lyrics TEXT sm_authors id INT (5) auto_increment index name VARCHAR (50) firstname VARCHAR (50) sex ENUM ('M', 'F') age INT (3) songs INT (4) ...Tiens rien qu'en écrivant la structure des tables j'ai envie de le faire moi-même
Le soucis, c'est que je n'y connais rien 
Mais si t'as envie de le faire, fais-toi plaisir hein

Hors ligne
#6 29-06-2006 14:01:25
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
Tenez, un exemple de ce que je souhaite faire en moins complexe certes :
pwarchive.com
Si je bosse dessus, quelqu'un peut me filer un coup de main ?
Hors ligne
#7 29-06-2006 14:03:25
- Qwindoo
- Admin
- Lieu: Lyon (69)
- Date d'inscription: 03-06-2006
- Messages: 3147
Re: Plug-in paroles de chansons
steph2dijon a écrit:
Tenez, un exemple de ce que je souhaite faire en moins complexe certes :
pwarchive.com
Si je bosse dessus, quelqu'un peut me filer un coup de main ?
Of course 

Hors ligne
#8 29-06-2006 14:12:38
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
MS-DOS_1991 a écrit:
steph2dijon a écrit:
Tenez, un exemple de ce que je souhaite faire en moins complexe certes :
pwarchive.com
Si je bosse dessus, quelqu'un peut me filer un coup de main ?Of course
Ok, alors je vais allez lire de la doc pour voir comment on créé un plug-in, commençons par le commencement 
Hors ligne
#9 29-06-2006 15:40:28
- Qwindoo
- Admin
- Lieu: Lyon (69)
- Date d'inscription: 03-06-2006
- Messages: 3147
Re: Plug-in paroles de chansons
J'ai déjà commencé à écrire ce plugin et je m'amuse comme un fou 
Pourrais-tu me faire une liste de ce que tu attends exactement de ce plugin ?
edit: SongManager, ça sonne bien non ? 
Dernière modification par MS-DOS_1991 (29-06-2006 15:40:58)
Hors ligne
#10 29-06-2006 15:43:41
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
Alors, on va commencer par faire la liste de ce que doit faire le plugin (que l'on appelera SongManager, selon la bonne idée de MS-DOS_1991) :
- Regrouper les informations sur chaque chant :
->Titre
->Titre Original
->Paroles
->Clé (Tonalité du chant)
->Auteur (possibilité d'avoir parfois plusieurs auteurs ...)
->Information de Copyright
->N°CCLI (un code numérique pour aider à retrouver les chants)
->Interprète
- Une recherche sur les champs Titre, Titre Original, Paroles, Auteur, Interprète, CCLI devra être possible via une checkbox (ajoutée dans la sidebar uniquement quand on sera dans la catégorie "Chants").
- Possibilité d'imprimer le chant en PDF (le plug-in existe déjà).
Ce qu'il faut faire :
- Créer un script qui créé les tables dans la BDD WP.
- Créer une nouvelle catégorie que l'on appelera "Chants" par exemple.
- Créer un affichage particulier pour cette catégorie (Zone de recherche dans la Sidebar, dans le content, seuls les titres apparaitront, pas les paroles, les chants devront être classés par titre.)
- Pour l'affichage d'un chant, on devra retrouver les différentes infos du chant. Ex :
What The World Will Never Take (titre)
Marty Sampson, Matt Crocker, Scott Ligertwood (auteurs)
Tonalité: A
Verse 1:
A
With all I'm holding inside
D
With all my hopes and desires
D
And all the dreams that I've dreamt
Verse 2:
A
With all I'm hoping to be
D
And all that the world will bring
Dmaj9
And all that fails to compare
PreChorus:
F#m B5 Dmaj9
You say You want all of me
A B5
I wouldn't have it any other way
Bridge:
A
I've got a Saviour and He's living in me
D F#m Bsus D
Whoa I wanna know I wanna know You today
A
And You're the best thing that has happened to me
F#m
And the world will never take
Bsus D A
The world will never take You away
Other:
F#m F#m(maj7) A B
(repeat)
Ending:
A D A
No one could ever take You away
D A
No one could ever take You away
©2004 Hillsong Publishing (Admin. in U.S. & Canada by Integrity's Hosanna! Music)
All rights reserved. International copyright secured.
CCLI song #4455196
Hors ligne
#11 29-06-2006 15:45:30
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
MS-DOS_1991 a écrit:
J'ai déjà commencé à écrire ce plugin et je m'amuse comme un fou
Pourrais-tu me faire une liste de ce que tu attends exactement de ce plugin ?
edit: SongManager, ça sonne bien non ?
Super, on s'est croisé alors que j'écrivais mon post précédent.
Si tu le fais, dans ce cas, ça m'intéresse 
En fait, je manque de connaissance pour faire tout ça, mais je peux apprendre beaucoup si tu détailles un peu ce que tu fais. Et pour SongManager, c'est top:D
Hors ligne
#12 29-06-2006 15:54:41
- Qwindoo
- Admin
- Lieu: Lyon (69)
- Date d'inscription: 03-06-2006
- Messages: 3147
Re: Plug-in paroles de chansons
Ce sera mon premier plugin, hein 
Mais je suis motivé et ça n'a pas l'air très compliqué (bon, un peu qd même mais pas trop ^^ )
Pour l'instant, voici le code du plugin (tout ce que ça fait est ajouter un menu dans le DashBoard, mais ça te donne une idée) :
Code: html
<?php
/*
Plugin Name: SongManager
Plugin URI: http://www.newbie-project.net/wordpress/plugins/
Description: Allows admin to manage songs and lyrics and users to look for one :-)
Version: 1.0
Author: Thomas G ( MS-DOS_1991 )
Author URI: http://www.newbie-project.net/
*/
class SongManager
{
function init_plugin()
{
add_options_page('Song Manager', 'Song Manager', 1, basename(__FILE__), array($this, 'my_options_subpanel'));
}
function my_options_subpanel()
{
?>
<div class="wrap">
<h2>Song Manager v1.0</h2>
<p>Bienvenue dans mon supaÿrbe plugin de test</p>
</div>
<?php
}
}
$SongManager = new SongManager;
add_action('admin_menu', array(&$SongManager, 'init_plugin'));
?>
* J'ai fait une classe pour éviter les risques de "collisions" (si 2 plugins avaient des fonctions aux noms identiques)
* Dans cette classe, on retrouvera toutes les fonctions futures du plugin
* La première fonction ajoute un menu dans le DashBoard et appelle la deuxième pour remplir la page
* Cette 2ème fonction ne fait qu'ajouter du texte (pour l'instant, hein ^^ )
* Après l'accolade fermante, j'initialise cette classe puis je demande à WordPress de l'intégrer à l'application 
P.S: Pas taper, je viens de m'y mettre ^^
Dernière modification par MS-DOS_1991 (27-01-2007 14:22:51)
Hors ligne
#13 29-06-2006 16:00:15
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
MS-DOS_1991 a écrit:
Ce sera mon premier plugin, hein
(...)
P.S: Pas taper, je viens de m'y mettre ^^
Arf, la vache ... C'est plus compliqué que je ne le pensais à réaliser 
Ben, écoute, je ne peux pas juger, mais ça m'a l'air pas mal et tu as l'air de connaitre les pièges à éviter ... Donc, bravo 
Hors ligne
#14 29-06-2006 16:10:15
- Qwindoo
- Admin
- Lieu: Lyon (69)
- Date d'inscription: 03-06-2006
- Messages: 3147
Re: Plug-in paroles de chansons
steph2dijon a écrit:
Arf, la vache ... C'est plus compliqué que je ne le pensais à réaliser
Ben, écoute, je ne peux pas juger, mais ça m'a l'air pas mal et tu as l'air de connaitre les pièges à éviter ... Donc, bravo
On verra jusqu'où j'irai 
Sinon, pour la structure des tables, pourrais-tu me donner un exemple de CCLI ? C'est quoi, un nombre, une suite de caractères ?
Pour la clé, combien de caractères dois-je prévoir au maximum ?
Hors ligne
#15 29-06-2006 16:22:53
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
MS-DOS_1991 a écrit:
steph2dijon a écrit:
Arf, la vache ... C'est plus compliqué que je ne le pensais à réaliser
Ben, écoute, je ne peux pas juger, mais ça m'a l'air pas mal et tu as l'air de connaitre les pièges à éviter ... Donc, bravoOn verra jusqu'où j'irai
Sinon, pour la structure des tables, pourrais-tu me donner un exemple de CCLI ? C'est quoi, un nombre, une suite de caractères ?
Pour la clé, combien de caractères dois-je prévoir au maximum ?
Alors, pour le CCLI, c'est comme sur l'exemple plus haut : CCLI song #4455196 Donc on ne garde que le code à chiffre.
Pour la clé, disons ... 7 caractères maxi. Ca donnera qque chose du genre : G#m7 ou Sol#m7
Voilà voilà 
Merci mille fois
Hors ligne
#16 29-06-2006 20:16:47
- Qwindoo
- Admin
- Lieu: Lyon (69)
- Date d'inscription: 03-06-2006
- Messages: 3147
Re: Plug-in paroles de chansons
Désolé de n'avoir pu poster plus tôt mais mon frère faisait un pestacle avec son école 
Voilà où j'en suis pour le moment : capture 
Dernière modification par MS-DOS_1991 (27-01-2007 14:32:45)
Hors ligne
#17 29-06-2006 22:11:29
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
MS-DOS_1991 a écrit:
Désolé de n'avoir pu poster plus tôt mais mon frère faisait un pestacle avec son école
Voilà où j'en suis pour le moment : capture
Woooo !!! Attends, tu veux dire qu'il y a déjà la BDD et tout et tout ?
Sinon, un truc, la recherche n'est pas obligatoire dans l'interface du plugin, elle le sera surtout dans la sidebar en fait ...
Mais bon c'est super 
Hors ligne
#18 29-06-2006 22:14:09
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
steph2dijon a écrit:
MS-DOS_1991 a écrit:
Désolé de n'avoir pu poster plus tôt mais mon frère faisait un pestacle avec son école
Voilà où j'en suis pour le moment : captureWoooo !!! Attends, tu veux dire qu'il y a déjà la BDD et tout et tout ?
Sinon, un truc, la recherche n'est pas obligatoire dans l'interface du plugin, elle le sera surtout dans la sidebar en fait ...
Mais bon c'est super
Ah oui, un autre truc, les infos de copyright peuvent tenir sur plusieurs lignes ...
Pour les auteurs, je sais pas si c'est possible, mais un truc qui serait sympa pour le multi-auteurs, c'est prendre un auteur dans la liste déroulante, cliquer sur un bouton à côté et ça l'ajoute à une liste à côté. Comme ça, on peut en mettre plusieurs. Tu vois ce que je veux dire ? Enfin je sais pas si c'est possible.
Hors ligne
#19 30-06-2006 09:45:50
- Qwindoo
- Admin
- Lieu: Lyon (69)
- Date d'inscription: 03-06-2006
- Messages: 3147
Re: Plug-in paroles de chansons
steph2dijon a écrit:
Woooo !!! Attends, tu veux dire qu'il y a déjà la BDD et tout et tout ?
Sinon, un truc, la recherche n'est pas obligatoire dans l'interface du plugin, elle le sera surtout dans la sidebar en fait ...
Voui, il y a déjà la BDD et tout et tout !!

Pour la recherche dans l'interface d'admin, c'est aussi simple que dans la sidebar vu que ce sera une seule et même fonction donc autant faire "classe" et le mettre dans l'admin 
steph2dijon a écrit:
Ah oui, un autre truc, les infos de copyright peuvent tenir sur plusieurs lignes ...
Pour les auteurs, je sais pas si c'est possible, mais un truc qui serait sympa pour le multi-auteurs, c'est prendre un auteur dans la liste déroulante, cliquer sur un bouton à côté et ça l'ajoute à une liste à côté. Comme ça, on peut en mettre plusieurs. Tu vois ce que je veux dire ? Enfin je sais pas si c'est possible.
Pour le copyright, pas de problème : je vais juste devoir transformer mon VARCHAR (255) en TEXT 
Pour les auteurs, c'est exactement ce à quoi j'ai pensé hier soir avant de m'endormir 
JavaScript (DOM) powered 
Hors ligne
#20 30-06-2006 09:57:13
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
MS-DOS_1991 a écrit:
Pour le copyright, pas de problème : je vais juste devoir transformer mon VARCHAR (255) en TEXT
Pour les auteurs, c'est exactement ce à quoi j'ai pensé hier soir avant de m'endormir
JavaScript (DOM) powered
Waaah ! T'es génial, je te remercie vraiment, t'es en train de me filer un super-méga-coup-de-main ! Par contre, j'analyserai bien le code du plug-in, je pourrai certainement apprendre des choses.
Bon, en tout cas, la capture d'écran donne trop envie de l'essayer lol 
Si j'arrive à comprendre et à apprendre, j'y rajouterai un truc en plus, pour les guitaristes, pianistes, ... Mais ça c'est assez compliqué, et pas réalisable facilement.
Hors ligne
#21 30-06-2006 14:42:32
- Qwindoo
- Admin
- Lieu: Lyon (69)
- Date d'inscription: 03-06-2006
- Messages: 3147
Re: Plug-in paroles de chansons
Salut à tous 
Voilà où j'en suis à présent 
Code: html
<?php
/*
Plugin Name: SongManager
Plugin URI: http://www.newbie-project.net/stuff/wp_plugins.php
Description: Allows admin to manage songs and lyrics
Version: 1.0
Author: Thomas G ( MS-DOS_1991 )
Author URI: http://www.newbie-project.net/
Copyright 2006 Thomas G (email : msdos.1991@gmail.com)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
class SongManager
{
/** Class Constructor **/
function SongManager()
{
global $wpdb;
/** Creating SQL table sm_songs **/
$wpdb->query("CREATE TABLE IF NOT EXISTS `sm_songs`
(
`id` INT ( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`title` VARCHAR( 255 ) NOT NULL ,
`original_title` VARCHAR( 255 ) NOT NULL ,
`authors` VARCHAR( 255 ) NOT NULL ,
`interprets` VARCHAR( 255 ) NOT NULL ,
`lyrics` TEXT NOT NULL ,
`copyright` TEXT NOT NULL ,
`ccli` INT ( 10 ) NOT NULL ,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE = InnoDB COMMENT = 'SongManager > Songs'
");
/** Creating SQL table sm_authors **/
$wpdb->query("CREATE TABLE IF NOT EXISTS `sm_authors`
(
`id` INT ( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR( 50 ) NOT NULL,
`first_name` VARCHAR( 50 ) NOT NULL
) ENGINE = InnoDB COMMENT = 'SongManager > Authors'
");
/** Creating SQL table sm_interprets **/
$wpdb->query("CREATE TABLE IF NOT EXISTS `sm_interprets`
(
`id` INT ( 5 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR( 50 ) NOT NULL,
`first_name` VARCHAR( 50 ) NOT NULL
) ENGINE = InnoDB COMMENT = 'SongManager > Interprets'
");
update_option('is_installed_songmanager', 1);
}
/** Creates option page in the DashBoard (Options > Song manager) **/
function init_plugin()
{
add_options_page('Song Manager', 'Song Manager', 1,
basename(__FILE__), array($this, 'sm_options_subpanel'));
}
/** Displays submenu page in the DashBoard **/
function sm_options_subpanel()
{
global $wpdb;
if (isset($_GET['search']))
{
if ($_GET['search'] == 'title')
$this->searchLyricsFromTitle(trim(htmlentities($_GET['title'])));
elseif ($_GET['search'] == 'original_title')
$this->searchLyricsFromOriginalTitle(trim(htmlentities($_GET['original_title'])));
elseif ($_GET['search'] == 'author')
$this->searchLyricsByAuthor(trim(htmlentities($_GET['author'])));
elseif ($_GET['search'] == 'interprete')
$this->searchLyricsByInterprete(trim(htmlentities($_GET['interprete'])));
elseif ($_GET['search'] == 'ccli')
$this->searchLyricsFromCCLI(trim($_GET['ccli']));
else
die('Erreur inconnue.');
}
elseif (isset($_GET['add']))
{
if ($_GET['add'] == 'song')
{
foreach ($_POST AS $key => $value)
$$key = trim(htmlentities($value));
$wpdb->query("INSERT INTO sm_songs (title, original_title,
authors, interpretes,
lyrics, copyright, ccli)
VALUES ('$title', '$original_title',
'$authors', '$interpretes',
'$lyrics', '$copyright', '$ccli')
");
echo '<script type="text/javascript">alert(\'Ajout Effectué !\');window.location = \'',$_SERVER['PHP_SELF'],'?page=songmanager.php\';</script>';
}
elseif ($_GET['add'] == 'author')
{
if (isset($_POST['first_name']) && isset($_POST['surname']))
{
$this->addAuthor($_POST['first_name'], $_POST['surname']);
echo '<script type="text/javascript">alert(\'Ajout Effectué !\');window.location = \'',$_SERVER['PHP_SELF'],'?page=songmanager.php\';</script>';
}
else
die('Erreur: Veuillez remplir tous les champs.');
}
elseif ($_GET['add'] == 'interpret')
{
if (isset($_POST['first_name']) && isset($_POST['surname']))
{
$this->addInterpret($_POST['first_name'], $_POST['surname']);
echo '<script type="text/javascript">alert(\'Ajout Effectué !\');window.location = \'',$_SERVER['PHP_SELF'],'?page=songmanager.php\';</script>';
}
else
die('Erreur: Veuillez remplir tous les champs.');
}
}
elseif (isset($_GET['del']))
{
if ($_GET['del'] == 'author')
{
if (isset($_POST['author']))
{
$this->deleteAuthor($_POST['author']);
echo '<script type="text/javascript">alert(\'Suppression Effectuée.\');window.location = \'',$_SERVER['PHP_SELF'],'?page=songmanager.php\';</script>';
}
else
die('Erreur: Veuillez sélectionner un auteur à supprimer');
}
elseif ($_GET['del'] == 'interpret')
{
if (isset($_POST['interpret']))
{
$this->deleteInterpret($_POST['interpret']);
echo '<script type="text/javascript">alert(\'Suppression Effectuée.\');window.location = \'',$_SERVER['PHP_SELF'],'?page=songmanager.php\';</script>';
}
else
die('Erreur: Veuillez sélectionner un auteur à supprimer');
}
}
else
{
?>
<script type="text/javascript">
function addAuthor()
{
authors_nb = document.getElementById('addsong_authors_nb').value;
authors_nb++;
if (authors_nb > document.getElementById('addsong_author_1').options.length)
alert('Tous les auteurs ont été utilisés.');
else
{
newSpan = document.createElement('span');
newSelect = document.getElementById('addsong_author_1').cloneNode(true);
newSelect.setAttribute('id', 'addsong_author_'+authors_nb);
newSpan.appendChild(newSelect);
document.getElementById('addsong_p_authors').appendChild(newSpan);
document.getElementById('addsong_authors_nb').value++;
}
}
function updateAuthors(id)
{
// AAAAAAAAAAAAAAAAAAAAAAAARGHHH
}
function delAuthor()
{
authors_nb = document.getElementById('addsong_authors_nb').value;
if (authors_nb == 1)
alert('Impossible de supprimer le dernier auteur !');
else
{
lastauthor = document.getElementById('addsong_p_authors').lastChild;
while (lastauthor.firstChild)
lastauthor.removeChild(lastauthor.firstChild);
document.getElementById('addsong_p_authors').removeChild(lastauthor);
document.getElementById('addsong_authors_nb').value--;
}
}
</script>
<div class="wrap">
<h2>Song Manager v1.0</h2>
<h3>Rechercher des paroles de chansons</h3>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>&search=title" method="post" style="font-family: 'Courier New';">
<p>
<label> Rechercher par titre : <input type="text" name="title" size="50" /></label>
<input type="submit" value="Rechercher" />
</p>
</form>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>&search=original_title" method="post" style="font-family: 'Courier New';">
<p>
<label>Rechercher par titre original : <input type="text" name="original_title" size="50" /></label>
<input type="submit" name="search_original_title" value="Rechercher" />
</p>
</form>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>&search=author" method="post" style="font-family: 'Courier New';">
<p>
<label> Rechercher par auteur : <input type="text" name="author" size="50" /></label>
<input type="submit" value="Rechercher" />
</p>
</form>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>&search=interprete" method="post" style="font-family: 'Courier New';">
<p>
<label> Rechercher par interprète : <input type="text" name="interprete" size="50" /></label>
<input type="submit" value="Rechercher" />
</p>
</form>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>&search=ccli" method="post" style="font-family: 'Courier New';">
<p>
<label> Trouver à partir du <acronym title="Christian Copyright Licensing International">CCLI</acronym> : <input type="text" name="search_ccli" size="10" /></label>
<input type="submit" value="Rechercher" />
</p>
</form>
<h3>Dernières paroles de chanson</h3>
<?php $this->getLastLyrics(); ?>
<h3>Ajouter une chanson</h3>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>&add=song" method="post" style="font-family: 'Courier New';">
<p style="display: none;">
<input type="hidden" id="addsong_authors_nb" value="1" />
<input type="hidden" id="addsong_authors" name="addsong_authors" value="1" />
</p>
<p><label>Titre de la chanson : <input type="text" name="addsong_title" size="50" /></label></p>
<p><label> Titre original : <input type="text" name="addsong_original_title" size="50" /></label></p>
<p id="addsong_p_authors">
Auteur(s) :
<select id="addsong_author_1" onChange="updateAuthors(this.selectedIndex)">
<?php
$sql_authors = $wpdb->get_results("SELECT id, surname, first_name
FROM sm_authors
ORDER BY surname ASC
");
foreach ($sql_authors AS $author)
echo '<option value="',$author->id,'">',$author->first_name,' ',$author->surname,'</option>';
?>
</select>
</p>
<p>
<span id="addsong_span_addauthor"><input type="button" value="Ajouter un Auteur" onClick="addAuthor()" /></span>
<span id="addsong_span_delauthor"><input type="button" value="Supprimer un Auteur" onClick="delAuthor()" /></span>
</p>
<p><label>Paroles (et/ou accords) :<br /><textarea name="addsong_lyrics" style="width: 85%; height: 400px;"></textarea></label></p>
<p><label>Copyright : <input type="text" name="addsong_copyright" size="50" /></label></p>
<p><label> CCLI : <input type="text" name="addsong_ccli" size="10" /></label></p>
<p><input type="submit" name="addsong_submit" value="Soumettre les Paroles" />
</form>
<h3>Nouvel Auteur</h3>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>&add=author" method="post" style="font-family: 'Courier New';">
<p><label>Prénom : <input type="text" name="first_name" size="15" /></label></p>
<p><label> Nom : <input type="text" name="surname" size="15" /></label>
<p><input type="submit" value="Ajouter cet Auteur" /></p>
</form>
<h3>Supprimer un Auteur</h3>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>&del=author" method="post" style="font-family: 'Courier New';">
<p>
<?php
$sql_authors = $wpdb->get_results("SELECT id, surname, first_name
FROM sm_authors
ORDER BY surname ASC
");
if ($sql_authors)
{
?>
<select name="author">
<?php
foreach ($sql_authors AS $author)
echo '<option value="',$author->id,'">',$author->first_name,' ',$author->surname,'</option>';
?>
</select>
<input type="submit" value="Supprimer cet Auteur" />
<?php
}
else
echo 'Aucun auteur à supprimer.';
?>
</p>
</form>
<h3>Nouvel Interprète</h3>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>&add=interpret" method="post" style="font-family: 'Courier New';">
<p><label>Prénom : <input type="text" name="first_name" size="15" /></label></p>
<p><label> Nom : <input type="text" name="surname" size="15" /></label>
<p><input type="submit" value="Ajouter cet Interpreète" /></p>
</form>
<h3>Supprimer un Interprète</h3>
<form action="<?php echo $_SERVER['REQUEST_URI']; ?>&del=interpret" method="post" style="font-family: 'Courier New';">
<p>
<?php
$sql_interprets = $wpdb->get_results("SELECT id, surname, first_name
FROM sm_interprets
ORDER BY surname ASC
");
if ($sql_interprets)
{
?>
<select name="interpret">
<?php
foreach ($sql_interprets AS $interpret)
echo '<option value="',$interpret->id,'">',$interpret->first_name,' ',$interpret->surname,'</option>';
?>
</select>
<input type="submit" value="Supprimer cet Interprète" />
<?php
}
else
echo 'Aucun interprète à supprimer.';
?>
</p>
</form>
</div>
<?php
}
}
/** **/
function getLastLyrics($nb_to_show=5)
{
global $wpdb;
$sql_res = $wpdb->get_results("SELECT id, title, original_title, date, authors
FROM sm_songs
ORDER BY date DESC
LIMIT 0, $nb_to_show
");
if ($sql_res)
{
?>
<ul>
<?php
foreach ($sql_res AS $song)
{
$sql_authors = $wpdb->get_results("SELECT id, surname, first_name
FROM sm_authors
WHERE id IN ($song->authors)
ORDER BY surname ASC
");
$authors = '';
foreach ($sql_authors AS $author)
$authors .= '<a href="'.$_SERVER['REQUEST_URI'].'&show_author='.$author->id.'">'.$author->first_name.' '.$author->name.'</a>'.', ';
?>
<li>
<strong><a href="<?php echo $_SERVER['REQUEST_URI']; ?>&show_lyrics=<?php echo $song->id; ?>"><?php echo $song->title; ?></a></strong> (<?php echo $song->original_title; ?>)<br />
Par <?php echo $authors; ?> (paroles soumises le <?php echo $song->date; ?>)
</li>
<?php
}
?>
</ul>
<?php
}
else
echo '<p>Aucune chanson dans la Base de Données.</p>';
}
function addAuthor($first_name, $name)
{
global $wpdb;
$first_name = trim(htmlentities($_POST['first_name']));
$name = trim(htmlentities($_POST['surname']));
$wpdb->query("INSERT INTO sm_authors (surname, first_name)
VALUES ('$name', '$first_name')
");
}
function addInterpret($first_name, $name)
{
global $wpdb;
$first_name = trim(htmlentities($_POST['first_name']));
$name = trim(htmlentities($_POST['surname']));
$wpdb->query("INSERT INTO sm_interprets (surname, first_name)
VALUES ('$name', '$first_name')
");
}
function deleteAuthor($id)
{
global $wpdb;
if (is_numeric($id))
$wpdb->query("DELETE FROM sm_authors
WHERE id = $id
");
else
die('Erreur : Valeur incorrecte. Chiffres seulement');
}
function deleteInterpret($id)
{
global $wpdb;
if (is_numeric($id))
$wpdb->query("DELETE FROM sm_interprets
WHERE id = $id
");
else
die('Erreur : Valeur incorrecte. Chiffres seulement');
}
}
$SongManager = new SongManager;
add_action('admin_menu', array(&$SongManager, 'init_plugin'));
?>
Mais bon c'est assez rébarbatif comme truc alors si quelqu'un voulais me coder quelques fonctions, je ne dis pas non ^^
Edit: Si vous voulez tester, il vous suffit d'installer WordPress en local (avec Wamp par exemple) et de placer le fichier songmanager.php dans le répertoire /wp-content/plugins/ 
Dernière modification par MS-DOS_1991 (27-01-2007 14:34:16)
Hors ligne
#22 30-06-2006 14:54:51
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
MS-DOS_1991 a écrit:
Salut à tous
Mais bon c'est assez rébarbatif comme truc alors si quelqu'un voulais me coder quelques fonctions, je ne dis pas non ^^
Edit: Si vous voulez tester, il vous suffit d'installer WordPress en local (avec Wamp par exemple) et de placer le fichier songmanager.php dans le répertoire /wp-content/plugins/
Que reste t-il à faire précisément ?
Hors ligne
#23 30-06-2006 14:58:45
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
Beh en fait, ça a l'air d'être super avancé !!!
Il ne reste plus tant de choses que ça à faire, non ? T'as bossé comme un dingue 
Hors ligne
#24 30-06-2006 15:02:49
- Qwindoo
- Admin
- Lieu: Lyon (69)
- Date d'inscription: 03-06-2006
- Messages: 3147
Re: Plug-in paroles de chansons
Alors comme tu peux le voir, les fonctions de recherche ne sont pas encore implémentées.
C'est tout con, il suffit d'une requête SQL qui ne change presque pas dans chaque cas, mais c'est "long" à coder 
Si ça te tentes, tu peux faire ça :
Code: html
1. Ajouter des fonctions dans la classe (les noms sont en haut dans mes appels)
2. faire une requête de sélection selon le critère choisi par l'utilisateur :
$wpdb->get_results("SELECT le_plus_de_trucs_possibles FROM sm_table WHERE critère LIKE '%$variable_postee%'");
3. Faire un test pour savoir si on a des résultats
4. Afficher les résultats sous forme de liste avec des liens
Dernière modification par MS-DOS_1991 (30-06-2006 15:06:17)
Hors ligne
#25 30-06-2006 15:09:21
- steph2dijon
- Bavard WP
- Date d'inscription: 17-05-2006
- Messages: 136
Re: Plug-in paroles de chansons
MS-DOS_1991 a écrit:
Alors comme tu peux le voir, les fonctions de recherche ne sont pas encore implémentées.
C'est tout con, il suffit d'une requête SQL qui ne change presque pas dans chaque cas, mais c'est long à coder
Ok, des requêtes SQL, donc ça, ça va encore ...
Sinon, je regardais là, je l'ai installé sur un site. J'ai donc activé le plug-in.
Ensuite j'ai été dans sa page pour le tester. En dessous de Supprimer un Auteur j'ai :
WordPress database error: [Unknown column 'surname' in 'field list']
SELECT id, surname, first_name FROM sm_authors ORDER BY surname ASC
et pareil sous "supprimer un interprète.
J'ai essayé de créer un auteur et j'obtiens ce message :
J'ai la fenêtre 'Ajout effectué' qui apparait mais le message d'erreur suivant également :
"Wordpress database error : [unknown column 'surname' in 'field list']
J'ai l'impression que les tables ne se sont pas créés
Hors ligne