2011-01-11 4 views
0

Ok, ich denke, das ist einfach, aber ich weiß nicht (ich bin ein Anfänger zu PHP und MySQL).Zeichen nach Space nicht zulassen. Mysql Einfügen mit PHP

Ich habe eine Auswahl, die Daten aus einer Tabelle in der Datenbank erhält. Ich nehme einfach alle Optionen, die der Benutzer auswählt und lege sie in eine separate Tabelle mit einer php mysql insert Anweisung.

Aber ich habe ein Problem. Wenn ich auf "Senden" klicke, wird alles ordnungsgemäß übertragen, mit Ausnahme von ausgewählten Optionen, bei denen Leerzeichen nach dem ersten Leerzeichen nicht übergeben werden. Zum Beispiel, wenn die Option COMPUTER REPAIR war, würde alles, was gesendet würde, COMPUTER sein. Ich werde Code bei Bedarf schreiben, und jede Hilfe würde sehr geschätzt werden. Vielen Dank!

Ok, hier ist mein Auswahlcode:

<?php 
    include("./config.php"); 
    $query="SELECT id,name FROM category_names ORDER BY name"; 
    $result = mysql_query ($query); 
    echo"<div style='overflow:auto;width:100%'><label>Categories (Pick three that describe your business)</label><br/><select name='select1'><option value='0'>Please Select A Category</option>"; 
    // printing the list box select command 
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt 


    echo "<option>$catinfo[name]</option><br/> 

"; 

    } 

echo"</select></div>"; 

    ?> 

Und hier mein Insert-Code ist (Nur, damit Sie sein bekam alles nicht nur die Auswahl wissen!)

?php 
    require("./config.php"); 
    $companyname = mysql_real_escape_string(addslashes(trim($_REQUEST['name']))); 
    $phone = mysql_real_escape_string(addslashes($_REQUEST['phone'])); 
    $zipcode = mysql_real_escape_string(addslashes($_REQUEST['zipcode'])); 
    $city = mysql_real_escape_string(addslashes($_REQUEST['city'])); 
    $description = mysql_real_escape_string(addslashes($_REQUEST['description'])); 
    $website = mysql_real_escape_string(addslashes($_REQUEST['website'])); 
    $address = mysql_real_escape_string(addslashes($_REQUEST['address'])); 
    $other = mysql_real_escape_string(addslashes($_REQUEST['other'])); 
    $payment = mysql_real_escape_string(addslashes($_REQUEST['payment'])); 
    $products = mysql_real_escape_string(addslashes($_REQUEST['products'])); 
    $email = mysql_real_escape_string(addslashes($_REQUEST['email'])); 
    $select1 = mysql_real_escape_string(addslashes($_REQUEST['select1'])); 
    $select2 = mysql_real_escape_string(addslashes($_REQUEST['select2'])); 
    $select3 = mysql_real_escape_string(addslashes($_REQUEST['select3'])); 
    $save=$_POST['save']; 
    if(!empty($save)){ 

    $sql="INSERT INTO gj (name, phone, city, zipcode, description, dateadded, website, address1, other2, payment_options, Products, email,cat1,cat2,cat3) 
    VALUES 
    ('$companyname','$phone','$city','$zipcode','$description',curdate(),'$website','$address','$other','$payment','$products','$email','$select1','$select2','$select3')"; 

    if (!mysql_query($sql,$link)) 
     { 
     die('Error: ' . mysql_error()); 
     } 
    echo "<br/><h2><font color='green' style='font-size:15px'>1 business   added</font></h2>"; 

    mysql_close($link); 
} 

    ?> 
+0

Es würde definitiv helfen, wenn Sie die relevanten Teile Ihres Codes veröffentlichen könnten. –

+0

Ich habe einen Code geschrieben ... Ich hoffe, es hilft! –

Antwort

2

Platz die value="$catinfo[name]" auf Ihre <option>-Tags, so dass sie wie folgt aussehen:

echo "<option value=\"".htmlspecialchars($catinfo['name'])."\">".$catinfo['name']."</option>"; 

Da Sie haben o Mititted sie, verwendet es, was immer zwischen den <option> Tags standardmäßig ist und da es keine Anführungszeichen um sie gibt, bestimmt es den Raum als das Ende des Werts. Indem Sie den tatsächlichen Wert, der in die Datenbank eingefügt werden soll, innerhalb des Attributs value platzieren, sagen Sie ihm deutlich, dass er den vollständigen Satz zwischen den Anführungszeichen verwenden soll.

Entfernen Sie auch die <br/>, da Sie keine Unterbrechungen in einem <select> Element platzieren müssen.

+0

echo " $ catinfo [name]
"; – madkris24

+1

nicht vergessen 'htmlspecialchars'!;) – meze

+0

Ich bekomme immer einen Fehler ... ist das richtig? while ($ catinfo = mysql_fetch_array ($ result)) {// Array oder in $ gespeicherten Datensätze catinfo echo "

0

Es ist ein häufiger Fehler, den Menschen begegnen. Um die Daten in der Datenbank gespeichert zuzugreifen, als sie bitte das folgende Format folgen wird:

echo "<option>'".$catinfo[name]."'</option><br/>"; 

, wenn Sie Wert wollen in Option gespeichert das folgende Format verwenden:

echo "<option value='".$catinfo[name]."'>'".$catinfo[name]."'</option><br/>"; 

Es werden die Daten angezeigt werden von Datenbank wie es ist. Ich hoffe es hilft!