Autor Zpráva
jullin
Profil
Dobrý den mám problém a už si sním vážně nevím rady.
můj cíl je takový , aby se před barevným textem v závorkách (PVP,PVE, ...), viz. obrázek, načetl příslušný text v který je u daného sloupečku v databázi.
Tato část kódu by to podle mě měla umožnit, ale jaksi se nedaří. Zobrazuje se jen barevný text v závorkách, ale ne text před ním. Přitom u ostatních textů (červený, zelený) je vše v pořádku:
  
<?
                            if ( preg_match( '/^PVE - (parta|raid) (.*)$/i', $data['raid_type'], $matches)  ) {
                                $data['raid_type'] = $matches[2]." (<font color=green>PVE</font>)";
                            }
                            if ( preg_match( '/^PVP - (.*)$/i', $data['raid_type'], $matches)  ) {
                                $data['raid_type'] = $matches[1]." (<font color=red>PVP</font>)";
                            }
                            if ( preg_match( '/^DUNG - (.*)$/i', $data['raid_type'], $matches)  ) {
                                $data['raid_type'] = $matches[3]." (<font color=orange>DUNGEON</font>)";
                            }
?>


Celý kód:
<?
session_start();
include "global.cfg." .$_SERVER['SERVER_NAME']. ".php";
include $incPath."db.php";
include $incPath."misc.php";
include $incPath."fce_calendar.php";

authorize("", true);
$SECTION = "RAID_LIST";

switch ($_REQUEST['error']){
    case 1:
        $err .= "<br>Nemáš práva pro přístup k této funkci.";
        break;
    case 2:
        $err .= "<br>Nová akce úspěšně založena.";
        break;
}

if ($_REQUEST['ac'] == "cancel"){
    $q = "UPDATE raids SET deleted = '1' WHERE id = '".$_REQUEST['raidId']."'";
    dbquery($q);
}

if ($_REQUEST['ac'] == "rebuild"){
    $q = "UPDATE raids SET deleted = '0' WHERE id = '".$_REQUEST['raidId']."'";
    dbquery($q);
}

if ($_REQUEST['ac'] == "delete"){
    $q = "DELETE FROM raids WHERE id = '".$_REQUEST['raidId']."'";
    dbquery($q);
}

$sq = "";
if ($_REQUEST['filtr']){
    if ($_REQUEST['type']) $sq .= " AND type_id = '".$_REQUEST['type']."'";
    if ($_REQUEST['title']) $sq .= " AND title LIKE '%".$_REQUEST['title']."%'";
}

$q = "SELECT raids.*, raid_type.title AS raid_type, UNIX_TIMESTAMP(takeplace) AS date, raid_type.ord, raid_type.rights FROM raids LEFT OUTER JOIN raid_type ON raid_type.id = raids.type_id WHERE (takeplace >= '".date("Y-m-d")."' or takeplace = '0000-00-00 00:00:00') $sq ORDER BY raid_type.ord ASC, takeplace ASC, time_since ASC";
$r = dbquery($q);

$new = array();
while ($data = dbarray($r)){
    if (!$HTTP_COOKIE_VARS["raid".$data['id']]){
        setcookie("raid".$data['id'], 1, strtotime("+1 month"));
        $new[$data['id']] = 1;
    }
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">

<html>
<head>
    <link rel="stylesheet" href="styles/main.css" type="TEXT/CSS">
    <link rel="shortcut icon" href="./favicon.ico" />
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
    <title><?=$TITLE?></title>
    <script language="JavaScript" type="text/javascript" src="js/functions.js"></script>
</head>

<body>

<div id="main">

    <?
    include $incPathHtml."menu.php";
    ?>
    
    <div id="main_2">
        
        <div class="headline">
            <h3>Filtr událostí</h3>
        </div>
        
        <div id="filtr">
            
            <form action="raid_list.php" method="POST">
                <input type="hidden" name="filtr" value="1">
                <?
                $month = $_REQUEST['month'];
                if (!isSet($month)) $month = date("m");
                $year = $_REQUEST['year'];
                if (!isSet($year)) $year = date("Y");
                ?>
                <input type="hidden" name="month" value="<?=$month?>">
                <input type="hidden" name="year" value="<?=$year?>">
                
                <p>typ:
                <select name="type">
                    <option value="">..</option>
                    <?
                    $i = 0;
                    $r = getRaidType();
                    while ($data = dbarray($r)){
                        if (($tempRights != $data['rights']) && ($i)){
                            echo '<option value="">---------------------</option>';
                        }
                    ?>
                        <option value="<?=$data['id']?>" <?=($_REQUEST['type'] == $data['id'])?" selected":""?>><?=$data['title']?></option>
                    <?
                        $tempRights = $data['rights'];
                        $i++;
                    }
                    ?>
                </select> &nbsp; 
                název:
                <input type="text" name="title" value="<?=$_REQUEST['title']?>">
                 &nbsp; 
                <input type="submit" value="Filtrovat" class="submit">
                </p>
            
            </form>
            
        </div>
        
        <div>
            <div class="headline">
                <h3>Přehled událostí (PVE)</h3>
            </div>
            
            <?
            $i = 0;
            $changedOrd = 0;
            $style = '';
            $r = dbquery($q);
            while ($data = dbarray($r)){
                
                if ((!$changedOrd) && ($data['ord'] != 1)){ // pri zmene ord (priority) udela mezeru, tz mezi pve raidy a ostatnimi
                    $changedOrd = 1;
                    echo '
                          <div>
                          <p>&nbsp;</p><br>
                          </div>
                          <div class="headline"><h3>Přehled událostí (PVP a DUNGEONY)</h3></div>';
                    $style = 'raidNotPve';
                }
                
                if ($i > 1) $i = 0;
                $q1 = "SELECT able, approved FROM raid_user WHERE raid_id = '".$data['id']."' AND user_id = '".$_SESSION['user']['id']."'";
                $r1 = dbquery($q1);
                $span = '';
                if (dbnumrows($r1)){
                    if ((dbresult($r1, 0, 0)) && (dbresult($r1, 0, 1))){
                        $span = '<span class="green">*</span> ';
                    }else if ((dbresult($r1, 0, 0)) && (!dbresult($r1, 0, 1))){
                        $span = '<span class="yellow">*</span> ';
                    }else{
                        $span = '<span>*</span> ';
                    }
                }
                ?>
                
                <div class="raid bgcolor_<?=$i.' '.$style?>">
                    
                    <div class="raid_3">
                        <div class="raid_4">
                            <?
                            if ( preg_match( '/^PVE - (parta|raid) (.*)$/i', $data['raid_type'], $matches)  ) {
                                $data['raid_type'] = $matches[2]." (<font color=green>PVE</font>)";
                            }
                            if ( preg_match( '/^PVP - (.*)$/i', $data['raid_type'], $matches)  ) {
                                $data['raid_type'] = $matches[1]." (<font color=red>PVP</font>)";
                            }
                            if ( preg_match( '/^DUNG - (.*)$/i', $data['raid_type'], $matches)  ) {
                                $data['raid_type'] = $matches[3]." (<font color=orange>DUNGEON</font>)";
                            }
                            ?>
                            <p><?=$span."<a href=\"raid_detail.php?raidId=".$data['id']."\" class=\"big\">".$data['raid_type']."</a>"?></p>
                        </div>
                        <div class="raid_5">
                            <p><?="(".getDay($data['date']).") ".date("d. m. Y", $data['date'])." v ".substr($data['time_since'], 0, 5)?></p>
                        </div>
                        <div class="raid_6">
                            <p><?="<span class=\"big\">".$data['guild']?></p>
                        </div>
                        <div class="raid_7">
                            <p><?="<span class=\"big\">".cs_strtoupper($data['title'])."</span>"?> <?=($data['deleted'])?" <span class=\"err\">!ZRUŠENO!</span>":""?><?=(($new[$data['id']]) && (!$data['deleted']))?'<span class="err">!NOVÝ!</span> ':''?></p>
                        </div>
                    </div>
                    
                    
                    <?
                    if (authorize($data['rights'])){
                    ?>
                        
                        <div class="raid_8">
                        
                            <p><a href="raid_edit.php?raidId=<?=$data['id']?>&ac=edit">Editovat událost</a> | 
                            <?
                            if (!$data['deleted']){
                            ?>
                            <a href="raid_list.php?ac=cancel&raidId=<?=$data['id']?>">Zrušit událost</a>
                            <?
                            }else{
                            ?>
                            <a href="raid_list.php?ac=rebuild&raidId=<?=$data['id']?>">Obnovit událost</a>
                            <?
                            }
                            ?>
                             | <a href="raid_list.php?ac=delete&raidId=<?=$data['id']?>">Smazat událost</a></p>                        
                        </div>
                        
                    <?
                    }
                    ?>
                
                </div>
                        
                <?
                $i++;
            }
            ?>
        
        </div>
        
        <div id="raid_2">
        
            <p class="err"><?=$err?></p>
        
        </div>
        
        <?
        include $incPathHtml."reset.php";
        ?>
        
        <?
        include $incPathHtml."bottom.php";
        ?>
        
    </div>
</div>

</body>
</html>
jullin
Profil
Tak už vyřešeno ->
if ( preg_match( '/^DUNG - (>) (.*)$/i', $data['raid_type'], $matches)  ) {
$data['raid_type'] = $matches[2]." (<font color=orange>DUNGEON</font>)";
}

a v DB změněna hodnota sloupce ze 3 na 2 a přidán do názvu >.
- trochu mě štve , že tam musí být > tenhle zobák, ale aspoň to chodí :).
peta
Profil
Priste zkus napsat jednoduchy php kod. neco jako toto:
$str = '......';  //echo z $data['raid_type']
echo $str.'<br>';
    if ( preg_match( '/^DUNG - (.*)$/i', $str, $matches)  ) {
                                print_r($matches);
                                $str = $matches[3]." (<font color=orange>DUNGEON</font>)";
echo $str.'<br>';;
Nemuzes odkazovat na $matches[3], kdyz pocet zavorek je 1. udelej si tam print_r($matches).

if ( preg_match( '/^DUNG - (>) (.*)$/i', $data['raid_type'], $matches)  ) {
$data['raid_type'] = $matches[2]." (<font color=orange>DUNGEON</font>)";
}
A tady to mas uplne stejne. Stahl jsi $matches[2] z $matches[3], a pridal zavorku, abys mel 2 matches. Ale ty vubec nepotrebujes. Proste tu zavorku smaz i s vetsitkem a dej tam 1.
 '/^DUNG - (>) (.*)$/i' - zavorka 1 = (>), zavorka 2 = (.*)
$matches[0] = shoda s celym vyrazem
$matches[1] = zavorka 1
$matches[2] = zavorka 2

 '/^DUNG - (.*)$/i' - zavorka 1 = (.*)
$matches[0] = shoda s celym vyrazem
$matches[1] = zavorka 1
$data['raid_type'] = $matches[1]." (<font color=orange>DUNGEON</font>)";

Prekvapujici je, ze radek nad ttim to mas spravne
                            if ( preg_match( '/^PVP - (.*)$/i', $data['raid_type'], $matches)  ) {
                                $data['raid_type'] = $matches[1]." (<font color=red>PVP</font>)";
jullin
Profil
Jo jo diky už jsem to udělal :)
Toto téma je uzamčeno. Odpověď nelze zaslat.