WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru Самая быстрая Тема-конструктор для WordPress

Составить SQL-запрос запрос через wpdb() из 2 таблиц WordPress

Прошу помощи с составлением SQL-запроса через wpdb() для вывода в таблицу во frontend'e данных из 2 таблиц.

Условие:

  1. Есть стандартная таблица WordPress wpux_usermeta из которой надо "выдернуть" meta_key со значением: first_name, last_name, telephone...
  2. Есть созданная таблица WordPress wpux_daily_report (структуру приложил) из которой надо "выдернуть" значения: date, activity, bad_food, menstruation, weight....
  3. Обе таблицы имеют поле user_id с помощью которой связываются.
  4. Итоговую табличку вывожу через foreach (скрин приложил). В итоге должен получиться запрос, который выводит требуемые данные всех пользователей для текущего дня занятий с выборкой данных из 2 таблиц: wpux_usermeta и wpux_daily_report
  5. Также прошу показать как правильно "вставить" input в последний столбик получивший таблицы, для обратной отправки в wpux_daily_report.

У меня получилось обратиться только к wpux_daily_report, и соот. неполноценный результат (скрин приложил). Как работать сразу с 2 таблицами не могу разобраться.

<table class="daily_report_table">
	<tr>
		<th>ФИО</th>
		<th>Телефон</th>
		<th>Активность</th>  
		<th>"Вкусняшки"</th>
		<th>Дата Х</th>
		<th>Х сегодня</th>
		<th>Текущий вес</th>
		<th>Дельта со вчерашним днем</th>
		<th>Комментарий по отчету</th>
	</tr>
		<?php       
		//Вторая таблица - сегодня
		$current_user_report = $current_user->ID;
		$current_day_report = current_time ('j',0);
		$this_month_report = $wpdb->get_results( 
		"
		SELECT *
		FROM wpux_daily_report
		WHERE DAY(date) = $current_day_report
		ORDER BY user_id
		"
		);

		if( $this_month_report ) {
			foreach ( $this_month_report as $string_report ) {
				echo '<tr>';

				echo '<td>';
				echo $string_report->user_id;
				echo '</td>';

				echo '<td>';  
				echo $string_report->telephone;
				echo '</td>';

				echo '<td>';  
				echo $string_report->activity;
				echo '</td>'; 

				echo '<td>';  
				echo $string_report->bad_food;
				echo '</td>'; 

				echo '<td>'; 
				echo $string_report->first_blood_day;
				echo '</td>';

				echo '<td>'; 
				echo $string_report->menstruation;
				echo '</td>';

				echo '<td>';  
				echo $string_report->weight;
				echo '</td>'; 

				echo '<td>';
				$today_weight = $string_report->weight;
				$delta = $today_weight - $yesterday_weight;  
				echo $delta;
				echo '</td>';

				echo '<td>';
				echo '<input class="text-input" name="comment_admin_report" type="text" id="comment_admin_report" value="" />';

				echo '</td>';
				}
		}        
		?>          
</table>

0
Rickie
месяц назад
  • 2
    SELECT 
    	wu.*, wdr.*
    FROM
    	wpux_usermeta AS wu
    		JOIN
    	wpux_daily_report AS wdr ON (wu.user_id = wdr.user_ud)
    WHERE DAY(date) = $current_day_report
    			ORDER BY wu.user_id;

    Но лучше указать только нужные поля так: вместо wu.* написать wu.first_name, wu.last_name, wu.telephone... и тп

    По input тебе нужно сделать по другому: добавить форму и все нужные поля + копка субмит далее нужно написать код обработки данной формы, что бы результаты записать в базу данных.

    Если тебе зачем то нужно ID как в твоем примере id="comment_admin_report"

    Учти что ID должен быть уникальным, используй например так: id="comment_admin_report_".$string_report->user_id."

    Что бы добавить комментарий нужно знать как эти комментарии у тебя храняться в базе.

    Псевдокод как положить коммент в базу:

    $comment = sanitize_text_field($_POST['comment_admin_report']); //берем комент из твоего инпута.
    update_user_meta($string_report->user_id, 'user_comments', $comment); //user_comments заменить на нужное поле, там где в баще хранятся комменты
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация