J'utilise ce code.
$blog_list = $wpdb->get_results( "SELECT " . $extra . "blog_id, last_updated FROM " . $wpdb->blogs. " WHERE public = '1' AND archived = '0' AND mature = '0' AND spam = '0' AND deleted ='0' AND UPPER(blog_name) LIKE 'A%'" . $order . " " . $limit . "", ARRAY_A );
Mais cette instruction LIKE AND UPPER(blog_name) LIKE 'A%'"
ne fonctionne pas. Quelqu'un peut-il me donner la solution?
Merci
En fait, j'utilise ce code
$where = '';
if ($filter) {
$where = "AND UPPER(blog_name) LIKE '".strtoupper($filter)."%' ";
}
Donc, je vais remplacer AND UPPER(blog_name) LIKE 'A%'"
par $where
plus tard
Remarque: j'ai plus de 500 blogs dans mon réseau.
Je souhaite afficher tous les noms de blog avec un lien d'ancrage dans une page. Mais je ne veux pas charger tous les noms de blog. J'essaie donc de réaliser une navigation alphabétique. Si l'utilisateur clique sur le lien "A", la page doit afficher les noms de blogs commençant par "A". De même B, C, etc.
global $wpdb;
$wpdb->get_results(
$wpdb->prepare(
"SELECT %s blog_id, last_updated FROM %s WHERE public = '1' AND archived = '0' AND mature = '0' AND spam = '0' AND deleted ='0' AND UPPER(blog_name) LIKE '%s' %s %s ", ARRAY_A
),
$extra,
$wpdb->blogs,
$wpdb->esc_like( 'A%' ),
$order,
$limit
);
N'envoyez jamais de données sans préparer! De plus, certaines fonctions, comme like_escape()
, vous aideront à préparer les données correctement.
Vous vous demandez toujours pourquoi vous souhaitez rechercher quelque chose comme A%
…
Ce que @kaiser a dit en plus:
Dans cette table, il n'y a pas de champ blog_name ... Il semble que votre requête comprenne un autre code SQL, mais sans cela, nous ne pouvons pas dire ce qui ne va pas.
Mettre à jour Le nom du blog se trouve uniquement dans le tableau des options de blogs individuels. Donc, pour faire ce que vous êtes après, vous devez faire ceci:
Lisez tous vos identifiants de blog qui sont public = 1 && achieved = 0 && mature = 0 && spam = 0 && deleted = 0
. C'est une requête qui, dans votre cas, renverrait environ 500 enregistrements. Ensuite, avec chaque enregistrement, vous devez lire chaque table d'options de blog {prefix}_{ID}_options
et rechercher la ligne qui a un option_name = 'blogname'
, puis vérifier si cet enregistrement commence par la lettre de votre choix.
Peut-être que ce qui précède est possible dans une requête MySQL massive, mais je détesterais être celui qui la mettrait ensemble.
Je ne peux pas aider plus loin. Si je cherchais à faire ce que vous voulez, je créerais un nouveau tableau et le tiendrais au courant des informations à rechercher. J'utilisais les points d'ancrage disponibles pour m'assurer que lorsqu'un nouveau site serait ajouté/mis à jour/supprimé, il mettrait à jour le tableau que j'avais créé.