За последние 24 часа нас посетили 69078 программистов и 5411 роботов. Сейчас ищут 1862 программиста ...

Волшебная магия чисел и не только

Тема в разделе "PHP для новичков", создана пользователем Nikolai_G, 12 окт 2017.

  1. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    Здравствуйте.
    ПЕРВЫЙ ВОПРОС
    Ошибки смещения массива data. У меня есть функция которая парсит csv фаил, парсить файл она
    должна со второй строки
    PHP:
    1. function writeCSV($batchNumber,$pdo){          
    2. $count=0;
    3. $handle = fopen("33-09-17.brp", "r");//Открывается CSV фаил
    4. while (($data =fgetcsv($handle, 1000, ",")) !== FALSE) { //Массив пишется в переменную
    5.      $count++;  
    6.         if($count>1){//Парсинг начинается со второй строки
    7.   $sql='UPDATE '.$batchNumber.' SET iol='.$data[3].' , mtf='.$data[5].' WHERE id='.$data[0].' ';//Изменения значений в строках таблицы на значения взятые из CSV файла
    8.      $pdo->exec($sql);//Отправка SQL запроса    
    9.         }  
    10. }
    11.         fclose($handle);//Закрытие файла
    12.         return $count;
    13.         }
    Вроде бы всё понятно, но большое волосатое НО притаилось за углом)) Всё вроде так и работает как
    я описал.
    Фаил парсится, значения изменяются но вылазят ошибки которые указывают на косяк в переменных $data[3] и $data[5]
    и я не понимаю, что с ними не так) может кто подскажет в чём может быть дело?)

    ВОПРОС ВТОРОЙ
    Связан с этой же функцией мне необходимо вернуть конечное значение $count вроде тоже всё понятно
    я вызываю по очереди необходимые мне функции и присваиваю значение функции переменной, а потом
    пытаюсь её вывести, но как ты можешь догадаться оно не выводится))*/

    PHP:
    1. reateNewTable($batchNumber,$pdo);
    2. writeZero($batchNumber,$Made,$pdo);
    3. $result=writeCSV($batchNumber,$pdo);
    4. echo $result;
    ВОПРОС ТРЕТИЙ
    Третий вопрос связан с волшебной магией чисел)) У меня есть форма в которой есть текстовые поля и кнопки
    HTML:
    1. Изготовлено, шт.
    2.     <input type="input" id="made" name="made" onclick="" value="<?php echo $Made ?>"  class="textBox_div"></input>
    3.    
    4.     Следующий ИОЛ
    5.       <input type="input" id="nextIOL" name="nextIOL" value="0"  class="textBox_div"></input>  
    6.     <button class="button_div" onclick="increment(); return false">Далее</button>
    7.  
    Есть JS функция которая инкрементирует по нажатию кнопки значение value поля "следующий ИОЛ"
    Код (Javascript):
    1. function increment (){
    2.     if(made.value >= nextIOL.value){
    3.     nextIOL.value++;  
    4.     }
    5. }
    /*Инкрементирование должно продолжаться до того момента пока значение value поля "следующий ИОЛ"
    не достигнет значения value поля "Изготовлено, шт." всё вроде бы нормально)) но есть опять одно но))
    например значения поля "Изготовлено, шт." равно 200 я жму на кнопку значение поля "следующий ИОЛ"
    увеличивается но не до 200, а до 3)) если я изменяю функцию */
    Код (Javascript):
    1. function increment (){
    2.     if(200 > nextIOL.value){
    3.     nextIOL.value++;  
    4.     }
    5. }
    То всё отлично работает) первое о чём я подумал это, то что дело в типе данных переменной поэтому
    в php скрипте я прописал следующую строку
    PHP:
    1. $Made=$_REQUEST['made'];
    2. settype ($Made,"integer");
    Теперь значение переменной int но это ситуацию не исправило)) Вопрос в чём может быть дело?) Скрин к первому вопросу прилагается) Может ещё кто по поводу двух оставшихся ошибок на скрине подскажет) Буду благодарен за конкретные примеры с кодом и комментариями) Я только учу программирование так, что советы старших товарищей очень благотворно сказываются на моём обучение)
     

    Вложения:

  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну значит в csv не во всех строках есть значения этих столбцов.
    --- Добавлено ---
    Учись отлаживать. По скрину, у тебя XDEBUG стоит, ну так и протрассируй в IDE эту функцию
     
  3. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    Во всех есть) я файл смотрел) реально не понятно на что он жалуется блин) Я в notepad++ пишу) у меня ещё eclipse стоит, но я им не пользовался) может порекомендуешь какую нить IDE?) По другим вопросам можешь помочь?)
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    IDE - NetBeans или phpStorm. Надо посмотреть, как php твой файл видит, а не как ты его видишь :) Отлаживать надо, на глазок я не вижу.
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    По добавлению в БД - вангую что там поля строковые в БД а ты заносишь без кавычек (чего уж там говорить об SQL иньекциях - защиты тоже нет)
    --- Добавлено ---
    преобразовывать типы не в пыхе надо - а в js ну и дебажить, дебажить, проверять
     
  6. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    В БД поля с плавающей точкой) вот функция создающая таблицу
    PHP:
    1. function createNewTable($batchNumber,$pdo){
    2. $sql='CREATE TABLE '.$batchNumber.'(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, iol DOUBLE, mtf DOUBLE, rejected1 TEXT, rejected2 TEXT, rejected3 TEXT, rejected4 TEXT )DEFAULT CHARACTER SET utf8 ENGINE=InnoDB';
    3. $pdo->exec($sql);
    4. }
    так а в js то зачем? судя по эксперименту когда я заменял переменную в if на число всё работает) хотя может я чего не понимаю) если не сложно покажи, что ты имел в виду на примере кода) вопрос к вам как к старшим товарищам, что нужно для отладки?) на что обратить внимание и т.д)
     
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    А текст ошибок нельзя нам? Вангуем дальше? Не нравится разделитель дробный
     
  8. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    А на скрине не текст ошибок?) парни бьюсь с xdebug и eclipce) сессия запускается, но вываливается весь скрипт, хотя в настройках стоит галочка Break at first Line) в чём может быть дело?) третий вопрос кстати разрешился) но теперь с xdebug вожусь по вашему совету)
     
  9. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    снес эклипс) решил бобы поставить))
     
  10. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    ктож скриншоты смотрит..... да и мелко - неохота глаза ломать
    --- Добавлено ---
    а так - там английским четко сказано в чем дело
    и видно что у тебя некоторые подставляемые данные пустые !
    --- Добавлено ---
    отсюда же и вторая ошибка - скрипт ломается - фтал ерор - функция прерывается ничего не отдавая
     
  11. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    так я понимаю, что там чётко сказано, что ошибка в data[3] и data[5] я не понимаю почему она возникает блин) csv файл нормальный, функция своё грязное дело делает изменяет данные в таблице всё отлично как бэ, но при этом ругается на эти переменные) и про вторую ошибку я тоже знаю, что она следствие первых двух) глянь если не сложно функцию writeCSV может я в коде где нахимичил, может подскажешь чего) я думаю если её поправить то и echo $result заработает как надо)
    --- Добавлено ---
    И чего ты вангуешь, если в начале темы список вопросов с кусками кода и скрин с ошибками)
     
  12. acso

    acso Активный пользователь

    С нами с:
    15 апр 2010
    Сообщения:
    150
    Симпатии:
    25
    Адрес:
    Одесса
    Бьюсь об заклад - проблема в пунктуации!)
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    Просто идеяльное место для рыбалки
     
    acso нравится это.
  14. acso

    acso Активный пользователь

    С нами с:
    15 апр 2010
    Сообщения:
    150
    Симпатии:
    25
    Адрес:
    Одесса
    Как вставить оффтоп - не знаю( Пиленгаса за 3 часа десять килов натаскал)
     
  15. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    PHP:
    1. $sql="UPDATE $batchNumber SET iol='{$data[3]}' , mtf='{$data[5]}' WHERE id={$data[0]}";
    сделай так
    прочитай про кавычки... одинарные, двойные а php и MySQL - в жизни пригодится
    а так тебе еще в первом посте сказали
    так оно и есть
     
    Nikolai_G нравится это.
  16. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    Спасибо за участие) сейчас попробую) я тут xdebug к бобам подключил) пол дня блин маялся) офигенный инструмент) теперь любую инфу могу выдать)))
     
  17. Nikolai_G

    Nikolai_G Новичок

    С нами с:
    10 окт 2017
    Сообщения:
    29
    Симпатии:
    0
    Ты был абсолютно прав, проблема именно в csv файле) спасибо за дельный совет) Всем спасибо за помощь и поддержку) тема закрыта.