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
#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
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
Tu reliras par contre 
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 
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é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'));
?>
Voilà 
/!\ C'est une version alpha, hein alors fais gaffe quand même en la mettant sur des sites
/!\
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
/!\
Merci 
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
Re: Plug-in paroles de chansons
Vivement que tu mettes ton plugin en place et qu'on puisse tester nous aussi 
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 
Je l'utilise un peu pour voir le fonctionnement, et après je tente de coder 
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 
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

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 
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 
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
)
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 
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 
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
![]()
![]()
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
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
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)
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
Des idées ?
Super, j'apprends plein de trucs 
Sinon, tu t'imagines bien que je ne peux pas t'aider pour ton problème 
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 
Alors... ^^
Pas besoin de faire un mysql_fetch_object, Wordpress t'as déjà fait tout le sale boulot 
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étée par <?php echo $interprets; ?><br />
<textarea><?php echo $song->lyrics; ?></textarea>
<p style="font-size: x-small;">
©<?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 
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
)
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
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)
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
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"

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"
![]()
![]()
Très bien. Certainement un peu plus tard dans la soirée, j'ai quelques obligations d'ici-là. 
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 
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 
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étée par <?php echo $interprets; ?><br />
<textarea><?php echo $song->lyrics; ?></textarea>
<p style="font-size: x-small;">
©<?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étée par <?php echo $interprets; ?><br />
<textarea><?php echo $song->lyrics; ?></textarea>
<p style="font-size: x-small;">
©<?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étée par <?php echo $interprets; ?><br />
<textarea><?php echo $song->lyrics; ?></textarea>
<p style="font-size: x-small;">
©<?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étée par <?php echo $interprets; ?><br />
<textarea><?php echo $song->lyrics; ?></textarea>
<p style="font-size: x-small;">
©<?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étée par <?php echo $interprets; ?><br />
<textarea><?php echo $song->lyrics; ?></textarea>
<p style="font-size: x-small;">
©<?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
#48 05-07-2006 14:15:03
#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 
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
)
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 
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
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)
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
Tu es toujours là, super 
Des jointures ? Ok, je vais voir ça ...
Hors ligne