- Statut : non résolu
- Ce sujet contient 49 réponses, 4 participants et a été mis à jour pour la dernière fois par
steph2dijon, le il y a 18 années et 11 mois.
-
AuteurMessages
-
30 juin 2006 à 13 h 27 min #576238
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 😎
30 juin 2006 à 13 h 37 min #576239Quand 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.
30 juin 2006 à 13 h 54 min #576240Alors :
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 ?
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 ?
30 juin 2006 à 14 h 05 min #576241Bon, j’en suis là. Alors j’aimerai ton avis avant d’aller plus loin (je n’ai pas mis la structure des
- etc pour l’instant)
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>« ;
}
}30 juin 2006 à 14 h 09 min #576242Dé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 :
$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 :
$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 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 ?
30 juin 2006 à 14 h 10 min #576243Pas si vite, je viens d’arriver moi 😋
30 juin 2006 à 14 h 13 min #576244MS-DOS_1991 wrote: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 :
$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 :
$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 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 😉
30 juin 2006 à 14 h 21 min #576245Alors voilà :
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. »;
}
}30 juin 2006 à 14 h 37 min #576248Lol 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)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>
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>
<a href="_URL_&show_lyrics=id; ?> »><strong>title; ?></strong></a> (<em>original_title; ?></em>)<br />
Ecrite par $authors et interprétée par <br />
<textarea>lyrics; ?></textarea>
<p style="font-size: x-small">
©copyright;<br />
CCLI : ccli; ?><br />
Soumises le 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 ^^
30 juin 2006 à 14 h 38 min #576249L’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 😕 )
30 juin 2006 à 14 h 51 min #576250MS-DOS_1991 wrote: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.
30 juin 2006 à 14 h 53 min #576251MS-DOS_1991 wrote: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 ?
30 juin 2006 à 14 h 55 min #576252steph2dijon wrote:Je peux faire toutes les autres requêtes sur cette base ?Aucun problème, postes-les ici quand tu auras fini et je « corrigerai » 😎 😎
30 juin 2006 à 14 h 57 min #576246MS-DOS_1991 wrote:steph2dijon wrote: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à.
30 juin 2006 à 14 h 58 min #576247Je pars pour 21h00 et reviendrai vers 2h00 donc ce sera plutôt pour demain 😉
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.