PHP Checkbox vorselektieren klappt nicht

-Rayz-

Lieutenant
Registriert
Okt. 2010
Beiträge
909
Hallo, ich habe eine Checkbox in der man mehrere Daten anklicken kann und ich will, das bei neuladen der Seite der zuletzt selektierte Wert selektiert ist.

PHP:
<?php
						$sql="SELECT CAID,title FROM category";
						$rs = $conn->Execute($sql);	
						print '<select class="formselect" name="category[]" size="6" multiple>';
						if($rs===false) die(mysql_error());
							while(!$rs->EOF){								
								print "<option ".($rs->fields[0] == $_POST['category'] ? "checked=checked" : "" )."value=".$rs->fields[0].">".$rs->fields[1]. "</option>";
								$rs->MoveNext();
							}
					?>

zur Zeit sind nur zwei Testdaten vorhanden und "category" kann nur dne Wert 1 oder 2 annehmen. Leider funktioniert mein checked wohl nicht..
 
geht leider nicht. Kann es sein , dass es für <option> kein checked gibt?

PHP:
print "<option ".($rs->fields[0] == '1' ? 'selected="selected"'  : "" )."value=".$rs->fields[0].">".$rs->fields[1]. "</option>";

so geht meine selektierung. Allerdings klappt mein $_POST['category'] noch nicht... evtl. weil es ein Array ist?
 
Zuletzt bearbeitet:
Stimmt ;)

Es heißt:
PHP:
'selected="selected"'

edit:
ah hast schon selber rausgefunden ;)

edit2:
dein Post ist so gespeichert:
PHP:
$_POST['category'][value]

Du könntest mit einer foreach schleife durch die dein $_POST['category'] laufen.
 
Zuletzt bearbeitet:
und so klappt es nun auch:

PHP:
<?php
						$sql="SELECT CAID,title FROM category";
						$rs = $conn->Execute($sql);	
						
						print '<select class="formselect" name="category[]" size="6" multiple>';
						if($rs===false) die(mysql_error());						
							while(!$rs->EOF){								
								print "<option ".($rs->fields[0] == $_POST["category"][0] ? 'selected="selected"'  : "" )."value=".$rs->fields[0].">".$rs->fields[1]. "</option>";
								$rs->MoveNext();								
						}
					?>

Problem jetzt: mein Reset Button funktioniert nicht mehr -_-
 
Nein nur der Eintrag bleibt selektiert, den ich auch vorher selektiert habe. Ich versuch mal das Problem genauer zu beschreiben.. ich habe eine Suche mit einem Event (onkeyup) und dadurch wird nach jedem Tastenklick die Seite neugeladen. Da ich aber nicht will, das man dann alle Werte neu eingeben muss, wollte ich mir z.B. die Selektierung merken.
Wenn ich aber die Suche NICHT benutze sprich die Seite nicht neu laden muss und ich somit mir die Selektierung auch nicht merken muss, so funktioniert mein Reset Button.


PS: soll ich mal den kompletten Code posten?Wenn ja.. nicht erschrecken ^^
 
Ja meinte ich ja ;)

du hast nur ein 'multiple' drin. Also kann man ja mehrere Auswählen. Und da wollt ich nur wissen ob auch alle Einträge selektiert bleiben ;)

Du kannst die php Datei ja als Anhang hochladen :D
 
Ah verdammt!! Stimmt ja ich hab eine Mehrfachselektierung drin das hab ich gar nicht beachtet. Er merkt sich natürlich nur einen Wert -_-.

PHP:
<?php
	require_once('checkuser.php');
	require_once('dbconnect.php');		
	require_once('execute.php');	
	
?>
 
<script type="text/javascript">
	function setfocus(){
		document.forms[0].Eingabe.focus();
	}
	function search(){
			$sort = $(this).attr("var");					
			$order = $(this).attr("href");	
			
			var data = $("form").serialize();			
			
				$.ajax({
					type: "POST",
					url: "facharbeiten_edit.php?focus=1",
					data: data,
					success: function(data){					
						$("#content").html(data);

					}
				});
			
			return false;
	}
	
	$("#sort a").click(function(){
			$sort = $(this).attr("var");					
			$order = $(this).attr("href");	
			
			var data = $("form").serialize();			
			
				$.ajax({
					type: "POST",
					url: "facharbeiten_edit.php?sort=" + $sort +"&order="+ $order,
					data: data,
					success: function(data){					
						$("#content").html(data);

					}
				});
			
			return false;
		})
	function request($Radio){

		var data = $("form").serialize();		
		
			$.ajax({
				type: "POST",
				url: "facharbeiten_edit.php?Form=sent",
				data: data,
				success: function(data){					
					$("#content").html(data);

				}
			});
		
		return false;
	}

	$("#form").click(function(){		
		
		$Radio = $("input:radio").serialize();		
		$catcheck = $("select").serialize();			
		
		var strFehler='';
				switch($Radio){
					case 'degree=praktikum': 						
						if(document.forms[0].title_thema.value == ""){ document.forms[0].title_thema.focus(); strFehler += "Feld Titel des Themas ist leer\n";}
						if(document.forms[0].title_cat.value == "" && $catcheck ==""){ document.forms[0].title_cat.focus(); strFehler += "Feld Kategorie ist leer\n";} break;
						
					case 'degree=bachelor':
						if(document.forms[0].title_thema.value == ""){ document.forms[0].title_thema.focus(); strFehler += "Feld Titel des Themas ist leer\n";}
						if(document.forms[0].title_cat.value == "" && $catcheck ==""){ document.forms[0].title_cat.focus(); strFehler += "Feld Kategorie ist leer\n";} break;
						
					case 'degree=master':
						if(document.forms[0].title_thema.value == ""){ document.forms[0].title_thema.focus(); strFehler += "Feld Titel des Themas ist leer\n";}
						if(document.forms[0].title_cat.value == "" && $catcheck ==""){ document.forms[0].title_cat.focus(); strFehler += "Feld Kategorie ist leer\n";} break;
						
					case 'degree=diplom':
						if(document.forms[0].title_thema.value == ""){ document.forms[0].title_thema.focus(); strFehler += "Feld Titel des Themas ist leer\n";}
						if(document.forms[0].title_cat.value == "" && $catcheck ==""){ document.forms[0].title_cat.focus(); strFehler += "Feld Kategorie ist leer\n";} break;
						
				}			
			
				if (strFehler.length>0) {
					alert("Festgestellte Probleme: \n\n"+strFehler);
					return(false);
				}		
				else{
					request($Radio);
				}
				
		return false;
	});
</script>
<?php
	
	$Form = $_GET['Form'];	
	$sort = $_GET['sort'];	
	$order = $_GET['order'];
	$focus = $_GET['focus'];
	if($focus == "1"){
		echo "<script type=\"text/javascript\">setfocus();</script>";	
	}
	if($sort ==""){$sort ="lastname";}
	
	if($Form != "sent"){	
?>

<form method="post" action="">
			
			<b class="ueberschrift">Facharbeit ausw&auml;hlen</b>
			<p class="rad" >
				<input id="praktikum" type="radio"  name="degree" checked="checked" value="praktikum">Praktikumsarbeit<br>
				<input  id="bachelor" type="radio"  name="degree" value="bachelor">Bachelorarbeit<br>
				<input  id="master" type="radio"  name="degree" value="master">Masterarbeit<br>
				<input  id="diplom" type="radio"  name="degree" value="diplom">Diplomarbeit<br>			
			</p>
			<table>				
				<b class="ueberschrift">Informationen zum Thema</b>				
				<tr>
					<td class="formtext">Titel des Themas:* </td>
					<td><input class ="forminput" type="text" name="title_thema" value= "<?php echo ($_POST['title_thema']);?>" ></td>
				</tr>
				<tr>
					<td class="formtext">Metadaten: </td>
					<td><input class ="forminput" type="text" name="meta_thema" value= "<?php echo ($_POST['meta_thema']);?>" ></td>
				</tr>
				<tr>
					<td class="formtext">Preview:</td>
					<td><input class ="forminput" type="text" name="prev_thema" value= "<?php echo ($_POST['prev_thema']);?>" ></td>
				</tr>
				<tr>
					<td class="formtext">Auszug:</td>
					<td><input class ="forminput" type="text" name="excerpt_thema" value= "<?php echo ($_POST['excerpt_thema']);?>" ></td>
				</tr>
				<tr>
					<td class="formtext">Ausgabe der Arbeit:</td>
					<td><input class ="forminput" type="text" name="start" value= "<?php echo ($_POST['start']);?>" ></td>
				</tr>
				<tr>
					<td class="formtext">Abgabe der Arbeit:</td>
					<td><input class ="forminput" type="text" name="end" value= "<?php echo ($_POST['end']);?>"></td>
				</tr>
				<tr>
					<td class="formtext">Abgabeverl&auml;ngerung:</td>
					<td><input class ="forminput" type="text" name="extent" value= "<?php echo ($_POST['extent']);?>" ></td>
				</tr>
				<b class="ueberschrift">Kategorien*</b>					
				<tr>
					<td class="formtext">Kategorien Auswahl: </td>
					<td>
					<?php
						$sql="SELECT CAID,title FROM category";
						$rs = $conn->Execute($sql);							
						print '<select class="formselect" name="category[]" size="6" multiple>';
						if($rs===false) die(mysql_error());						
							while(!$rs->EOF){								
								print "<option ".($rs->fields[0] == $_POST["category"][0] ? 'selected="selected"'  : "" )."value=".$rs->fields[0].">".$rs->fields[1]. "</option>";
								$rs->MoveNext();								
						}
					?>			
					</td>
				</tr>
				<tr>
					<td class="formtext">Neue Kategorie:</td>	
					<td><input class ="forminput" type="text" name="title_cat" value= "<?php echo ($_POST['title_cat']);?>"></td>
				</tr>
				<b class="ueberschrift">Unternehmen</b>
				<tr>
					<td class="formtext">Unternehmen Auswahl: </td>
					<td>
					<?php
						$sql="SELECT CMP_ID,name FROM company";
						$rs = $conn->Execute($sql);	
						print '<select style="width:100%" name="company" size="6" >';
						if($rs===false) die(mysql_error());
							while(!$rs->EOF){								
								print "<option value=".$rs->fields[0].">".$rs->fields[1]. "</option>" ;
								$rs->MoveNext();
							}
					?>			
					</td>
				</tr>
				<tr>
					<td class="formtext">Neues Unternehmen: </td>					
					<td><input class ="forminput" type="text" name="name_com" value="<?php echo ($_POST['name_com']);?>" ></td>
				</tr>
				<tr>
					<td class="formtext">Betreuer: </td>
					<td><input class ="forminput" type="text" name="advisor" value= "<?php echo ($_POST['advisor']);?>" ></td>
				</tr>
				<tr>
					<td class="formtext">Land: </td>
					<td><input class ="forminput" type="text" name="country" value= "<?php echo ($_POST['country']);?>" ></td>
				</tr>
				<tr>
					<td class="formtext">Adresse: </td>
					<td><input class ="forminput" type="text" name="address_com" value= "<?php echo ($_POST['address_com']);?>" ></td>
				</tr>
				<tr>
					<td class="formtext">Bundesland: </td>
					<td><input class ="forminput" type="text" name="province" value= "<?php echo ($_POST['province']);?>" ></td>
				</tr>
				</tr>
					<b class="ueberschrift">Studenten</b>								
				<?php if($order =="desc"){ ?>
					<tr class="studsort" id="sort">Sortierung: aufsteigend <td><a var="lastname" href="asc"> Nachname </td><td><a var="firstname" href="asc">Vorname</td><td><a var="matricul" href="asc">Matr.Nr.</td></tr>
				<?php } else { ?>
					<tr class="studsort" id="sort">Sortierung: absteigend <td><a var="lastname" href="desc"> Nachname </td><td><a var="firstname" href="desc">Vorname</td><td><a var="matricul" href="desc">Matr.Nr.</td></tr>
				<?php } ?>				
				<tr>
					<td class="formtext">Studenten Auswahl: </td>
					<td>
					<?php		
						$sql="SELECT human.humid,firstname,lastname,matricul
							FROM human INNER JOIN student 
							ON human.humid = student.humid
							WHERE firstname LIKE \"%".trim($_POST['Eingabe'])."%\"
							OR lastname LIKE \"%".trim($_POST['Eingabe'])."%\"
							OR matricul LIKE \"%".trim($_POST['Eingabe'])."%\"
							Order by $sort $order";												
						$rs = $conn->Execute($sql);								
												
						print '<select name="student" size="6" >';
							if($rs===false) die(mysql_error());
								while(!$rs->EOF){									
									print "<option  value=".$rs->fields[0].">".$rs->fields[2]. "  ".$rs->fields[1]. " Matr.: ".$rs->fields[3]. "</option>";
									$rs->MoveNext();										
							}							
					?>
					</td>
				</tr>
				<tr>
					<td class="formtext">Studenten suche: </td>
					<td><input class ="forminput" type="text" onkeyup="search()"name="Eingabe"  value="<?php echo ($_POST['Eingabe']);?>"></td>
				</tr>			
							
   					<td class="formtext"colspan="2"><input id="form" var="edit" type="submit"  value="Speichern">   
					<input type="reset" >
					</td>
   				
			</table>		
</form>

<?php		
}
if ($Form == "sent"){
	
	require_once('facharbeiten_editsql.php');
	
}

?>

Das ist der komplette Code.


Edit:

Mehrfachselektierung funktioniert nun:

PHP:
<?php
						$sql="SELECT CAID,title FROM category";
						$rs = $conn->Execute($sql);		
						$i = 0;
						print '<select class="formselect" name="category[]" size="6" multiple>';
						if($rs===false) die(mysql_error());						
							while(!$rs->EOF){								
								print "<option ".($rs->fields[0] == $_POST["category"][$i] ? 'selected="selected"'  : "" )."value=".$rs->fields[0].">".$rs->fields[1]. "</option>";
								$i++;
								$rs->MoveNext();								
						}
					?>

bleibt noch das Reset PRoblem ^^

GRRR. Verdammt er merkt es sich nicht, wenn ich z.b. nur den zweiten Eintrag selektier
 
Zuletzt bearbeitet:
probiers mal so:
PHP:
while(!$rs->EOF){
	$option = '<option ';
	foreach ($_POST['category'] as $category) {
		if ($rs->fields[0] == $category) {
			$option .= 'selected="selected"';
			break;
		}
	}
        print $option . " value=" . $rs->fields[0] . ">" . $rs->fields[1] . "</option>";
}

EDIT:

mir ist aufgefallen, dass du das gleiche Problem übrigens auch ganz oben hast bei: Facharbeit auswählen.
Da musst vlt auch nochmal nen php abschnitt reinsetzen ;)
 
Zuletzt bearbeitet:
Das Problem werd ich in ejder Checkbox und bei den Radio's haben. Danke dir schonmal werds gleich testen.

Edit: Ok wenn ich diesen Code so 1:1 einfüge, komm ich nichtmal mehr auf die Seite und Fehlermedlung gibts auch keine. Schau ich mir nochmal genauer an :)

Oh man ich sollte auch das MoveNext() nicht vergessen -_-. Aber die selektierung klappt wunderbar vielen Dank! Geht nur noch der Reset nicht ^^
 
Zuletzt bearbeitet:
Du könntest versuchen ne eigene Javascript function dafür zu schreiben.

Sowas in der Art:
PHP:
function resetForm() {
  var obj = document.forms[0];
  for(i=0;i<obj.elements.length;i++){
    if(obj.elements[i].type == 'text' || obj.elements[i].type == 'textarea'){
	  obj.elements[i].value = '';
	}
  }
}

Als Button dann:
HTML:
<button name="reset" type="button" onclick="resetForm();">
	Reset
</button>

So sind zumindest schonmal die Textfelder wieder löschbar.
Das kann man mit Sicherheit auch so erweitern, dass man auch das Selektierte wieder zurücksetzen kann. :D
 
Hab ich auch schon dran gedacht zur Not einfach eine Javascript funktion zu schreiben. Textfelder gehen ja zu löschen nur Combox nicht. Werd dann mal schauen wie ich es erweitern kann ^^
Ergänzung ()

PHP:
document.forms[0].elements["category[]"].options[i].selected = false;

so geht der Reset nun auch in der Combobox :)
Ergänzung ()

etwas seltsam ist die tatsache, das ich es nicht in die gleiche forschleife schreiben kann. Sonst funktioniert das löschen der Texte nicht mehr.
PHP:
	function resetForm() {
		var obj = document.forms[0];
		
		for(i=0;i<obj.elements.length;i++){
		
			if(obj.elements[i].type == 'text' || obj.elements[i].type == 'textarea'){
			  obj.elements[i].value = '';			  
			} 
			
		}
		for(i=0;i<obj.elements.length;i++){
			obj.elements["category[]"].options[i].selected = false;
			obj.elements["student"].options[i].selected = false;
			obj.elements["company"].options[i].selected = false;
		}
	}

muss also extra noch eine weitere Schleife machen.
 

Ähnliche Themen

Zurück
Oben