Je tire une liste de noms de clients d'une table MySQL pour servir de liste déroulante. Les données doivent être stockées sur une table séparée. Je voudrais que l'option apparaisse comme sélectionnée s'il y a déjà un client assigné au champ dans la deuxième table.Problèmes de forme avec php. Options sélectionnées dynamiquement et case à cocher
En outre, mes boutons radio entrent leurs données dans les mauvais champs, des idées pourquoi cela se produit?
Merci d'avance pour toute suggestion.
Codeci-dessous:
<?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>
Je n'ai qu'une chose à dire ... « id = '; supprimer des études où de véritables » oups ... –
Ce n'est pas une réponse à votre question, mais quelques réflexions que je suis venu avec après avoir rapidement lu votre code. Pensé que cela pourrait aider. Vous pouvez envisager d'utiliser array_map() au lieu d'appliquer la même fonction à vos variables $ _POST une par une. (par exemple: array_map ('addslashes', $ _POST);) Aussi votre première requête utilise une variable $ _GET non vérifiée (et il n'est pas nécessaire de la mettre entre guillemets). Vous pouvez utiliser intval() pour vous assurer que votre ID est un entier. De même, avant d'imprimer une variable, vous pouvez utiliser htmlentites(). – Sylvain