2009-06-30 11 views
1

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

ich nur eine Sache ... zu sagen haben „id = '; aus Studien streichen true“ oops ... –

+0

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

Antwort

1
  • Ihr if(isset($_POST['client'])) Zustand nicht $row überhaupt nicht verweisen, so dass es entweder geht für alle Optionen oder falsch für alle Optionen wahr sein. Ich nehme an, Sie $_POST['client'] zu $clientlist in dieser Aussage vergleichen wollen:

    if ($_POST['client'] == $clientlist) 
    
  • Ein <input> Element enthält keinen Inhalt. Anstatt <input type="radio">Label</input> sollte es nur <input type="radio" /> Label mit dem Etikett nach dem Eingangstag sein, nicht innerhalb davon.

+0

Vielen Dank für Ihre Hilfe, tut mir leid, ein Schmerz zu sein, aber wie würde ich $ _POST ['client'] mit $ clientlist in dieser Aussage vergleichen? Danke für die heads-up, das war dumm! – user96828

Verwandte Themen