Здравствуйте. ПЕРВЫЙ ВОПРОС Ошибки смещения массива data. У меня есть функция которая парсит csv фаил, парсить файл она должна со второй строки PHP: function writeCSV($batchNumber,$pdo){ $count=0; $handle = fopen("33-09-17.brp", "r");//Открывается CSV фаил while (($data =fgetcsv($handle, 1000, ",")) !== FALSE) { //Массив пишется в переменную $count++; if($count>1){//Парсинг начинается со второй строки $sql='UPDATE '.$batchNumber.' SET iol='.$data[3].' , mtf='.$data[5].' WHERE id='.$data[0].' ';//Изменения значений в строках таблицы на значения взятые из CSV файла $pdo->exec($sql);//Отправка SQL запроса } } fclose($handle);//Закрытие файла return $count; } Вроде бы всё понятно, но большое волосатое НО притаилось за углом)) Всё вроде так и работает как я описал. Фаил парсится, значения изменяются но вылазят ошибки которые указывают на косяк в переменных $data[3] и $data[5] и я не понимаю, что с ними не так) может кто подскажет в чём может быть дело?) ВОПРОС ВТОРОЙ Связан с этой же функцией мне необходимо вернуть конечное значение $count вроде тоже всё понятно я вызываю по очереди необходимые мне функции и присваиваю значение функции переменной, а потом пытаюсь её вывести, но как ты можешь догадаться оно не выводится))*/ PHP: reateNewTable($batchNumber,$pdo); writeZero($batchNumber,$Made,$pdo); $result=writeCSV($batchNumber,$pdo); echo $result; ВОПРОС ТРЕТИЙ Третий вопрос связан с волшебной магией чисел)) У меня есть форма в которой есть текстовые поля и кнопки HTML: Изготовлено, шт. <input type="input" id="made" name="made" onclick="" value="<?php echo $Made ?>" class="textBox_div"></input> Следующий ИОЛ <input type="input" id="nextIOL" name="nextIOL" value="0" class="textBox_div"></input> <button class="button_div" onclick="increment(); return false">Далее</button> Есть JS функция которая инкрементирует по нажатию кнопки значение value поля "следующий ИОЛ" Код (Javascript): function increment (){ if(made.value >= nextIOL.value){ nextIOL.value++; } } /*Инкрементирование должно продолжаться до того момента пока значение value поля "следующий ИОЛ" не достигнет значения value поля "Изготовлено, шт." всё вроде бы нормально)) но есть опять одно но)) например значения поля "Изготовлено, шт." равно 200 я жму на кнопку значение поля "следующий ИОЛ" увеличивается но не до 200, а до 3)) если я изменяю функцию */ Код (Javascript): function increment (){ if(200 > nextIOL.value){ nextIOL.value++; } } То всё отлично работает) первое о чём я подумал это, то что дело в типе данных переменной поэтому в php скрипте я прописал следующую строку PHP: $Made=$_REQUEST['made']; settype ($Made,"integer"); Теперь значение переменной int но это ситуацию не исправило)) Вопрос в чём может быть дело?) Скрин к первому вопросу прилагается) Может ещё кто по поводу двух оставшихся ошибок на скрине подскажет) Буду благодарен за конкретные примеры с кодом и комментариями) Я только учу программирование так, что советы старших товарищей очень благотворно сказываются на моём обучение)
Ну значит в csv не во всех строках есть значения этих столбцов. --- Добавлено --- Учись отлаживать. По скрину, у тебя XDEBUG стоит, ну так и протрассируй в IDE эту функцию
Во всех есть) я файл смотрел) реально не понятно на что он жалуется блин) Я в notepad++ пишу) у меня ещё eclipse стоит, но я им не пользовался) может порекомендуешь какую нить IDE?) По другим вопросам можешь помочь?)
IDE - NetBeans или phpStorm. Надо посмотреть, как php твой файл видит, а не как ты его видишь Отлаживать надо, на глазок я не вижу.
По добавлению в БД - вангую что там поля строковые в БД а ты заносишь без кавычек (чего уж там говорить об SQL иньекциях - защиты тоже нет) --- Добавлено --- преобразовывать типы не в пыхе надо - а в js ну и дебажить, дебажить, проверять
В БД поля с плавающей точкой) вот функция создающая таблицу PHP: function createNewTable($batchNumber,$pdo){ $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'; $pdo->exec($sql); } так а в js то зачем? судя по эксперименту когда я заменял переменную в if на число всё работает) хотя может я чего не понимаю) если не сложно покажи, что ты имел в виду на примере кода) вопрос к вам как к старшим товарищам, что нужно для отладки?) на что обратить внимание и т.д)
А на скрине не текст ошибок?) парни бьюсь с xdebug и eclipce) сессия запускается, но вываливается весь скрипт, хотя в настройках стоит галочка Break at first Line) в чём может быть дело?) третий вопрос кстати разрешился) но теперь с xdebug вожусь по вашему совету)
ктож скриншоты смотрит..... да и мелко - неохота глаза ломать --- Добавлено --- а так - там английским четко сказано в чем дело и видно что у тебя некоторые подставляемые данные пустые ! --- Добавлено --- отсюда же и вторая ошибка - скрипт ломается - фтал ерор - функция прерывается ничего не отдавая
так я понимаю, что там чётко сказано, что ошибка в data[3] и data[5] я не понимаю почему она возникает блин) csv файл нормальный, функция своё грязное дело делает изменяет данные в таблице всё отлично как бэ, но при этом ругается на эти переменные) и про вторую ошибку я тоже знаю, что она следствие первых двух) глянь если не сложно функцию writeCSV может я в коде где нахимичил, может подскажешь чего) я думаю если её поправить то и echo $result заработает как надо) --- Добавлено --- И чего ты вангуешь, если в начале темы список вопросов с кусками кода и скрин с ошибками)
PHP: $sql="UPDATE $batchNumber SET iol='{$data[3]}' , mtf='{$data[5]}' WHERE id={$data[0]}"; сделай так прочитай про кавычки... одинарные, двойные а php и MySQL - в жизни пригодится а так тебе еще в первом посте сказали так оно и есть
Спасибо за участие) сейчас попробую) я тут xdebug к бобам подключил) пол дня блин маялся) офигенный инструмент) теперь любую инфу могу выдать)))
Ты был абсолютно прав, проблема именно в csv файле) спасибо за дельный совет) Всем спасибо за помощь и поддержку) тема закрыта.