0

Как пропустить пустую строку в mysql и записывать только те, в которых есть все значения?

Из AD с помощью php пытаюсь записать значения в mysql для дальнейшего использования в телефонной книге. Скрипт тянет данные и должен записывать их в mysql, попутно показываю на экране html-табличку. Скрипт подключается, нужные данные тянет, табличку генерирует, но в mysql создается только одна пустая строка и больше ничего.

<?php
$phpAD_ldap = "ldap://dc";
$phpAD_user = "ldap";
$phpAD_pass = "123456789*";
$phpAD_dn = "OU=user,OU=company,DC=company,DC=ru";
$error = "Ошибка!";
$attributes = array("sn", "givenname", "title", "ipphone", "telephonenumber");
$filter = "(!(sn=''))";
$ad = ldap_connect($phpAD_ldap, 389) 
          or die("Ошибка подключения к AD");
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ad, LDAP_OPT_REFERRALS, 0); 
ldap_get_option($ad,LDAP_OPT_ERROR_STRING,$error);
$bd = ldap_bind($ad,$phpAD_user,$phpAD_pass)
          or die("Ошибка запроса значений");
$result = ldap_search($ad, $phpAD_dn, $filter, $attributes);
$entries = ldap_get_entries($ad, $result);
echo $error;
ldap_unbind($ad);
?>
<html>
<head></head>
<body>
    <table border="0">
        <tr>
            <td>
                 sn
            </td>
            <td>
                givenName
            </td>
            <td>
                title
            </td>
            <td>
                ipphone
            </td>
            <td>
                telephonenumber
            </td>
        </tr>
<?
$con = mysql_connect("localhost","phones","phones");
    if (!$con)
    {
    die('Нет соединения: ' . mysql_error());
    }
$sel = mysql_select_db("phones", $con);
    if (!$sel)
    {
    die('Нет базы: ' . mysql_error());
    }
for ($i=0; $i<$entries["count"]; $i++)
{
$sn = $entries[$i]["sn"][0];
$givenname = $entries[$i]["givenname"][0];
$title = $entries[$i]["title"][0];
$ipphone = $entries[$i]["ipphone"][0];
$telephonenumber = $entries[$i]["telephonenumber"][0];

        mysql_query("INSERT INTO addressbook (firstname, lastname, title, home, work)
        VALUES ('$givenname', '$sn', '$title', '$ipphone', '$telephonenumber')");        

}

mysql_close($con);
?> 
<?php
for ($i=0; $i<$entries["count"]; $i++)
{
    echo '<tr>';
    echo '<td>';
    echo $entries[$i]["sn"][0];
    echo '</td>';
    echo '<td>';
    echo $entries[$i]["givenname"][0];
    echo '</td>';
    echo '<td>';
    echo $entries[$i]["title"][0];
    echo '</td>';
    echo '<td>';
    echo $entries[$i]["ipphone"][0];
    echo '</td>';
    echo '<td>';
    echo $entries[$i]["telephonenumber"][0];
    echo '</td>';
    echo '</tr>';
}
?>
</table>
</body>
</html>

HTML-таблица генируется, хотя первые три строки пустые HTML-таблица генируется, хотя первые три строки пустые труктура таблицы Mysql, используется сторонний бесплатный скрипт Структура таблицы Mysql, используется сторонний бесплатный скрипт Результат работы скрипта Результат работы скрипта

Спасибо

  • А можно узнать, каким боком этот вопрос касается этого? А то я то ли тупой.. То ли не так что-то понял..(но, подозреваю первый вариант) – InDevX Jun 14 '19 at 07:48
  • Аа... У вас данные с одной таблицы генерируют html и вы эти же данные в другую записываете, что ли? – InDevX Jun 14 '19 at 07:51
  • Заголовок не имеет никакого отношения к вопросу – Ипатьев Jun 14 '19 at 07:52
  • Ну или по крайней мере тут два вопроса. И я бы на месте автора сначала удивился, почему в бд вообще ничего не записывается. – Ипатьев Jun 14 '19 at 07:53
  • а потом уже задавал ужасно сложный вопрос, как сделать условие чтобы проверить на пустоту несколько переменных – Ипатьев Jun 14 '19 at 07:53
  • Я и удивился, поэтому, собственно, и спросил сюда. У меня скрипт никаких ошибок не выдает, я смотрел отладку. Думал что это из-за того, что строка вся пустая, поэтому он не обрабатывается дальше. – Norbert Yuhas Jun 14 '19 at 08:24
  • InDevX, у меня данные тянутся из AD и должны писаться в Mysql. Табличка html добавлена чтоб понимать работает скрипт или нет. Он работает, данные забирает, генерирует html, но не записывает в mysql – Norbert Yuhas Jun 14 '19 at 08:27
  • И какова логика этот "не обрабатывается дальше"? БД вставляет строку, смотрит - там все значения пустые, и убивает пхп скрипт? – Ипатьев Jun 14 '19 at 08:46
  • Если запрос не выполняется, значит была ошибка. чтобы посмотреть ошибку, надо прочесть ответ на прилинковынный вопрос. – Ипатьев Jun 14 '19 at 09:04
  • Данные в таблицу пишутся, слетел столбец id, исправляется так: alter table addressbook MODIFY id int(9) NOT NULL auto_increment; Теперь буду думать как удалить пустые строки. Вернее, удалять строку если в ней нет значений. Спасибо – Norbert Yuhas Jun 14 '19 at 09:19

0 Answers0