Подскажите пожалуйста как перенести данные из таблицы-html в БД Таблица получается путем считывания данных из .xls файла(библиотека phpExcel) сам скрипт считывания Код (PHP): <?php set_include_path(get_include_path() . PATH_SEPARATOR . 'Z:/home/localhost/www/PhpExcel/Classes/'); require_once 'PHPExcel/IOFactory.php'; $objPHPExcel = PHPExcel_IOFactory::load("C:/Documents and Settings/Admin/Рабочий стол/tt.xls"); $objPHPExcel->setActiveSheetIndex(0); $aSheet = $objPHPExcel->getActiveSheet(); echo '<table border="1" >'; //echo '<thead>'; //получим итератор строки и пройдемся по нему циклом foreach ($aSheet->getRowIterator() as $row) { echo "<tr>\r\n"; //получим итератор ячеек текущей строки $cellIterator = $row->getCellIterator(); //пройдемся циклом по ячейкам строки foreach ($cellIterator as $cell) { //и выведем значения echo "<td>" . $cell->getCalculatedValue() . "</td>"; //echo '</thead>'; } echo "<tr>\r\n"; } echo '</table>'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> </body> </html>
...можно немного подробней...я не понимаю как данные собрать в массив, чтобы потом, при переносе в БД каждая запись была в соответствующем ей столбце...
Код (PHP): $array = array(); foreach ($aSheet->getRowIterator() as $row) { //echo "<tr>\r\n"; //получим итератор ячеек текущей строки $cellIterator = $row->getCellIterator(); //пройдемся циклом по ячейкам строки $line = array(); foreach ($cellIterator as $cell) { //и выведем значения //echo "<td>" . $cell->getCalculatedValue() . "</td>"; $line[] = $cell->getCalculatedValue(); //echo '</thead>'; } $array[]=$line; //echo "<tr>\r\n"; } var_dump($array);
Проблема в том, что здесь идет считывание всех строк, а мне нужно чтобы считывало начиная со 2(названия столбцов в таблице excel не нужно они такие же как в таблице БД, в которую я и хочу добавить записи из .xls файла) и сам запрос на добавление будет такой? Код (Text): $query = "INSERT INTO t (name, old, ves, date) VALUES ('".$line."')"; mysql_query ( $query ); или что нужно использовать в качестве Код (Text): VALUES(....)
Спасибо)разобрался правда по-другому,но вот появился новый вопрос реально ли тоже самое сделать, если база данных состоит из нескольких таблиц?
ну ты на выходе получил массив, дальше бесконечное поле деятельности, хоть в одну таблицу, хоть в десяток...это уже дело вкуса...
сейчас как-то и представить не могу как сделать, чтобы часть записей из массива ушла в одну таблицу, часть в другую....(((если не сложно подскажите..
как вставлять картинку на этом форуме не пойму...где вложения?подскажите хочу выложить вид таблицы бд...
http://webadequate.ru/rabota-s-bd-mysql/15-normalizaciya-obektov-v-mysql.html вот...без нее же нельзя обойтись?
херня там написана. если следовать такой логике, то правильно сделать "четвертую нормальную форму". а не писать один товар два раза в одну таблицу. то, что ты задумал - правильно. но ты не объяснил чего там у тебя и как и что требуется в итоге. так что ничего посоветовать не могу.
ну мне по сути просто нужно подсказать как из массива раскидать данные по разным таблицам....как задать такие критерии, чтобы часть данных ушла в 1, часть во 2, часть в 3 таблицы?
я тебя понял. библиотека. в ней: 1. клиенты - она существует для них. 2. книги - описание книги и НОМЕР автора, количество книг и т.п. 3. авторы книг 4. Таблица где номер клиента, номер книжки и две даты - это кто что когда взял и когда должен вернуть. 5.... и др - шкафы, где лежат книги, соотв тут можно задать его местоположение и номер и вписать номер в таблицу с книгами... и т.п. тут можно уже много чело плодить. Можно дойти до 30 таблиц легко. Ввести очередь, заявки на редкие книги, штрафы за просрочку, историю, когда кто и что брал... короче, ты понял. обычно стремятся делать так.
Спасибо...еще такой вопрос, нужно импортировать данные из бд в excel, но не все, а только результат поиска и чтобы этот результат еще и отобразился на html странице, вот код, но что то не хочет работать....подскажите что не так? Код (Text): <?php $filename = 'tt.xls'; /* Соединение, выбор БД */ $db = mysql_connect("localhost", "rau2", ""); mysql_select_db("baza2", $db); mysql_query("SET NAMES UTF-8"); $query = "SELECT * FROM t WHERE UPPER (date) LIKE '%".strtoupper($_POST['date'])."%'"; $res = mysql_query( $query,$db ) or die("Запрос ошибочный"); echo '<h2>База</h2>'; echo '<table border="1" cellpadding="2" cellspacing="0">'; echo '<tr><th>ID</th><th>Имя</th><th>Возраст</th><th>Вес</th><th>Дата</th><th>Ред.</th><th>Удл.</th></tr>'; $row = mysql_fetch_array($res); while ( $row = mysql_fetch_array( $res ) ) { echo '<tr>'; echo '<td>'.$row['id'].'</td>'; echo '<td>'.$row['name'].'</td>'; echo '<td>'.$row['old'].'</td>'; echo '<td>'.$row['ves'].'</td>'; echo '<td>'.$row['date'].'</td>'; echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=editform&id='.$row['id'].'">Ред.</a></td>'; echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$row['id'].'">Удл.</a></td>'; echo '</tr>'; } echo '</table>'; echo '</br></br><td><button type="button" onClick="history.back();">Отобразить всю базу данных</button></td>'; require_once 'Z:/home/localhost/www/PhpExcel/Classes/PHPExcel.php'; $phpExcel = new PHPExcel(); for($i = 2;$row = mysql_fetch_array($res);$i++) { $foo = $phpExcel->getActiveSheet()->setCellValue('A1', 'Имя'); $foo = $phpExcel->getActiveSheet()->setCellValue('B1', 'Возраст'); $foo = $phpExcel->getActiveSheet()->setCellValue('C1', 'Вес'); $foo = $phpExcel->getActiveSheet()->setCellValue('D1', 'Дата'); $foo = $phpExcel->getActiveSheet()->setCellValue('A'.$i, $row['name']); $foo = $phpExcel->getActiveSheet()->setCellValue('B'.$i, $row['old']); $foo = $phpExcel->getActiveSheet()->setCellValue('C'.$i, $row['ves']); $foo = $phpExcel->getActiveSheet()->setCellValue('D'.$i, $row['date']); } $phpExcel = PHPExcel_IOFactory::createWriter($phpExcel, 'Excel5'); $phpExcel->save($filename); $data = file_get_contents($filename); // Generate the server headers if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) { header('Content-Type: application/vnd.ms-excel;'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header("Content-Transfer-Encoding: binary"); header('Pragma: public'); header("Content-Length: ".strlen($data)); } else { header('Content-Type: application/vnd.ms-excel;'); header('Content-Disposition: attachment; filename="'.$filename.'"'); header("Content-Transfer-Encoding: binary"); header('Expires: 0'); header('Pragma: no-cache'); header("Content-Length: ".strlen($data)); } exit($data); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> </body> </html>
А если дочитать хотя бы до середины, то можно увидеть: Кхм, простите, а Вам знаком термин атомарность данных? Ничего против Вас не имею, но к себе ни программистом, ни проектировщиком, я бы Вас не взял. Ибо именно такие вопросы я и задаю на сообеседованиях.