2009-06-30 2 views
1

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.

Code

ci-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> 
+0

Je n'ai qu'une chose à dire ... « id = '; supprimer des études où de véritables » oups ... –

+0

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

Répondre

1
  • Votre if(isset($_POST['client'])) condition ne fait pas référence à $row du tout, donc ça va être soit vrai pour toutes les options ou faux pour toutes les options. Je présume que vous voulez comparer $_POST['client'] à $clientlist dans cette déclaration:

    if ($_POST['client'] == $clientlist) 
    
  • Un élément <input> ne contient pas de contenu. Plutôt que <input type="radio">Label</input> il devrait juste être <input type="radio" /> Label avec l'étiquette après l'étiquette d'entrée, pas à l'intérieur de lui.

+0

Merci beaucoup pour votre aide, désolé d'être une douleur mais comment puis-je comparer $ _POST ['client'] à $ clientlist dans cette déclaration? Merci pour les heads-up, c'était stupide! – user96828

Questions connexes