Приветствую всех, хотелось бы знать как будет правильней и грамотней писать вывод строк из БД. Код (Text): $query = "SELECT * FROM table ORDER BY id"; $sql = mysql_query($query); while($var = mysql_fetch_array($sql)) { echo "<tr><td>$var1</td><td>$var2</td><td>$var3</td><td>$var4</td><td>$var5</td><td></tr>"; } или Код (Text): $query = "SELECT * FROM table ORDER BY id"; $sql = mysql_query($query); while($var = mysql_fetch_array($sql)) { $Setvar .="<tr><td>$var1</td><td>$var2</td><td>$var3</td><td>$var4</td><td>$var5</td><td></tr>"; } echo $Setvar; или так Код (Text): $query = "SELECT * FROM table ORDER BY id"; $sql = mysql_query($query); while($var = mysql_fetch_array($sql)) { $Setvar .='<tr><td>'. $var1 .'</td><td>'. $var2 .'</td><td>'. $var3 .'</td><td>'. $var4 .'</td><td>'. $var5 .'</td><td></tr>'; } echo $Setvar;
Это для примера просто название. Сама собой полученные из MySQl из таблицы "table". Чтобы изменилось, если бы я написал переменную так $var[id] И.Т.Д?
ты должен сформировать массив, каждая строка которого - ассоциативный массив (ключи в нём не цифры, а слова), в котором будет информация по сущностям, по названиям. А айдишники массива - первичные ключи сущностей. короче. $users = array( 7 => array('name'=>'Вася', 'color'=>'red'), 12 => array('name'=>'Петя','color'=>'green'), );
Неужели получить данные из DB. Затем загнать их в масив, а затем вывести в html, будет быстрее и правильнее чем по мере получении из базы выводить в html. Мне кажится что в первом случае требуется больше кода и ресурсов, увы для того чтобы реально понять как правильно не хватает опыта.
Я правильно понял делаю так: Код (Text): $table1 = array( $query = "SELECT * FROM table ORDER BY id"; $sql = mysql_query($query); while($var = mysql_fetch_array($sql)) { $var[id] = aray('<tr><td>'. $var[name] .'</td><td>'. $var[tema] .'</td><td>'. $var[more] .'</td><td>'. $var[text] .'</td></tr>';), } );
блин исправил не правильно. так $table1 => array( $query = "SELECT * FROM table ORDER BY id"; $sql = mysql_query($query); while($var = mysql_fetch_array($sql)) { $var[id] => array( name=>$var[name], tema=>$var[tema], more=>$var[more], text=>$var[text]), } ); Можно подробнее про смысл подобного усложнения кода на мой взгляд. Ведь там где мне нужно будет выводить данные мне придётся практически также как до этого я делал выводить переменные вместе с тегами html. Я не могу понять разницу что меняет то что я из базы загоню в массив или бы я сразу же выводил в строку таблицы заполняя ее переменными.
Так тоже неправильно. Читай внимательно. Пересобери в новый массив. В новый. И не забывай блин кавычки! А то без кавычек и без доллара - это всё константы. Которых у тебя нет.
Кавычками понятно, Код (Text): $table1 => array( $var[id] => array( 'name'=>'$var[name]', 'tema'=>'$var[tema]', 'more'=>'$var[more]', 'text'=>'$var[text]') ); а вот как загнать из базы в масив строку за строкой не могу въехать.
Код (PHP): function getMessages($id) { $id = (int)$id;//защита от инъекций $messages = []; //прими новый синтаксис массива всем сердцем $sql = mysql_query("SELECT * FROM table ORDER BY $id"); while ($row = mysql_fetch_array($sql)) { $messages[$row['id']] = ['from' => $row['name'], 'theme' => $row['theme'], 'text' => $row['text']]; } return $messages; }
нет, брат. Оно вернёт массив. А этот массив надо передать в функцию отрисовки. и отрисовать твою табличку. тогда читать и править код будет легко.
Сечас попробовал Код (Text): function getMessages($id) { $id = (int)$id;//защита от инъекций $messages = []; //прими новый синтаксис массива всем сердцем $sql = mysql_query("SELECT * FROM table ORDER BY $id"); while ($row = mysql_fetch_array($sql)) { $messages[$row['id']] = ['from' => $row['name'], 'theme' => $row['theme'], 'text' => $row['text']]; } return $messages; } print_r getMessages(); не прет вывод масива говорить что Parse error: syntax error, unexpected '[' in \home\tr.bu\proba.php on line 3
ок, а как быть с хостенгом я так понимаю не факт чтотам сменят. Новый синтаксис масива работает только на 5.3 ?
Сделал так Код (Text): function getMessages($id) { $id = (int)$id;//защита от инъекций $messages = array(); //прими новый синтаксис массива всем сердцем $sql = mysql_query("SELECT * FROM table ORDER BY $id"); while ($row = mysql_fetch_array($sql)) { $messages($row['id']) = array('from' => $row['name'], 'theme' => $row['theme'], 'text' => $row['text']); } return $messages; } print_r getMessages(); Получаю "Can't use function return value in write context in \home\tr.bu\proba.php on line 6" Что не так?