Plug-in paroles de chansons (Créer un compte)

  • Statut : non résolu
15 sujets de 16 à 30 (sur un total de 50)
  • Auteur
    Messages
  • #576223
    Qwindoo
    Modérateur
    Maître WordPress
    2861 contributions

    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 😎

    #576224
    steph2dijon
    Membre
    Chevalier WordPress
    132 contributions
    MS-DOS_1991 wrote:
    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 :D

    #576225
    steph2dijon
    Membre
    Chevalier WordPress
    132 contributions
    steph2dijon wrote:
    MS-DOS_1991 wrote:
    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 :D

    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.

    #576226
    Qwindoo
    Modérateur
    Maître WordPress
    2861 contributions
    steph2dijon wrote:
    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 !! 😎 :D

    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 wrote:
    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 :D
    JavaScript (DOM) powered 😉

    #576227
    steph2dijon
    Membre
    Chevalier WordPress
    132 contributions
    MS-DOS_1991 wrote:
    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 :D
    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.

    #576228
    Qwindoo
    Modérateur
    Maître WordPress
    2861 contributions

    Salut à tous 🙂

    Voilà où j’en suis à présent 😎

    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 ‘alert(‘Ajout Effectué !’);window.location =  »,$_SERVER[‘PHP_SELF’],’?page=songmanager.php’;’;
    }
    elseif ($_GET[‘add’] == ‘author’)
    {
    if (isset($_POST[‘first_name’]) && isset($_POST[‘surname’]))
    {
    $this->addAuthor($_POST[‘first_name’], $_POST[‘surname’]);
    echo ‘alert(‘Ajout Effectué !’);window.location =  »,$_SERVER[‘PHP_SELF’],’?page=songmanager.php’;’;
    }
    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 ‘alert(‘Ajout Effectué !’);window.location =  »,$_SERVER[‘PHP_SELF’],’?page=songmanager.php’;’;
    }
    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 ‘alert(‘Suppression Effectuée.’);window.location =  »,$_SERVER[‘PHP_SELF’],’?page=songmanager.php’;’;
    }
    else
    die(‘Erreur: Veuillez sélectionner un auteur à supprimer’);
    }
    elseif ($_GET[‘del’] == ‘interpret’)
    {
    if (isset($_POST[‘interpret’]))
    {
    $this->deleteInterpret($_POST[‘interpret’]);
    echo ‘alert(‘Suppression Effectuée.’);window.location =  »,$_SERVER[‘PHP_SELF’],’?page=songmanager.php’;’;
    }
    else
    die(‘Erreur: Veuillez sélectionner un auteur à supprimer’);
    }
    }
    else
    {
    ?>

    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–;
    }
    }

    <div class="wrap">
    <h2>Song Manager v1.0</h2>
    <h3>Rechercher des paroles de chansons</h3>
    <form action="&search=title » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    <label>         Rechercher par titre : </label>

    </p>
    </form>
    <form action="&search=original_title » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    <label>Rechercher par titre original : </label>

    </p>
    </form>
    <form action="&search=author » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    <label>        Rechercher par auteur : </label>

    </p>
    </form>
    <form action="&search=interprete » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    <label>    Rechercher par interprète : </label>

    </p>
    </form>
    <form action="&search=ccli » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    <label>     Trouver à partir du <acronym title="Christian Copyright Licensing International">CCLI</acronym> : </label>

    </p>
    </form>
    <h3>Dernières paroles de chanson</h3>
    getLastLyrics(); ?>
    <h3>Ajouter une chanson</h3>
    <form action="&add=song » method= »post » style= »font-family: ‘Courier New’; »>
    <p>


    </p>
    <p><label>Titre de la chanson : </label></p>
    <p><label>     Titre original : </label></p>
    <p id="addsong_p_authors">
              Auteur(s) :

    get_results(« SELECT id, surname, first_name
    FROM sm_authors
    ORDER BY surname ASC
    « );
    foreach ($sql_authors AS $author)
    echo ‘id,' »>’,$author->first_name,’ ‘,$author->surname, »;
    ?>

    </p>
    <p>                     
    <span id="addsong_span_addauthor"></span>
    <span id="addsong_span_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 : </label></p>
    <p><label>     CCLI : </label></p>
    <p>
    </form>
    <h3>Nouvel Auteur</h3>
    <form action="&add=author » method= »post » style= »font-family: ‘Courier New’; »>
    <p><label>Prénom : </label></p>
    <p><label>   Nom : </label>
    <p></p>
    </form>
    <h3>Supprimer un Auteur</h3>
    <form action="&del=author » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    get_results(« SELECT id, surname, first_name
    FROM sm_authors
    ORDER BY surname ASC
    « );
    if ($sql_authors)
    {
    ?>

    <?php
    foreach ($sql_authors AS $author)
    echo 'id,' »>’,$author->first_name,’ ‘,$author->surname, »;
    ?>



    </p>
    </form>
    <h3>Nouvel Interprète</h3>
    <form action="&add=interpret » method= »post » style= »font-family: ‘Courier New’; »>
    <p><label>Prénom : </label></p>
    <p><label>   Nom : </label>
    <p></p>
    </form>
    <h3>Supprimer un Interprète</h3>
    <form action="&del=interpret » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    get_results(« SELECT id, surname, first_name
    FROM sm_interprets
    ORDER BY surname ASC
    « );
    if ($sql_interprets)
    {
    ?>

    <?php
    foreach ($sql_interprets AS $interpret)
    echo 'id,' »>’,$interpret->first_name,’ ‘,$interpret->surname, »;
    ?>



    </p>
    </form>
    </div>
    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>
    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>id.' »>’.$author->first_name.’ ‘.$author->name.’</a>‘.’, ‘;
    ?>
    <li>
    <strong><a href="&show_lyrics=id; ?> »>title; ?></a></strong> (original_title; ?>)<br />
    Par (paroles soumises le date; ?>)
    </li>

    </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/ 😉

    #576229
    steph2dijon
    Membre
    Chevalier WordPress
    132 contributions
    MS-DOS_1991 wrote:
    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 ?

    #576230
    steph2dijon
    Membre
    Chevalier WordPress
    132 contributions

    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 🙂

    #576231
    Qwindoo
    Modérateur
    Maître WordPress
    2861 contributions

    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 :

    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

    #576232
    steph2dijon
    Membre
    Chevalier WordPress
    132 contributions
    MS-DOS_1991 wrote:
    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

    #576233
    steph2dijon
    Membre
    Chevalier WordPress
    132 contributions
    MS-DOS_1991 wrote:
    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 :

    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

    Ok, je veux bien tester 🙂 Tu reliras par contre 😉

    #576234
    Qwindoo
    Modérateur
    Maître WordPress
    2861 contributions

    Ah je sais

    C’est un bug que j’ai fixé tout à l’heure quand j’ai changé le nom de certains champs 😕

    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,
    `surname` 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,
    `surname` 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 ‘alert(‘Ajout Effectué !’);window.location =  »,$_SERVER[‘PHP_SELF’],’?page=songmanager.php’;’;
    }
    elseif ($_GET[‘add’] == ‘author’)
    {
    if (isset($_POST[‘first_name’]) && isset($_POST[‘surname’]))
    {
    $this->addAuthor($_POST[‘first_name’], $_POST[‘surname’]);
    echo ‘alert(‘Ajout Effectué !’);window.location =  »,$_SERVER[‘PHP_SELF’],’?page=songmanager.php’;’;
    }
    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 ‘alert(‘Ajout Effectué !’);window.location =  »,$_SERVER[‘PHP_SELF’],’?page=songmanager.php’;’;
    }
    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 ‘alert(‘Suppression Effectuée.’);window.location =  »,$_SERVER[‘PHP_SELF’],’?page=songmanager.php’;’;
    }
    else
    die(‘Erreur: Veuillez sélectionner un auteur à supprimer’);
    }
    elseif ($_GET[‘del’] == ‘interpret’)
    {
    if (isset($_POST[‘interpret’]))
    {
    $this->deleteInterpret($_POST[‘interpret’]);
    echo ‘alert(‘Suppression Effectuée.’);window.location =  »,$_SERVER[‘PHP_SELF’],’?page=songmanager.php’;’;
    }
    else
    die(‘Erreur: Veuillez sélectionner un auteur à supprimer’);
    }
    }
    else
    {
    ?>

    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–;
    }
    }

    <div class="wrap">
    <h2>Song Manager v1.0</h2>
    <h3>Rechercher des paroles de chansons</h3>
    <form action="&search=title » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    <label>         Rechercher par titre : </label>

    </p>
    </form>
    <form action="&search=original_title » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    <label>Rechercher par titre original : </label>

    </p>
    </form>
    <form action="&search=author » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    <label>        Rechercher par auteur : </label>

    </p>
    </form>
    <form action="&search=interprete » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    <label>    Rechercher par interprète : </label>

    </p>
    </form>
    <form action="&search=ccli » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    <label>     Trouver à partir du <acronym title="Christian Copyright Licensing International">CCLI</acronym> : </label>

    </p>
    </form>
    <h3>Dernières paroles de chanson</h3>
    getLastLyrics(); ?>
    <h3>Ajouter une chanson</h3>
    <form action="&add=song » method= »post » style= »font-family: ‘Courier New’; »>
    <p>


    </p>
    <p><label>Titre de la chanson : </label></p>
    <p><label>     Titre original : </label></p>
    <p id="addsong_p_authors">
              Auteur(s) :

    get_results(« SELECT id, surname, first_name
    FROM sm_authors
    ORDER BY surname ASC
    « );
    foreach ($sql_authors AS $author)
    echo ‘id,' »>’,$author->first_name,’ ‘,$author->surname, »;
    ?>

    </p>
    <p>                     
    <span id="addsong_span_addauthor"></span>
    <span id="addsong_span_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 : </label></p>
    <p><label>     CCLI : </label></p>
    <p>
    </form>
    <h3>Nouvel Auteur</h3>
    <form action="&add=author » method= »post » style= »font-family: ‘Courier New’; »>
    <p><label>Prénom : </label></p>
    <p><label>   Nom : </label>
    <p></p>
    </form>
    <h3>Supprimer un Auteur</h3>
    <form action="&del=author » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    get_results(« SELECT id, surname, first_name
    FROM sm_authors
    ORDER BY surname ASC
    « );
    if ($sql_authors)
    {
    ?>

    <?php
    foreach ($sql_authors AS $author)
    echo 'id,' »>’,$author->first_name,’ ‘,$author->surname, »;
    ?>



    </p>
    </form>
    <h3>Nouvel Interprète</h3>
    <form action="&add=interpret » method= »post » style= »font-family: ‘Courier New’; »>
    <p><label>Prénom : </label></p>
    <p><label>   Nom : </label>
    <p></p>
    </form>
    <h3>Supprimer un Interprète</h3>
    <form action="&del=interpret » method= »post » style= »font-family: ‘Courier New’; »>
    <p>
    get_results(« SELECT id, surname, first_name
    FROM sm_interprets
    ORDER BY surname ASC
    « );
    if ($sql_interprets)
    {
    ?>

    <?php
    foreach ($sql_interprets AS $interpret)
    echo 'id,' »>’,$interpret->first_name,’ ‘,$interpret->surname, »;
    ?>



    </p>
    </form>
    </div>
    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>
    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>id.' »>’.$author->first_name.’ ‘.$author->name.’</a>‘.’, ‘;
    ?>
    <li>
    <strong><a href="&show_lyrics=id; ?> »>title; ?></a></strong> (original_title; ?>)<br />
    Par (paroles soumises le date; ?>)
    </li>

    </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’));

    ?>

    Voilà 🙂

    /! C’est une version alpha, hein alors fais gaffe quand même en la mettant sur des sites 😉 /!

    #576235
    steph2dijon
    Membre
    Chevalier WordPress
    132 contributions
    MS-DOS_1991 wrote:
    /! C’est une version alpha, hein alors fais gaffe quand même en la mettant sur des sites 😉 /!

    Merci 🙂

    Sinon pas de prob, c’est un wordpress que j’ai installé sur Free pour faire des tests.

    #576236
    steph2dijon
    Membre
    Chevalier WordPress
    132 contributions

    J’ai toujours le soucis :

    Supprimer un Auteur

    WordPress database error: [Unknown column ‘surname’ in ‘field list’]
    SELECT id, surname, first_name FROM sm_authors ORDER BY surname ASC
    Aucun auteur à supprimer.
    Nouvel Interprète

    Prénom :

    Nom :

    Supprimer un Interprète

    WordPress database error: [Unknown column ‘surname’ in ‘field list’]
    SELECT id, surname, first_name FROM sm_interprets ORDER BY surname ASC
    Aucun interprète à supprimer.

    J’ai désactivé le plugin, remis le nouveau code, et réactivé le plugin …

    #576237
    ramenian
    Membre
    Chevalier WordPress
    167 contributions

    Vivement que tu mettes ton plugin en place et qu’on puisse tester nous aussi 🙂

15 sujets de 16 à 30 (sur un total de 50)
  • Vous devez être connecté pour répondre à ce sujet.