Annonce

Faites la différence entre le service WordPress.com et l'application libre WordPress.

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

#26 30-06-2006 15:11:48

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 hmm

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

Ok, je veux bien tester smile Tu reliras par contre wink

Hors ligne

 

#27 30-06-2006 15:12:38

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Ah je sais

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

Code: html

<?php
/*
Plugin Name: SongManager
Plugin URI:  http://www.newbie-project.net/wordpress/plugins/
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,
                   `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 '<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&eacute;lectionner un auteur &agrave; 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&eacute;lectionner un auteur &agrave; 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;Rechercher par interpr&egrave;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trouver &agrave; 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&egrave;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Titre original : <input type="text" name="addsong_original_title" size="50" /></label></p>
    <p id="addsong_p_authors">
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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&eacute;nom : <input type="text" name="first_name" size="15" /></label></p>
      <p><label>&nbsp;&nbsp;&nbsp;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 &agrave; supprimer.';
        ?>
      </p>
    </form>
    <h3>Nouvel Interpr&egrave;te</h3>
    <form action="<?php echo $_SERVER['REQUEST_URI']; ?>&add=interpret" method="post" style="font-family: 'Courier New';">
      <p><label>Pr&eacute;nom : <input type="text" name="first_name" size="15" /></label></p>
      <p><label>&nbsp;&nbsp;&nbsp;Nom : <input type="text" name="surname" size="15" /></label>
      <p><input type="submit" value="Ajouter cet Interpre&egrave;te" /></p>
    </form>
    <h3>Supprimer un Interpr&egrave;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&egrave;te" />
<?php
        }
        else
          echo 'Aucun interpr&egrave;te &agrave; 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'));

?>

Voilà smile

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

Dernière modification par MS-DOS_1991 (27-01-2007 14:34:50)

Hors ligne

 

#28 30-06-2006 15:20:30

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

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

Merci smile

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

Hors ligne

 

#29 30-06-2006 15:23:31

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

J'ai toujours le soucis :

Code: html

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 ...

Hors ligne

 

#30 30-06-2006 15:23:53

ramenian
Bavard WP
Lieu: Paris
Date d'inscription: 19-05-2006
Messages: 230
Site web

Re: Plug-in paroles de chansons

Vivement que tu mettes ton plugin en place et qu'on puisse tester nous aussi smile


Gestion de projet - référencement
Ramenos Blog | My Website/Portefolio

Hors ligne

 

#31 30-06-2006 15:27:52

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

Ah ouais mais j'y pense, il faut que je supprime les deux tables à la main, sinon il les recrée pas ...

Edit :

Bon ça marche cool

Je l'utilise un peu pour voir le fonctionnement, et après je tente de coder cool

Dernière modification par steph2dijon (30-06-2006 15:31:51)

Hors ligne

 

#32 30-06-2006 15:37:09

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

Quand on entre un nouveau chant, ça plante. Je pense que c'est parce qu'il manque un champ 'interprete' dans le formulaire d'ajoût de chants.

Hors ligne

 

#33 30-06-2006 15:54:20

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

Alors :

1. Ajouter des fonctions dans la classe (les noms sont en haut dans mes appels)

                  Ok, ça, ça va wink

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%'");

                 ça doit donner ça, à peu près ?

Code: html

  function searchlyricsfromtitle($title)
  {
    global $wpdb;
    $title = trim(htmlentities($_POST['title']));
    $wpdb->get_results("SELECT * FROM sm_songs WHERE title ='$title'
                 ");
  }

3. Faire un test pour savoir si on a des résultats

                  Je sais pas faire, mais ça s'est facile à trouver ...

4. Afficher les résultats sous forme de liste avec des liens

                  C'est ça qui m'inquiète davantage. Comment je fais ? Car le résultat peut s'afficher à quantité d'endroits différents non ? Dans la page admin, dans la sidebar, etc ?

Hors ligne

 

#34 30-06-2006 16:05:44

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

Bon, j'en suis là. Alors j'aimerai ton avis avant d'aller plus loin (je n'ai pas mis la structure des <ul> etc pour l'instant)

Code: html

  function searchlyricsfromtitle($title)
  {
    global $wpdb;
    $title = trim(htmlentities($_POST['title']));
    $wpdb->get_results("SELECT * FROM sm_songs WHERE title ='$title' ORDER BY title
                 ");
  
	while ($ligne = mysql_fetch_object ($wpdb))
	{
	echo "$ligne->title ";
	echo "$ligne->original_title ";
	echo "$ligne->authors ";
	echo "$ligne->interprets ";
	echo "$ligne->lyrics ";
	echo "$ligne->copyright ";
	echo "$ligne->ccli ";
	echo "$ligne->date ";
	echo "<br>";
	}

}

Hors ligne

 

#35 30-06-2006 16:09:54

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Désolé, j'ai eu des problèmes de connexion hmm hmm hmm

En effet, mon plugin ne crée les tables QUE si elles n'existent pas déjà (pour ne pas écraser sans faire exprès), donc il faut à chaque modification majeure dans la structure des tables supprimer celles-ci manuellement (PhpMyAdmin) puis actualiser la page wink

Cocnernant ton code, le problème c'est qu'on veut chercher et non trouver, c'est-à dire qu'il ne faut pas prendre la ligne lorsque le titre est ce qu'on cherche mais ressemble à ce qu'on cherche wink

Pour ceci, il suffit d'utiliser l'opérateur LIKE :

Code: html

$wpdb->get_results("SELECT * FROM sm_songs WHERE title LIKE '%$title%' ");

Ensuite, pour vérifier qu'on a bien des résultats, il suffit de faire :

Code: html

$sql_res = $wpdb->get_results("SELECT * FROM sm_songs WHERE title LIKE '%$title%' ");
if ($sql_res)
{
// ok
}
else
{
// pas d'enregistrements
}

Sinon, pour l'ajout de nouvelle chanson, j'ai un problème :

J'affiche des listes déroulantes pour sélectionner l'auteur (et l'interprète, c'est pareil), et l'utilisateur peut ajouter des auteurs (avec comme limite le nombre d'auteurs / interprètes existant car il ne peut sélectionner 2 fois le même auteur wink )

Je cherche donc un moyen de capturer les id des membres sélectionnés (un selectedIndex par <select> en JS) puis de formater cela de la façon suivante : "1, 2, 5, 15", valeur que je mettrai ensuite dans un champ caché pour la récupérer et la mettre directement dans ma table SQL smile

Des idées ?

Hors ligne

 

#36 30-06-2006 16:10:58

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Pas si vite, je viens d'arriver moi tongue

Hors ligne

 

#37 30-06-2006 16:13:14

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

Désolé, j'ai eu des problèmes de connexion hmm hmm hmm

En effet, mon plugin ne crée les tables QUE si elles n'existent pas déjà (pour ne pas écraser sans faire exprès), donc il faut à chaque modification majeure dans la structure des tables supprimer celles-ci manuellement (PhpMyAdmin) puis actualiser la page wink

Cocnernant ton code, le problème c'est qu'on veut chercher et non trouver, c'est-à dire qu'il ne faut pas prendre la ligne lorsque le titre est ce qu'on cherche mais ressemble à ce qu'on cherche wink

Pour ceci, il suffit d'utiliser l'opérateur LIKE :

Code: html

$wpdb->get_results("SELECT * FROM sm_songs WHERE title LIKE '%$title%' ");

Ensuite, pour vérifier qu'on a bien des résultats, il suffit de faire :

Code: html

$sql_res = $wpdb->get_results("SELECT * FROM sm_songs WHERE title LIKE '%$title%' ");
if ($sql_res)
{
// ok
}
else
{
// pas d'enregistrements
}

Sinon, pour l'ajout de nouvelle chanson, j'ai un problème :

J'affiche des listes déroulantes pour sélectionner l'auteur (et l'interprète, c'est pareil), et l'utilisateur peut ajouter des auteurs (avec comme limite le nombre d'auteurs / interprètes existant car il ne peut sélectionner 2 fois le même auteur wink )

Je cherche donc un moyen de capturer les id des membres sélectionnés (un selectedIndex par <select> en JS) puis de formater cela de la façon suivante : "1, 2, 5, 15", valeur que je mettrai ensuite dans un champ caché pour la récupérer et la mettre directement dans ma table SQL smile

Des idées ?

Super, j'apprends plein de trucs tongue

Sinon, tu t'imagines bien que je ne peux pas t'aider pour ton problème wink

Hors ligne

 

#38 30-06-2006 16:21:38

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

Alors voilà :

Code: html

  function searchlyricsfromtitle($title)
  {
    global $wpdb;
    $title = trim(htmlentities($_POST['title']));
    $sql_res = $wpdb->get_results("SELECT * FROM sm_songs WHERE title LIKE '%$title%' ORDER BY title ");
  if ($sql_res)
    {
	while ($ligne = mysql_fetch_object ($wpdb))
	{
	echo "<a href=lienverslesite>" //J'ai un problème, comment je connais le lien ? Pour l'instant ça ne crée pas de catégorie ni rien ???
	echo "$ligne->title ";
	echo "</a>
	echo "$ligne->original_title ";
	echo "$ligne->authors ";
	echo "$ligne->interprets ";
	echo "$ligne->lyrics ";
	echo "$ligne->copyright ";
	echo "$ligne->ccli ";
	echo "$ligne->date ";
	echo "<br />";
	}
    }
    else
    {
    echo "Aucune chanson ne correspond à votre recherche.";
    }
}

Hors ligne

 

#39 30-06-2006 16:37:35

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Lol je vais faire le tour de mes forums favoris tongue

Alors... ^^

Pas besoin de faire un mysql_fetch_object, Wordpress t'as déjà fait tout le sale boulot wink
Fais juste un foreach ($sql_results AS $song)

Code: html

function searchLyricsFromTitle ($title)
{
  global $wpdb;
  $title = trim(htmlentities($_POST['title']));
  $sql_res = $wpdb->get_results("SELECT * FROM sm_songs WHERE title LIKE '%$title%' ORDER BY title ASC");
  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="_URL_&show_author='.$author->id.'">'.$author->first_name.' '.$author->name.'</a>'.', ';
?>
  <li>
    <a href="_URL_&show_lyrics=<?php echo $song->id; ?>"><strong><?php echo $song->title; ?></strong></a> (<em><?php echo $song->original_title; ?></em>)<br />
    Ecrite par $authors et interpr&eacute;t&eacute;e par <?php echo $interprets; ?><br />
    <textarea><?php echo $song->lyrics; ?></textarea>
    <p style="font-size: x-small;">
      &copy;<?php echo $song->copyright;<br />
      CCLI : <?php echo $song->ccli; ?><br />
      Soumises le <?php echo $song->date; ?>
    </p>
    }
?>
  </ul>
<?php
  }
  else
    echo '<p>Aucune chanson ne correspond à votre recherche.</p>';
}

Bon c'est pas parfait loin de là, mais je l'améliorerai ^^

Hors ligne

 

#40 30-06-2006 16:38:55

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

L'avantage de la liste c'est que ça passe partout : un peu de style et hop tu la met où tu veux wink

Par contre, pour l'URL, je ne vois pas trop comment faire, à moins de placer un autre fichier php à la racine du site (en dernier recours hmm )

Hors ligne

 

#41 30-06-2006 16:51:47

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

L'avantage de la liste c'est que ça passe partout : un peu de style et hop tu la met où tu veux wink

Par contre, pour l'URL, je ne vois pas trop comment faire, à moins de placer un autre fichier php à la racine du site (en dernier recours hmm )

Et on ne peut pas créer une rubrique 'Songs' dans Wordpress ? A chaque chanson que l'on insère dans la base de données correspondrait un article. Et ensuite, on rajoute un truc dans index, un test qui dit que si on est dans la cat 'Songs', on affiche les champs des tables songmanager ?

L'article ne servirait pas à grand chose, si ce n'est à faire le lien entre songmanager et Wordpress.

Dernière modification par steph2dijon (30-06-2006 16:52:23)

Hors ligne

 

#42 30-06-2006 16:53:34

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

Lol je vais faire le tour de mes forums favoris tongue
Bon c'est pas parfait loin de là, mais je l'améliorerai ^^

Je peux faire toutes les autres requêtes sur cette base ?

Hors ligne

 

#43 30-06-2006 16:55:36

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

steph2dijon a écrit:

Je peux faire toutes les autres requêtes sur cette base ?

Aucun problème, postes-les ici quand tu auras fini et je "corrigerai" cool cool big_smile

Hors ligne

 

#44 30-06-2006 16:57:31

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:

Je peux faire toutes les autres requêtes sur cette base ?

Aucun problème, postes-les ici quand tu auras fini et je "corrigerai" cool cool big_smile

Très bien. Certainement un peu plus tard dans la soirée, j'ai quelques obligations d'ici-là. sad

Hors ligne

 

#45 30-06-2006 16:58:44

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Je pars pour 21h00 et reviendrai vers 2h00 donc ce sera plutôt pour demain wink

Hors ligne

 

#46 03-07-2006 10:16:56

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

Désolé, j'ai eu un week end plus mouvementé que prévu wink

Voilà, j'espère ne pas avoir fait d'erreur :

Code: html

function searchLyricsFromTitle ($title)
{
  global $wpdb;
  $title = trim(htmlentities($_POST['title']));
  $sql_res = $wpdb->get_results("SELECT * FROM sm_songs WHERE title LIKE '%$title%' ORDER BY title ASC");
  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="_URL_&show_author='.$author->id.'">'.$author->first_name.' '.$author->name.'</a>'.', ';
?>
  <li>
    <a href="_URL_&show_lyrics=<?php echo $song->id; ?>"><strong><?php echo $song->title; ?></strong></a> (<em><?php echo $song->original_title; ?></em>)<br />
    Ecrite par $authors et interpr&eacute;t&eacute;e par <?php echo $interprets; ?><br />
    <textarea><?php echo $song->lyrics; ?></textarea>
    <p style="font-size: x-small;">
      &copy;<?php echo $song->copyright;<br />
      CCLI : <?php echo $song->ccli; ?><br />
      Soumises le <?php echo $song->date; ?>
    </p>
    }
?>
  </ul>
<?php
  }
  else
    echo '<p>Aucune chanson ne correspond à votre recherche.</p>';
}

function searchLyricsFromOriginalTitle ($original_title)
{
  global $wpdb;
  $original_title = trim(htmlentities($_POST['original_title']));
  $sql_res = $wpdb->get_results("SELECT * FROM sm_songs WHERE original_title LIKE '%$original_title%' ORDER BY title ASC");
  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="_URL_&show_author='.$author->id.'">'.$author->first_name.' '.$author->name.'</a>'.', ';
?>
  <li>
    <a href="_URL_&show_lyrics=<?php echo $song->id; ?>"><strong><?php echo $song->title; ?></strong></a> (<em><?php echo $song->original_title; ?></em>)<br />
    Ecrite par $authors et interpr&eacute;t&eacute;e par <?php echo $interprets; ?><br />
    <textarea><?php echo $song->lyrics; ?></textarea>
    <p style="font-size: x-small;">
      &copy;<?php echo $song->copyright;<br />
      CCLI : <?php echo $song->ccli; ?><br />
      Soumises le <?php echo $song->date; ?>
    </p>
    }
?>
  </ul>
<?php
  }
  else
    echo '<p>Aucune chanson ne correspond à votre recherche.</p>';
}



function searchLyricsbyAuthor ($author)
{
  global $wpdb;
  $author = trim(htmlentities($_POST['author']));
  $sql_res = $wpdb->get_results("SELECT * FROM sm_songs WHERE author LIKE '%$author%' ORDER BY title ASC");
  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="_URL_&show_author='.$author->id.'">'.$author->first_name.' '.$author->name.'</a>'.', ';
?>
  <li>
    <a href="_URL_&show_lyrics=<?php echo $song->id; ?>"><strong><?php echo $song->title; ?></strong></a> (<em><?php echo $song->original_title; ?></em>)<br />
    Ecrite par $authors et interpr&eacute;t&eacute;e par <?php echo $interprets; ?><br />
    <textarea><?php echo $song->lyrics; ?></textarea>
    <p style="font-size: x-small;">
      &copy;<?php echo $song->copyright;<br />
      CCLI : <?php echo $song->ccli; ?><br />
      Soumises le <?php echo $song->date; ?>
    </p>
    }
?>
  </ul>
<?php
  }
  else
    echo '<p>Aucune chanson ne correspond à votre recherche.</p>';
}

function searchLyricsbyInterprete ($interprete)
{
  global $wpdb;
  $interprete = trim(htmlentities($_POST['interprete']));
  $sql_res = $wpdb->get_results("SELECT * FROM sm_songs WHERE interprete LIKE '%$interprete%' ORDER BY title ASC");
  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="_URL_&show_author='.$author->id.'">'.$author->first_name.' '.$author->name.'</a>'.', ';
?>
  <li>
    <a href="_URL_&show_lyrics=<?php echo $song->id; ?>"><strong><?php echo $song->title; ?></strong></a> (<em><?php echo $song->original_title; ?></em>)<br />
    Ecrite par $authors et interpr&eacute;t&eacute;e par <?php echo $interprets; ?><br />
    <textarea><?php echo $song->lyrics; ?></textarea>
    <p style="font-size: x-small;">
      &copy;<?php echo $song->copyright;<br />
      CCLI : <?php echo $song->ccli; ?><br />
      Soumises le <?php echo $song->date; ?>
    </p>
    }
?>
  </ul>
<?php
  }
  else
    echo '<p>Aucune chanson ne correspond à votre recherche.</p>';
}


function searchLyricsfromCCLI ($search_CCLI)
{
  global $wpdb;
  $search_CCLI = trim(htmlentities($_POST['search_CCLI']));
  $sql_res = $wpdb->get_results("SELECT * FROM sm_songs WHERE CCLI LIKE '%$CCLI%' ORDER BY title ASC");
  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="_URL_&show_author='.$author->id.'">'.$author->first_name.' '.$author->name.'</a>'.', ';
?>
  <li>
    <a href="_URL_&show_lyrics=<?php echo $song->id; ?>"><strong><?php echo $song->title; ?></strong></a> (<em><?php echo $song->original_title; ?></em>)<br />
    Ecrite par $authors et interpr&eacute;t&eacute;e par <?php echo $interprets; ?><br />
    <textarea><?php echo $song->lyrics; ?></textarea>
    <p style="font-size: x-small;">
      &copy;<?php echo $song->copyright;<br />
      CCLI : <?php echo $song->ccli; ?><br />
      Soumises le <?php echo $song->date; ?>
    </p>
    }
?>
  </ul>
<?php
  }
  else
    echo '<p>Aucune chanson ne correspond à votre recherche.</p>';
}

Dernière modification par steph2dijon (03-07-2006 10:18:42)

Hors ligne

 

#47 04-07-2006 09:22:07

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

up sad

Hors ligne

 

#48 05-07-2006 14:15:03

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

hmm
sad

Hors ligne

 

#49 05-07-2006 14:41:02

Qwindoo
Admin
Lieu: Lyon (69)
Date d'inscription: 03-06-2006
Messages: 3147

Re: Plug-in paroles de chansons

Désolé, je n'ai pas eu le temps de bosser sur ce plugin ces derniers jours hmm

Ce que tu as fait est déjà super, mais maintenant il faut s'atteller au travail d'optimisation (je verrais bien des jointures dans tes requêtes SQL moi tongue )

P.S: n'oublies pas qu'à la base, c'est pour toi que ce plugin va servir, donc codes-le d'abord en fonction de tes goûts wink

Hors ligne

 

#50 05-07-2006 18:18:44

steph2dijon
Bavard WP
Date d'inscription: 17-05-2006
Messages: 136

Re: Plug-in paroles de chansons

MS-DOS_1991 a écrit:

Désolé, je n'ai pas eu le temps de bosser sur ce plugin ces derniers jours hmm

Ce que tu as fait est déjà super, mais maintenant il faut s'atteller au travail d'optimisation (je verrais bien des jointures dans tes requêtes SQL moi tongue )

P.S: n'oublies pas qu'à la base, c'est pour toi que ce plugin va servir, donc codes-le d'abord en fonction de tes goûts wink

Tu es toujours là, super cool

Des jointures ? Ok, je vais voir ça ...

Hors ligne

 

Pied de page des forums

Propulsé par PunBB 1.2.23
© Copyright 2005-2006 WordPress France

[ Generated in 0.142 seconds, 32 queries executed ]