Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скрипт для переписи 2
 
 автор: Бамси   (23.03.2006 в 00:15)   письмо автору
 
 


так у тебя есть список всех миров где-нибудь???
в таблице users как я понимаю, лежат данные о зареганых пользователях и их пренадлежность к какому-то миру... так ?
если так, то это наверно не пойдет... мы же не узнаем о существовании мира blablabla, если в нем не будет зареганых усеров...

вобщем нужен спивок всех миров :)
(и все-таки заведи другую тему... типа "Скрипт для переписи 2" а то долго грузится уже...


А что ты предлогаешь создать еще одну таблицу с мирами?

   
 
 автор: Бамси   (23.03.2006 в 02:25)   письмо автору
 
   для: Бамси   (23.03.2006 в 00:15)
 

Немного пораскинул мозгами :)
Можно тогда в таблице users заместо миров присвоить каждому миру цифры и запрос на другую таблицу.
И создать еще одну таблицу уже с мирами, где они будут брать название миров.

   
 
 автор: kasmanaft   (23.03.2006 в 15:54)   письмо автору
 
   для: Бамси   (23.03.2006 в 02:25)
 

именно так и надо сделать :))
а в той таблице можно хранить инфу о мирах... например описание (историю - если покатит :))...

   
 
 автор: Бамси   (23.03.2006 в 16:10)   письмо автору
 
   для: kasmanaft   (23.03.2006 в 15:54)
 

Ну допусти я это зделал, теперь есть еще одна таблица Name: World в тей хроняться только ID,Name мира..
А в таблице Users за место названия я поставил цыфры...
И что дальше делать?

   
 
 автор: kasmanaft   (23.03.2006 в 16:36)   письмо автору
 
   для: Бамси   (23.03.2006 в 16:10)
 

тааак... вот попробуй... (если честно, не уверен, что будет работать :))

<?
include "config.php";
$query "select * from users where hide=0 order by CharsNick ASC";
$thm mysql_query($query);

$query "SELECT * FROM world";
if (
$wn = @mysql_query($query))
{
        while (
$world mysql_fetch_array($wn))
        {
                
$id $world['id'];
                
$worlds[$id] = $world['name'];
        }
}
while (
$themes mysql_fetch_array($thm))
{
       
$CharsNick trim($themes['CharsNick']);
       
//  $CharsWorld - это теперь цифры, да?
       
$CharsWorld trim($themes['CharsWorld']);
       
$worlds [$CharsWorld][] = "$CharsNick";
}
echo 
"<table border=1>";
foreach (
$worlds as $world_id => $arr)
{
         echo 
"<tr><td>Мир $worlds[$world_id]";
         for (
$q 0$q count($worlds[$world_id]); $q++)
         {
              echo 
"<tr><td>".$worlds[$world_id][$q]."</td></tr>";
         }
         echo 
"</td></tr>";
}
echo 
"</table>";
?>


(пока опять в столбик :(

   
 
 автор: Бамси   (23.03.2006 в 17:31)   письмо автору
 
   для: kasmanaft   (23.03.2006 в 16:36)
 

За место мира пишет Мир Array.
И всеровно я не очень понимаю, как это потом будет все вставляться в уже существующие столбики? Пока он сам создает столбики с помощью инфы из БД

   
 
 автор: kasmanaft   (23.03.2006 в 17:51)   письмо автору
 
   для: Бамси   (23.03.2006 в 17:31)
 

в столбики ничего вставляться не будет... вставить туда чего-нибудь будет давольно таки трудно :))
счас еще ченить сболтну про Мир Array.

   
 
 автор: kasmanaft   (23.03.2006 в 17:54)   письмо автору
 
   для: kasmanaft   (23.03.2006 в 17:51)
 

если echo "<tr><td>Мир $worlds[$world_id]";
заменить на
echo "<tr><td>Мир ".$worlds[$world_id]; ???

страница все время будет заново генерироваться... а ничего вставляться никуда просто так не будет :)

   
 
 автор: Бамси   (23.03.2006 в 18:12)   письмо автору
 
   для: kasmanaft   (23.03.2006 в 17:54)
 

Я же ведь писал то что мне надо.
Столбики уже есть на том же HTML, и в них просто вставляються записи из БД, мне не надо чтоб он сам создавал столбики, а тоолько вставлял в них информацию из БД.

   
 
 автор: kasmanaft   (23.03.2006 в 18:14)   письмо автору
 
   для: Бамси   (23.03.2006 в 18:12)
 

а в чем проблема? почему бы не создать столбики заново?
а по-другому просто так не сделаешь... легче (и наверно рациональнее) будет поступить так...
(иначе ищи другого помощьника =) потому как я не знаю как сделать, то что ты хочешь ....

   
 
 автор: Бамси   (23.03.2006 в 18:37)   письмо автору
 
   для: kasmanaft   (23.03.2006 в 18:14)
 

Хе хе.
Просто так столбики появляються только из за записей в БД, что не есть очень хорошо :(
если echo "<tr><td>Мир $worlds[$world_id]";
заменить на
echo "<tr><td>Мир ".$worlds[$world_id]; ???
Сделал как ты просил, всеровно не работает.
Кстати Апач помойму настроил.
http://195.131.168.201/Perepis/spisok.php

   
 
 автор: kasmanaft   (23.03.2006 в 18:47)   письмо автору
 
   для: Бамси   (23.03.2006 в 18:37)
 

>Просто так столбики появляються только из за записей в БД
по-моему это наоборот хорошо... добавишь еще мирок, а скрптик тебе сам все сделает.. и не придется ковыряться в html, создавать таблицу и тд....

а вообще скрипт работает?? проблема только в "Мир Array" ???
или он вообще не работает?

   
 
 автор: Бамси   (23.03.2006 в 18:52)   письмо автору
 
   для: kasmanaft   (23.03.2006 в 18:47)
 

http://195.131.168.201/Perepis/spisok.php
Если хочешь могу даже FTP дать :)
Ну вообще... если это привести в порядок то тогда рботает :)
Можно чтоб столбики отображались по горизонтали, и чтоб было по 5 столбиков на экран.

   
 
 автор: kasmanaft   (23.03.2006 в 20:23)   письмо автору
 
   для: Бамси   (23.03.2006 в 18:52)
 

вот.. думаю так должно работать :)

<?
include "config.php";
$query "select * from users where hide=0 order by CharsNick ASC";
$thm mysql_query($query);

$query "SELECT * FROM world";
if (
$wn = @mysql_query($query))
{
        while (
$world mysql_fetch_array($wn))
        {
                
$id $world['id'];
                
$worlds[$id] = $world['name'];
        }
}
while (
$themes mysql_fetch_array($thm))
{
       
$CharsNick trim($themes['CharsNick']);
       
//  $CharsWorld - это теперь цифры, да?
       
$CharsWorld trim($themes['CharsWorld']);
       
$worlds [$CharsWorld][] = "$CharsNick";
}
echo 
"<table border=1><tr>";
foreach (
$worlds as $world_id => $arr)
{
         if (empty(
$wc)) $wc 1;
         
$wc++;
         echo 
"<td>Мир ".$arr."<br>";
         for (
$q 0$q count($worlds[$world_id]); $q++)
         {
              echo 
$worlds[$world_id][$q]."<br>";
         }
         echo 
"</td>";
         if ((
$wc%5) == 0) echo "</tr><tr>";
}
echo 
"</table>";
?>

а потом если что, можно и красоту сделать :) (когда скрипт будет работать нормально...

   
 
 автор: Бамси   (23.03.2006 в 20:29)   письмо автору
 
   для: kasmanaft   (23.03.2006 в 20:23)
 

Мир Array
Chesnok
Solker
Мир Array
masya

Всеровно Array.
Попробуй заодно на апач зайти, работает?

   
 
 автор: kasmanaft   (23.03.2006 в 21:03)   письмо автору
 
   для: Бамси   (23.03.2006 в 20:29)
 

ссылка твоя работает...

попробуй выполни вот это

<?php
include "config.php"
$query "SELECT * FROM world";
if (
$wn = @mysql_query($query))
{
        while (
$world mysql_fetch_array($wn))
        {
                
$id $world['id'];
                
$worlds[$id] = $world['name'];
                echo 
$world['id']." - ".$world['name']."<br>";
        }
}
?>


что получится??? по идее должно (но может быть ошибка здесь...
"номер мира - название"

   
 
 автор: бамси   (23.03.2006 в 21:51)   письмо автору
 
   для: Бамси   (23.03.2006 в 00:15)
 

Вообщем вернулся к первому варианту :)

<? 
include "config.php"
$query "select * from users where hide=0 order by CharsNick ASC"
$thm mysql_query($query); 

while(
$themes mysql_fetch_array($thm)) 

    
$CharsNick trim($themes['CharsNick']); 
    
$CharsWorld trim($themes['CharsWorld']); 
    
$worlds [$CharsWorld][] = "$CharsNick"

echo 
"<table border=1>"
foreach (
$worlds as $world_name => $arr


        echo 
"<tr><td>Мир $world_name"
        for (
$q 0$q count($worlds[$world_name]); $q++) 
        { 
              echo 
"<tr><td>".$worlds[$world_name][$q]."</td></tr>";
        } 
        echo 
"</td></tr>"


echo 
"</table>"
?>

Которые прекрастно работает, осталось только сделать чтоб столбики отображались в гор. линию, и по 5 столбиков на линии, если столбиков 6 то след столбик переноситься на след линию.
И тогда я буду безгранично ра и благодарен :D

   
 
 автор: kasmanaft   (24.03.2006 в 04:02)   письмо автору
 
   для: бамси   (23.03.2006 в 21:51)
 

ну как хочешь :) а возможно все дело было в том кусочке кода, который я приводил :)
(если все же еще не поздно вернуться, попробуй либо выполнить этот код, либо зайти в MySQL и выполни запрос оттуда... mysql лежит примерно здесь \usr\local\mysql4\bin... сначала напиши
use имя_твоей_базы_данных;
а потом
select * from world;
если второй ничего не даст, посмотри - может быть таблица не world завется?

ну а вот код, который ты просил...

<?
include "config.php";
$query "select * from users where hide=0 order by CharsNick ASC";
$thm mysql_query($query);

while(
$themes mysql_fetch_array($thm))
{
    
$CharsNick trim($themes['CharsNick']);
    
$CharsWorld trim($themes['CharsWorld']);
    
$worlds [$CharsWorld][] = "$CharsNick";
}
echo 
"<table border=1><tr>";
foreach (
$worlds as $world_name => $arr)
{

        if (empty(
$wc)) $wc 1;
        
$wc++;
        echo 
"<td>Мир $world_name <br>";
        for (
$q 0$q count($worlds[$world_name]); $q++)
        {
              echo 
$worlds[$world_name][$q]."<br>";
        }
        echo 
"</td>";
        if ((
$wc%5) == 0) echo "</tr><tr>";

}
echo 
"</tr></table>";
?>

   
 
 автор: Бамси   (24.03.2006 в 04:51)   письмо автору
 
   для: kasmanaft   (24.03.2006 в 04:02)
 

Вообщем тот скрипт тоже заработал :)
Просто я с таблицой ступил.
Только мне надо чтоб он это все делал не в одной таблице, а каждый столбик новая отдельная таблица. И между таблицами было растояние какоято. И если в одной линии 5 таблиц, то он переходит на новую строку ниже..

   
 
 автор: Бамси   (25.03.2006 в 01:47)   письмо автору
 
   для: Бамси   (24.03.2006 в 04:51)
 

Короче вот что намутил:

<? 
include "config.php"
$query "select * from users order by CharsNick ASC"
$thm mysql_query($query); 

while(
$themes mysql_fetch_array($thm)) 

    
$CharsNick trim($themes['CharsNick']); 
    
$CharsWorld trim($themes['CharsWorld']); 
    
$worlds [$CharsWorld][] = "$CharsNick"

echo 
"<table width=100%><tr><td>"
foreach (
$worlds as $world_name => $arr


//        if (empty($wc)) $wc = 1; 
//        $wc++;
    
if (empty($qs)) $qs 1;
    
$qs++;
        echo 
"<td valign=top><table border=1 width=100%><tr><td>Мир $world_name</td></tr><tr><td>"
        for (
$q 0$q count($worlds[$world_name]); $q++) 
        { 
              echo 
$worlds[$world_name][$q]."<br>"
        } 
        echo 
"</td></tr></table></td>"
    if (
$qs>1) echo "</td><td width=6.25%></td><td>";

//        if (($wc%5) == 0) echo "</tr><tr>"; 


echo 
"</td></tr></table>"
?>

То что получаеться можешь посомтреть на скриншоте в аттаче.
Значит мне надо чтоб после каждого столбика была строчка </td><td width=6.25%></td><td>, я так и сделал, if ($qs>1) echo "</td><td width=6.25%></td><td>"; потом чтоб она не ставил перед первым столбиком я поставил оператор IF, работает.
Но мне еще надо чтоб это не ставил перед 5 столбиком.
И так же сделать чтоб после 5 столбика оно переходило на след. строчку.

   
 
 автор: kasmanaft   (25.03.2006 в 08:33)   письмо автору
 
   для: Бамси   (25.03.2006 в 01:47)
 

>Но мне еще надо чтоб это не ставил перед 5 столбиком
я подумал, что после пятого....

тогда замени:

if ($qs>1) echo "</td><td width=6.25%></td><td>";

на:

//ну а если все-таки перед пятым, то замени %5 на %4...
if (($qs>1) && ($qs%5 != 0)) echo "</td><td width=6.25%></td><td>";

и после этой строчки добавь:

if (($qs%5) == 0) echo "</td></tr><tr><td>";

... ну и раз ты завел другую переменную.. то закоментированые строчки можно удалить...

   
 
 автор: Бамси   (25.03.2006 в 16:14)   письмо автору
 
   для: kasmanaft   (25.03.2006 в 08:33)
 

Хм.. получаеться все отлично :) Бооольшое спасибо. Щяс буду делать форму для дополнения, а потом самое сложное админку... :) Как только доделаю форму дополнения выложу сюда проверишь :)

ЗЫ Хотя нет не совсем все хорошо, нашел ошибку, в первой строчки 5-ый столбик не отображаеться, хотя во второй строчки, третьей.... и т.д. все 5 столбиков отображаються.


<? 
include "config.php"
$query "select * from users order by CharsNick ASC"
$thm mysql_query($query); 

while(
$themes mysql_fetch_array($thm)) 

    
$CharsNick trim($themes['CharsNick']); 
    
$CharsWorld trim($themes['CharsWorld']); 
    
$worlds [$CharsWorld][] = "$CharsNick"

echo 
"<table width=100%><tr><td>"
foreach (
$worlds as $world_name => $arr

    if (empty(
$qs)) $qs 1;
    
$qs++;
        echo 
"<td valign=top><table border=1 width=100%><tr><td>Мир $world_name</td></tr><tr><td>"
        for (
$q 0$q count($worlds[$world_name]); $q++) 
        { 
              echo 
$worlds[$world_name][$q]."<br>"
        } 
        echo 
"</td></tr></table></td>"
    if ((
$qs>1) && ($qs%!= 0)) echo "</td><td width=6.25%></td><td>";
    if ((
$qs%5) == 0) echo "</td></tr><td height=20></td><tr><td>";

echo 
"</td></tr></table>"
?>


И еще надо сделать чтоб в каждом стобики имена сортировались по алфавиту. А то они все в перемешку лежат.

   
 
 автор: kasmanaft   (26.03.2006 в 17:58)   письмо автору
 
   для: Бамси   (25.03.2006 в 16:14)
 

долго смотрел на етот скрипт и не мог понять, почему все же не отображается этот пятый столбик... а оказывается все просто :)
нужно чуть-чуть подправить IF

...

    if (empty($qs)) $qs = 1; 
         else  $qs++;
...

а чтобы отсортировать имена, нужно произвести сортировку массива... можно попробовать сделать вот так:

...

asort ($worlds, SORT_STRING);
echo "<table width=100%><tr><td>"; 
foreach ($worlds as $world_name => $arr) 
{
...

   
 
 автор: Бамси   (26.03.2006 в 23:58)   письмо автору
 
   для: kasmanaft   (26.03.2006 в 17:58)
 

asort не помог, а после else теперь нет пробела после первого столбика, но зато появился пробел после последнего столбика... И это только в первой строчке...
А не асорт заработал, он просто сортирует только буквы, надо чтоб еще и цыфры сортировал по возрастанию.

Вообщем с сортировкой разобрался, зделал так

...

asort ($worlds, SORT_STRING);
asort ($worlds, SORT_NUMERIC);
echo "<table width=100%><tr><td>"; 
foreach ($worlds as $world_name => $arr) 

...



А что делать с тем что не отображаеться 5 столбик я не знаю :(

   
 
 автор: kasmanaft   (27.03.2006 в 07:46)   письмо автору
 
   для: Бамси   (26.03.2006 в 23:58)
 

а счас наверно ошибка здесь:
if (($qs>=1) && ($qs%5 != 0)) echo "</td><td width=6.25%></td><td>";

больше или равно... попробуй так сделай..

и насчет сортировки... наверно верни, как было... тот способ, что я преводил сортирует элементы как строки...
объясню :)
допустим у нас есть массив "25, 12, 121"
если отсортировать его как числа то мы получим 12, 25, 121
а если как строки то 12, 121, 25
но в твом случае, по-моему, лучше отсортировать именно как строки... иначе результат тебя потом может немного удевить :)

   
 
 автор: Бамси   (27.03.2006 в 17:54)   письмо автору
 
   для: kasmanaft   (27.03.2006 в 07:46)
 

Вообщем все прекрастно работает, я бы с тобой бы пообщялся по ICQ нащет мелочей, если она имееться.

   
 
 автор: kasmanaft   (28.03.2006 в 21:34)   письмо автору
 
   для: Бамси   (27.03.2006 в 17:54)
 

у меня имеется :)
можешь в профиле посмотреть... я давно уже хотел, а как глянул в твой профиль - не нашел и расхотел :)

   
 
 автор: kasmanaft   (29.03.2006 в 15:21)   письмо автору
 
   для: kasmanaft   (28.03.2006 в 21:34)
 

оказывается у меня не тот номер был записан :)
исправил...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования