Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Работа со строками


Автор: vintyara 23.2.2006, 16:08
Привет АЛЛ smile !

Передо мной такая задача -

Есть файл. В нём еть длиннющая строка.
Сразу приведу пример :

"vint;110;40;0;0;1;0;none;0;0;0;0;0;0;odessa"

Вот из такого фалика надо данные перенести в БД.
В БД есть много столбцов.
Например первые столбцы таблицы - имя, рост, вес и т.п.
В результате должна получиццо табличка, в которой
в стлбце имя будет vintyara, рост - 110 и вес - 40.

Вопрос в том - как это зделать smile
Единственное что я знаю наверняка - задача облегчена тем, что
известен разделитель - ; .

Подскажите как реализовать !

smile

Автор: CTAPbIuMABP 23.2.2006, 16:21
Код

$a ="vint;110;40;0;0;1;0;none;0;0;0;0;0;0;odessa";
$array = explode(";",$a);


а масив уже в БД сам суй как тебе угодно

Автор: vintyara 23.2.2006, 18:10
smile

А можно чуть пополнее пример ? Я конечно понял что имеется ввиду, но что-то не могу написать smile

Автор: CTAPbIuMABP 23.2.2006, 18:48
Код

$file = file("base.txt");
$count = count($file);

for ($i=0;$i<$count;$i++)
{
$a = explode(";",$file[$i]);
$sql = mysql_query("INSERT INTI `table` VALUES ('{$a['0']}', '{$a['1']}', '{$a['2']}', '{$a['3']}'...'{$a['n']}')");
}

Автор: Guedda 23.2.2006, 18:49
Код

$a ="vint;110;40;0;0;1;0;none;0;0;0;0;0;0;odessa";
$array = explode(";",$a);

В переменной $array будут следующие значения:
Код

$array[0] = "vint";
$array[1] = "110";
$array[2] = "40";
// и так далее


Потом все это пихаешь в таблицу, которая есть, допустим:
Код

mysql_query('INSERT INTO my_table(name, mam, dam, fram) 
  VALUES(\'$array[0]\', \'$array[1]\', \'$array[2]\')');

Автор: vintyara 23.2.2006, 19:02
очень большой пасиба ! сейчас буду пробовать !

Автор: vintyara 24.2.2006, 13:19
Я дико извиняюсь - но у меня не работает оно smile
Для начала хочу это дело на экран вывести.
Вот мой код :

Код

<?php
$file="vint;110;40;0;0;1;0;none;0;0;0;0;0;0;odessa";
$count = count($file);
for ($i=0;$i<$count;$i++)
{
$a = explode(";",$file[$i]);
echo ''.$a['i'].'';
}
?>


Ничего не выводит smile

Автор: -=Ustas=- 24.2.2006, 13:25
Еще бы smile
Код

<?php

$file = "vint;110;40;0;0;1;0;none;0;0;0;0;0;0;odessa";
$a  = explode(";", $file);

for ($i = 0; $i < sizeof($a); $i++) {
    echo $a[$i]."<br>";
}

?>

Автор: Guedda 24.2.2006, 13:32
Ты просто совместил две несовместимости:
В первом примере:
Код

$file=file("base.txt");

создает массив из строк файла.
Когда ты делаешь так:
Код

$file = "vint;110;40;0;0;1;0;none;0;0;0;0;0;0;odessa";

Ты просто создаешь строку.
В примере, который ты сделал, необходимо переделать, и получится что-то такое:
Код

<?php
$file="vint;110;40;0;0;1;0;none;0;0;0;0;0;0;odessa";
//$count = count($file); - это совершенно не нужно.
//for ($i=0;$i<$count;$i++)
//{
$a = explode(";",$file);
for($i=0;$i<sizeof($a);$i++) echo "$a[$i]<br />";
//}
?>

Это проще будет.

Автор: vintyara 24.2.2006, 13:54
да, со строкой работает. а вот с файлом - что-то не очень -

Код

$file = file("example.csv");
$count = count($file);
for ($i=0;$i<$count;$i++)
{
    $a  = explode(";", $file);
    echo $a[$i]."<br>";
}


Выводит на экран

Array надпись smile

Автор: Guedda 24.2.2006, 13:58
Дык неправильно делаешь:
Код

$file=file("example.csv");
$count=count($file);
for ($i=0;$i<$count;$i++)
{
  $a  = explode(";", $file[$i]);
  for($j=0;$j<sizeof($a);$j++) 
    echo $a[$j]."<br>";
}

И все будет работать....
Можно и плюсиком наградить smile

Автор: -=Ustas=- 24.2.2006, 14:01
Цитата(Guedda @ 24.2.2006, 13:58 Найти цитируемый пост)
Можно и плюсиком наградить 

smile
Ты чё, ради плюсов здесь общаешься!!!

Автор: vintyara 24.2.2006, 14:19
Всем пасиба smile !! Работает smile !!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)