SO gezen araya kadarıyla, ben sizin gibi iyi insanların kötü kabusunum: resmen herhangi bir programlama öğrendim hiç birisi, onun hobi web sitesi geliştirmek istiyorum karar, ve kapalı bir fast-track PHP kitabı aldım raf ve ona gitti.
Tarama SO, bana şeylerin bir çok şey öğretti gelmiştir olayları şunlardır:
- PHP (Ben hangi) yeni başlayanlar için korkunç
- PHP korkunç bir ilk dil (Bu benim ilk)
- çok ve PHP kod sürü (benim muhtemelen) korkunç
- çoğu insan nasıl PHP şablon için hiçbir ipucu var (benim kitap Smarty önerir
<grin>
) - fonksiyonları Bir ipucu (bilmiyorum) varsa, müthiş
Okuma sayfaları ve kıdemli kodlayıcı ramblings sayfalarında ışığında, belki de dünyanın en paranoyak ve bilinçli acemi hale gelmiştir.
Şimdi benim ilk doğan çocuk kadar sunan, önce secde neden olan ... err, alçakgönüllü çalışma kod yığın, ve sen ve gözyaşı olduğunu yalvarıyorum Ben daha süratle Benim yollardan hata olduğunu öğrenmek, parçalara onu eleştirmek ...
The goals of the following code:
1) kendi unitid
sorgu amaçları ve unitname
için ekran için dönen, unit_basic_data
kendi milliyete dayalı tablodan birimlerinin bir listesini tut kullanıcı.
2) bu formatta her birim için onay kutularını bir form oluşturun
`<tr><td><input type="checkbox" name="Americanunit[]" value="$unitid" />$unitname</td></tr>`
Bu bana dinamik bir ülke, daha sonra seçmek eklemek için izin - Sen "Amerikan" Şu vea manuel $nation
olarak ayarlayın ve sonra unit[]
eklenir dikkat edeceğiz.
Her kutusunu kontrol 3) için, tabloya bir güncelleştirme sorgusu göndermek scenario_needunits
senaryo id oluşan scenid
ve birim kimliği unitid
, hangi alınır Bir çift birincil anahtar olarak.
4) kullanıcı ve tamamlama mesajın bir onay güncellendi unitids kaba bir listesini Dökümü.
What the code does now: Everything! :-) Except in a rather ugly fashion.
Obvious problems: hiçbir sanitizasyonu (btw, onay kutularını sanitizasyonunun gerektirir mi?), Kullanıcı bir senaryo göndermek için çalışırsa raporlama hata | tabloda zaten ünite çiftini
Further questions to the experts:
- Is there a cleaner way to build the checkbox strings besides my approach that concatenates SIX variables?
- Bu bir çiftleşmiş iğrençliktir?
- Can it be split into multiple files? (if yes, how/where?)
- Zaten umutsuz muyum?
Kenara yukarıda, ben% 100 başka yorumlara açık & duyuyorum eleştiri. Ben zaman için en nazik hepinize teşekkür ederim, ve sabır. Ve ben SO çok daha güzel görüneceğini nakletmek kod sonraki bit söz veriyorum!
Kod şöyle:
<?php
// designed to dynamically load a country's unit list from the database
// ve allow you to submit the country's units needed for a scenario
error_reporting(E_ALL);
require_once 'login.php';
$db_server = mysql_connect($db_hostname, $db_username, $db_password);
if (!$db_server) die("Unable to connect to MySQL: " . mysql_error());
mysql_select_db($db_database)
or die("Unable to select database: " . mysql_error());
$nation = "American"; // desired nation
echo "$nation is selected.<br />";
$sql = "SELECT unitid,unitname FROM `unit_basic_data` WHERE `forcename`='$nation'"; // grab all current units for $nation
$result = mysql_query($sql);
if (!$result) die ("Database access failed: " . mysql_error());
$rows = mysql_num_rows($result);
echo "Total rows returned is $rows rows."; // display total number of units
$formOpen = '<form method="post" action="scenario-needunits2.php"><input type="hidden" name="submittedCheck" value="yes" /><br />';
$scenario = '<tr><td>Scenario Name: <input type="text" name="scenid" /></td></tr>'; // input target scenario for new data
$checkPre = '<input type="checkbox" name="'; // checkbox string part 1 of 5
$checkName = $nation; // checkbox string part 2 of 5
$checkMid = 'unit[]" value="'; // checkbox string part 3 of 5
$checkPost = '" />'; // checkbox string part 5 of 6
$row = ''; // checkbox string parts (4 of 6) & (6 of 6)
$checkSubmit = '<br /><input type="submit" /></form>'; // submit button & close form
echo "<table><tr><th>Units</th></tr>";
echo "$formOpen";
echo "$scenario";
for ($j = 0 ; $j < $rows ; ++$j) // for statement that returns result row by row
{
$row = mysql_fetch_row($result);
echo "<tr>";
echo "<td>$checkPre$checkName$checkMid$row[0]$checkPost$row[1]</td>"; //brutal, but effective
echo "</tr>";
}
echo "</table>";
echo "$checkSubmit<br />"; // form closes here
if (isset($_POST['submittedCheck'])) //begin table update code
{
$scenid = $_POST['scenid']; // grab scenid
$americanunit = $_POST['Americanunit']; // grab unit array
foreach($americanunit as $unitid) // run through array
{
$sql = "INSERT INTO scenario_needunits VALUES ('$scenid' , '$unitid');"; // create query string
$result = mysql_query($sql); // add one new row
echo "Inserted a $unitid for scenario $scenid<br />"; // report addition
}
echo "Complete."; // report update has been successful
}
?>