Witam. Z góry chcę podkreślić, że jestem słaby w pisaniu dobrego i czystego kodu ponieważ, powtarzam go na okrągło. Temu chciałbym aby ktoś pokazał mi jak można to zrobić, dużo przy tym się nauczę wejdzie mi to w nawyk.
Teraz przejdźmy do rzeczy.
Oto SQL bazy danych
CREATE TABLE `items` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`Strength` int(11) NOT NULL,
`Dexterity` int(11) NOT NULL,
`Intelligence` int(11) NOT NULL,
`Vitality` int(11) NOT NULL,
`Lok` int(11) NOT NULL,
`Lph` int(11) NOT NULL,
`Lphg` int(11) NOT NULL,
`Lifesteal` int(11) NOT NULL,
`Additional Life` int(11) NOT NULL,
`Lps` int(11) NOT NULL,
`IArcane` int(11) NOT NULL,
`ICold` int(11) NOT NULL,
`IFire` int(11) NOT NULL,
`IHoly` int(11) NOT NULL,
`ILightning` int(11) NOT NULL,
`IPoison` int(11) NOT NULL,
`IWeapon` int(11) NOT NULL,
`AttackSpeed` int(11) NOT NULL,
`Increased Minimum Damage` int(11) NOT NULL,
`Increased Maximum Damage` int(11) NOT NULL,
`CHD` int(11) NOT NULL,
`Wd` int(11) NOT NULL,
`Chc` int(11) NOT NULL,
`Bdmgvsel` int(11) NOT NULL,
`CBlind` int(11) NOT NULL,
`CChill` int(11) NOT NULL,
`CFear` int(11) NOT NULL,
...... itd
UNIQUE KEY `id` (`id`),
KEY `id_2` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Ogólnie skrypt jest przeznaczony do wpisywania wartości w te pola by ludzie mogli zobaczyć co możemy zaoferować.
Tutaj jest przykład mojej bezmyślności i niedołęstwa
1)Fragment koduif($_REQUEST['do'] == 'list')
{
echo '<table border="1"><thead> <th>id</th>
<th>Strength</th>
<th>Dexterity</th>
<th>Intelligence</th>
<th>Vitality</th>
<th>Lok</th>
<th>Lph</th>
<th>Lphg</th>
<th>Lifesteal</th>
<th>Additional Life</th>
<th>Lps</th>
<th>IArcane</th>
<th>ICold</th>
<th>IFire</th>
<th>IHoly</th>
<th>ILightning</th>
<th>IPoison</th>
<th>IWeapon</th>
<th>AttackSpeed</th>
<th>Increased Minimum Damage</th>
<th>Increased Maximum Damage</th>
<th>CHD</th>
<th>Wd</th>
<th>Chc</th>
<th>Bdmgvsel</th>
<th>CBlind</th>
<th>CChill</th>
<th>CFear</th>
<th>CFreeze</th>
<th>CImmobilize</th>
<th>CKnockback</th>
<th>CSlow</th>
<th>CStun</th>
<th>Ctbleed</th>
<th>Bleeddmg</th>
<th>Gf</th>
<th>Mf</th>
<th>Exp</th>
<th>Indestructible</th>
<th>Movement Speed</th>
<th>Yardspick</th>
<th>Reduced Level Requirement</th>
<th>Sock1</th>
<th>Sock2</th>
<th>Sock3</th>
<th>Resistance All</th>
<th>RArcane</th>
<th>RCold</th>
<th>RFire</th>
<th>RHoly</th>
<th>RLightning</th>
<th>RPhysical</th>
<th>RPoison</th>
<th>Increased Armor</th>
<th>CCred</th>
<th>Meleeatd</th>
<th>Reduced Damagefeli</th>
<th>Chance to blockomshield</th>
<th>Chance to blockomattr</th>
<th>Block Amount</th>
<th>Type</th>
<th>Price</th>
<th>Seller</th>
</thead>';
<tr><td>'.$row['id'].'</td>
<td>'.$row['Strength'].'</td>
<td>'.$row['Dexterity'].'</td>
<td>'.$row['Intelligence'].'</td>
<td>'.$row['Vitality'].'</td>
<td>'.$row['Lok'].'</td>
<td>'.$row['Lph'].'</td>
<td>'.$row['Lphg'].'</td>
<td>'.$row['Lifesteal'].'</td>
<td>'.$row['Additional Life'].'</td>
<td>'.$row['Lps'].'</td>
<td>'.$row['IArcane'].'</td>
<td>'.$row['ICold'].'</td>
<td>'.$row['IFire'].'</td>
<td>'.$row['IHoly'].'</td>
<td>'.$row['ILightning'].'</td>
<td>'.$row['IPoison'].'</td>
<td>'.$row['IWeapon'].'</td>
<td>'.$row['AttackSpeed'].'</td>
<td>'.$row['Increased Minimum Damage'].'</td>
<td>'.$row['Increased Maximum Damage'].'</td>
<td>'.$row['CHD'].'</td>
<td>'.$row['Wd'].'</td>
<td>'.$row['Chc'].'</td>
<td>'.$row['Bdmgvsel'].'</td>
<td>'.$row['CBlind'].'</td>
<td>'.$row['CChill'].'</td>
<td>'.$row['CFear'].'</td>
.... itd do każdego ze schematu SQL
</tr>';
}
}
Jak to w ogóle wygląda? Czy macie jakiś pomysł jak bardzo to skrócić?
Nie wiem czy jest szansa stworzenia jakiegoś PDO czy czegoś tam w celu wywoływania tego samego "małego" kodu na innych podstrona gdyż chcę zrobić do tego opcję edytowania,usuwania więc kod zajął by kilka linijek.....
Kod jest taki obszerny i beznadziejny, że nie ma miejsca na wklejenie go.
2)Fragment koduecho '<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"> <thead>
<tr align="center">
<th>Item Number</th>
<th>Item Name</th>
<th>Stats</th>
<th>Socketed</th>
<th>Price</th>
<th>Seller</th>
<th>Status</th>
</tr>
</thead>
<tbody>';
{
if ($row['Strength'] == '0') { echo '';} else { $dataStrength ='<li class=d3-color-blue><p style="color:#6969FF;"><span class=value>+ '.$row['Strength'].'</span> Strength</p></li>'; } if ($row['Dexterity'] == '0') { echo '';} else { $dataDexterity = '<li class=d3-color-blue><p style="color:#6969FF;"><span class=value>+ '.$row['Dexterity'].'</span> Dexterity</p></li>'; } ..............
I tak dalej do każdego pola ze schematu SQL
a potem wywołane to jest
$attributedump = '
'.@$dataStrength.' '.@$dataDexterity.' '.@$dataIntelligence.' '.@$dataVitality.' '.@$dataRArcane.'
'.@$dataLok.' '.@$dataLph.' '.@$dataLphg.' '.@$dataLifesteal.' '.@$dataAdditional.'
'.@$dataLps.' '.@$dataICold.' '.@$dataIFire.' '.@$dataIHoly.' '.@$dataIPoison.' '.@$dataIWeapon.'
'.@$dataAttackSpeed.' '.@$dataIncreasedMinimumDamage.' '.@$dataIncreasedMaximumDamage.'
'.@$dataCHD.' '.@$dataWd.' '.@$dataChc.' '.@$dataBdmgvsel.' '.@$dataCBlind.' '.@$dataCChill.'
'.@$dataCFear.' '.@$dataCFreeze.' '.@$dataCImmobilize.' '.@$dataCKnockback.' '.@$dataCSlow.'
'.@$dataCStun.' '.@$dataCtbleed.' '.@$dataBleeddmg.' '.@$dataGf.' '.@$dataMf.' '.@$dataExp.'
'.@$dataIndestructible.' '.@$dataMovementSpeed.' '.@$dataYardspick.' '.@$dataReducedLevelRequirement.'
'.@$dataSock1.' '.@$dataSock2.' '.@$dataSock3.' '.@$dataResistanceAll.' '.@$dataRCold.' '.@$dataRFire.'
'.@$dataRHoly.' '.@$dataRLightning.' '.@$dataRPhysical.' '.@$dataRPoison.' '.@$dataIncreasedArmor.'
'.@$dataCCred.' '.@$dataMeleeatd.' '.@$dataReducedDamagefeli.' '.@$dataChancetoblockomshield.'
'.@$dataChancetoblockomattr.' '.@$dataBlockAmount.'
';
Jestem pewien że nie jeden spadł z krzesła

no ale działa.
Ma to na celu sprawdzenie, że jeżeli jest podana wartość w SQL np. dla pola Strength = 0 to nie pokaże tego pola w $attributedump
Jest to na prawdę bardzo patologicznie pokazane wszystko lecz jestem pewien, że jest to żenada, proszę o pomoc.
Chętnie nauczę się operacji na takich dużych zmiennych itd. Proszę o podpowiedzi.
Ten post edytował Wertas 15.07.2012, 19:00:12