Ich ziehe eine Liste von Client-Namen aus einer MySQL-Tabelle, um als Dropdown-Auswahl zu dienen. Die Daten sollen in einer separaten Tabelle gespeichert werden. Ich möchte, dass die Option ausgewählt wird, wenn dem Feld in der zweiten Tabelle bereits ein Client zugewiesen ist.Probleme mit PHP. dynamisch ausgewählte Optionen und Kontrollkästchen
Auch meine Radio-Tasten geben ihre Daten in die falschen Felder, irgendwelche Ideen, warum dies passiert?
Vielen Dank im Voraus für Anregungen.
Code unten:
<?php
if(isset($_GET['id']))
{
$query = "SELECT * ".
"FROM studies ".
"WHERE id = '".$_GET['id']."'";
$result = mysql_query($query) or die('Error : ' . mysql_error());
list($id, $pagetitle, $title, $date, $copy, $outputs, $strategies, $client, $niche, $media, $thumbmedia, $newfieldtitle, $newfieldcontent) = mysql_fetch_array($result, MYSQL_NUM);
}
if(isset($_POST['update1']))
{
$id = $_POST['id'];
$pagetitle = $_POST['pagetitle'];
$title = $_POST['title'];
$date = $_POST['date'];
$copy = $_POST['copy'];
$outputs = $_POST['outputs'];
$strategies = $_POST['strategies'];
$client = $_POST['client'];
$niche = $_POST['niche'];
$media = $_POST['media'];
$thumbmedia = $_POST['thumbmedia'];
$newfieldtitle = $_POST['newfieldtitle'];
$newfieldcontent = $_POST['newfieldcontent'];
if(!get_magic_quotes_gpc())
{
$pagetitle = addslashes($pagetitle);
$title = addslashes($title);
$date = addslashes($date);
$copy = addslashes($copy);
$outputs = addslashes($outputs);
$strategies = addslashes($strategies);
$client = addslashes($client);
$niche = addslashes($niche);
$media = addslashes($media);
$thumbmedia = addslashes($thumbmedia);
$newfieldtitle = addslashes($newfieldtitle);
$newfieldcontent = addslashes($newfieldcontent);
}
// update the article in the database
$query = "UPDATE studies
SET pagetitle = '$pagetitle', title = '$title', date = '$date', copy = '$copy', outputs = '$outputs', strategies = '$strategies', client = '$client', niche = '$niche', media = '$media', thumbmedia = '$thumbmedia', newfieldtitle = '$newfieldtitle', newfieldcontent = '$newfieldcontent' ".
"WHERE id = '$id'";
mysql_query($query) or die('Error : ' . mysql_error());
// then remove the cached file
$cacheDir = dirname(__FILE__) . '/cache/';
$cacheFile = $cacheDir . '_' . $_GET['id'] . '.html';
@unlink($cacheFile);
// and remove the index.html too because the file list
// is changed
@unlink($cacheDir . 'index.html');
echo "<b>Article '$title' updated</b>";
// now we will display $title & content
// so strip out any slashes
$pagetitle = stripslashes($pagetitle);
$title = stripslashes($title);
$date = stripslashes($date);
$copy = stripslashes($copy);
$outputs = stripslashes($outputs);
$strategies = stripslashes($strategies);
$client = stripslashes($client);
$niche = stripslashes($niche);
$media = stripslashes($media);
$thumbmedia = stripslashes($thumbmedia);
$newfieldtitle = stripslashes($newfieldtitle);
$newfieldcontent = stripslashes($newfieldcontent);
}
?>
<div class="container">
<form method="post">
<input type="hidden" name="id" value="<?php echo $id; ?>">
<p class="subheadsmall">Browser Title</p>
<textarea cols="40" rows="1" class="box" name="pagetitle" id="editbox"><?php echo $pagetitle; ?></textarea>
<p class="subheadsmall">Story Title</p>
<textarea cols="40" rows="1" class="box" name="title" id="editbox"><?php echo $title; ?></textarea>
<p class="subheadsmall">Date</p>
<textarea cols="40" rows="1" class="box" name="date" id="editbox"><?php echo $date; ?></textarea>
<p class="subheadsmall">Story</p>
<textarea cols="80" rows="10" class="box" name="copy" id="editbox"><?php echo $copy; ?></textarea>
<p class="subheadsmall">Outputs</p>
<textarea cols="80" rows="10" class="box" name="outputs" id="editbox"><?php echo $outputs; ?></textarea>
<p class="subheadsmall">Strategies</p>
<p class="subheadsmall">Client</p>
<select type="text" name="client">
<option value="empty">Select a Client...</option>
<?php
$result = mysql_query("SELECT * FROM clients");
if (!$result) {
die("Database query failed: " . mysql_error());
}
while($row = mysql_fetch_array($result)) {
$clientlist = $row['name'];
$clientname = htmlspecialchars($row['name']);
if(isset($_POST['client'])){
echo '<option value="' . $clientlist . '" selected="selected" >' . $clientname . '</option>' . '\n';
}
else{
echo '<option value="' . $clientlist . '" >' . $clientname . '</option>' . '\n';
}
}
?>
</select>
<?php
echo '<p class="subheadsmall">Core Classification</p>';
echo '<input type="radio" name="niche" value="brand"' . ($niche == "brand" ? " checked=\"checked\"" : "") . ' >Brand</input>';
echo '<input type="radio" name="niche" value="marketing"' . ($niche == "marketing" ? " checked=\"checked\"" : "") . ' >Marketing</input>';
echo '<input type="radio" name="niche" value="communication"' . ($niche == "communication" ? " checked=\"checked\"" : "") . ' >Communication</input>';
?>
<p class="subheadsmall">Add New Strategy</p>
<textarea cols="40" rows="1" class="box" name="strategies" id="editbox"><?php echo $strategies; ?></textarea>
ich nur eine Sache ... zu sagen haben „id = '; aus Studien streichen true“ oops ... –
Dies ist keine Antwort auf Ihre Frage, aber einige Gedanken, die ich mit aufkam nachdem du deinen Code schnell gelesen hast. Dachte, es könnte helfen. Sie können in Erwägung ziehen, array_map() zu verwenden, statt die gleiche Funktion einzeln auf Ihre $ _POST-Variablen anzuwenden. (z. B. array_map ('addslashes', $ _POST);) Auch Ihre erste Abfrage verwendet eine ungeprüfte $ _GET-Variable (und es muss nicht zwischen Anführungszeichen gesetzt werden). Sie können intval() verwenden, um sicherzustellen, dass Ihre ID eine Ganzzahl ist. Bevor Sie eine Variable drucken, sollten Sie auch die Datei htmlentites() verwenden. – Sylvain