Array in Checkbox und Input feld

ayhank

Mitglied
Hi Leute,

Frage: Ist es möglich ein Array, was zu auswertung zu checkboxen dient, auch in ein input feld hinzufügen kann ?, problem bei mr ist, ich frag nach Programmier kentnissen, wenn meine vorgeschlagene, nicht dabei ist, soll der user, selber welche angeben, ist es dann möglich das ganze mit einem array zu lösen?, weil von der ausgabe her würde es einiges einfacher gestalten, da sich alles nur auf ein array beziehen würde, ich poste mal wie der ISt- zustand ist.

PHP:
       <tr><th align="left">Programmier Kentnisse:</th></tr>      
                     <tr><th align="left">Java:<input type="checkbox" name="check[]" value="Java"></td></tr>
                  <tr><th align="left">PHP:<input type="checkbox" name="check[]" value="PHP"></td></tr>
                <tr><th align="left">HTML:<input type="checkbox" name="check[]" value="HTML"></td></tr>
                <tr><th align="left">CSS:<input type="checkbox" name="check[]" value="CSS"></td></tr>
               <tr><th align="left">C:<input type="checkbox" name="check[]" value="C"></td></tr>
               <tr><th align="left">C++:<input type="checkbox" name="check[]" value="C++"></th></tr>
               <tr><th align="left">MySQL:<input type="checkbox" name="check[]" value="MySQL"></th></tr>
                 <tr><th align="left">Assembler:<input type="checkbox" name="check[]" value="GDI"></th></tr>
                   <tr><th align="left">Android:<input type="checkbox" name="check[]" value="Android"></th></tr>
                   <tr><th align="left">Andere Sprachen:</th><th><input type="text" name="asprachen" /></th><td>E

zu zeit speicher ich das in nem seperaten feld in der db, aber bin der meinung, in einem array sollte das besser sein, hat jemand nen vorschlag ? bzw denktanstoß, ich bedanke mich schonmal in voraus !
 
Mit kommas getrennt. Anschliessend in PHP mittels explode() in einen Array wandeln
 
Aber fügt, das arrays und einen string zusammen ?, das array in der checkbox wurde ja durch implode übergeben an die datenbank, das geht ja alles, aber ich weiß nicht wie du das meinst mit explode, hab eben mal nachgeschaut und nen kleinen test gemacht, aber wenn ich das so über einen string mache, überschreibt er doch ständig alles oder ist das nicht
 
Nebenbei. Warum öffnest du TH-Tags und schliesst sie als TD-Tags? (ab C++)

Und etwa so könnte die Auswertung aussehen
PHP:
if(isset($_POST['submit'])){
    //Inpute auslesen
    $check=$_POST['check'];
    $asprachen = $_POST['$asprachen'];
    //ggf $check initialisieren falls nix übergeben wurde
    if(is_null($check)) $check = array();
    //Andere Sprachen auslesen, trimmen und filtern (Leere Strings entfernen)
    $asprachenA = array_filter(array_map('trim', explode(',', $asprachen)));
    
    //Bei beiden Arrays die Keys setzen. Mit strtoupper() sicherstellen dass nicht wegen Gross/Kleinscrheibungsfehler etwas doppelt vorkommt
    if(count($check) > 0){
        $check = array_combine(array_map('strtoupper', $check), $check);
    }
    if(count($asprachenA) > 0){
        $asprachenA = array_combine(array_map('strtoupper', $asprachenA), $asprachenA);
    }

    //Und zusammennemen. Bei doppeltem Schlüssel wird nur der aus $check übernommen
    $sprachen = array_merge($check, $asprachenA);
    
    var_dump($sprachen);
}
 
Habs mal probiert aber er trägt nicht ein, hab dann unten im query an die DB, es abgeändert, aber er trägt nicht ein es kommt die fehler meldung, das der eintrag nicht möglich sei, ich gib dir mal den ganzen php code

PHP:
if(isset($_GET["page"])) {if($_GET["page"] == "2") {
    
     $check=($_POST['check']);
    $asprachen = ($_POST['$asprachen']);
    //ggf $check initialisieren falls nix übergeben wurde
    if(is_null($check)) $check = array();
    //Andere Sprachen auslesen, trimmen und filtern (Leere Strings entfernen)
    $asprachenA = array_filter(array_map('trim', explode(',', $asprachen)));
    
    //Bei beiden Arrays die Keys setzen. Mit strtoupper() sicherstellen dass nicht wegen Gross/Kleinscrheibungsfehler etwas doppelt vorkommt
    if(count($check) > 0){
        $check = array_combine(array_map('strtoupper', $check), $check);
    }
    if(count($asprachenA) > 0){
        $asprachenA = array_combine(array_map('strtoupper', $asprachenA), $asprachenA);
    }
 
    //Und zusammennemen. Bei doppeltem Schlüssel wird nur der aus $check übernommen
    $sprachen = array_merge($check, $asprachenA);
    
    var_dump($sprachen);

        $anrede = ($_POST["anrede"]);
        $vname = ($_POST["vname"]);
        $nname = ($_POST["nname"]);
        $email = strtolower($_POST["email"]); 
        $geb = ($_POST["geb"]);
        $alt = ($_POST["alt"]);
        $sgang = ($_POST["sgang"]);
        $titel = ($_POST["titel"]);
        $pw = md5($_POST["pw"]);
        $pw2 = md5($_POST["pw2"]);
    
     $errors = array(); 
      
if ($anrede == '') {
         
  $errors[] = 'Anrede' ;
  
     }
     
if ($vname == '') { 
    
  $errors[] = 'Vorname' ;
  
    } 

if ($nname == '') { 
    
  $errors[] = 'Nachname'; 
  
} 
if ($email == '') {
         
  $errors[] = 'Email' ;
  
     }
if ($geb == ''){
  
    $errors[] = 'Geburtsdatum';
}

if ($alt == ''){
  
    $errors[] = 'Alter';
}

if ($sgang == ''){
  
    $errors[] = 'Studiengang';
}
if ($titel == ''){
  
    $errors[] = 'Angehender Titel';
}

if(!isset($_POST["check"]) && ($_POST['asprachen']))
{
    echo " Sie müssen eine Programmiersprache angeben ******</br>";
    
}

if(!isset($_POST['agbcbox'])) 
{ 
 echo'Gehen Sie <a href="studentregister.php">zurück</a> und akzeptieren Sie die AGB Bitte</br>';  
}  

if (count($errors) > 0) { 
  //wenn ja, fehler ausgeben 
  echo 'Sie müssen folgende Felder ausfüllen!<br />'. implode(',</br> ', $errors); 
   
            if($pw!=$pw2){
                echo'</br>bitte wiederholen Sie ihre Passworteingabe';
                
                 if(checkmail($email)==false){
           
                  echo '</br> Ihre Email ist nicht korrekt';
                    }
     
    
            }   
	} else {
           
            
			$verbindung = mysql_connect("localhost", "root", "")
			or die ("Fehler im System");

			mysql_select_db("salayth")
			or die ("Verbidung zur Datenbank war nicht möglich...");
			
			$control = 0;		
			$abfrage = "SELECT email FROM student WHERE email = '$email'";
			$ergebnis = mysql_query($abfrage);
			while($row = mysql_fetch_object($ergebnis))
				{
					$control++;
				}	
			if($control != 0) {
                            ?>
        
                <center>Diese Email ist schon vergeben. Bitte verwende sie andere Email....<a href="studentregister.php">zurück</a></center>
			
            <?php
                                } else {
                                     
                                   
                                    
			$eintrag = "INSERT INTO student (email, vname, nname, pw, alt, geb, titel, sgang, freigabe, progsprachen, anrede)

			VALUES
			('$email', '$vname', '$nname', '$pw','$alt','$geb','$titel','$sgang', '1', '$sprachen','$anrede')";

			$eintragen = mysql_query($eintrag);
                       
			if($eintragen == true) {
                            
                            ?>
            
                    
                            
                         <center>Vielen Dank. Du hast dich nun registriert...<a href= "studentlogin.php">Jetzt anmelden</a></center>
                                
                            
        <?php
			} else {
                            ?>
      
             
				Fehler im System. Bitte versuche es später noch einmal...
                     </div>
 
Notice: Undefined index: $asprachen in C:\xampp\htdocs\PhpProject2\studentregister.php on line 85
array(3) { ["JAVA"]=> string(4) "Java" ["PHP"]=> string(3) "PHP" ["HTML"]=> string(4) "HTML" }
Notice: Array to string conversion in C:\xampp\htdocs\PhpProject2\studentregister.php on line 212
INSERT INTO student (email, vname, nname, pw, alt, geb, titel, sgang, freigabe, progsprachen, anrede) VALUES ('mehran@hotmail.de', 'Mehran', 'Ahmedi ', '32e22d1c8416af3f2a612da9121f2c05','ayhan','17.06.1989','ayhan','ayhan', '1', 'Array','Herr') Fehler im System. Bitte versuche es später noch einmal...


der liefert mir das aus, bei progsprachen erhält array, dabei hatte ich mehrere ausgewählt,

Yaslaw, hat es etwas damit zu tun, das check, bei den checkboxen, den name "name = check[]" hat ?, du deklarierst das ja als nen array ? oder versteh ich das falsch


PHP:
  <tr><th align="left">Java:<input type="checkbox" name="check[]" value="Java"></th></tr>
                  <tr><th align="left">PHP:<input type="checkbox" name="check[]" value="PHP"></th></tr>
                <tr><th align="left">HTML:<input type="checkbox" name="check[]" value="HTML"></th></tr>
                <tr><th align="left">CSS:<input type="checkbox" name="check[]" value="CSS"></th></tr>
               <tr><th align="left">C:<input type="checkbox" name="check[]" value="C"></th></tr>
               <tr><th align="left">C++:<input type="checkbox" name="check[]" value="C++"></th></tr>
               <tr><th align="left">MySQL:<input type="checkbox" name="check[]" value="MySQL"></th></tr>
                 <tr><th align="left">Assembler:<input type="checkbox" name="check[]" value="GDI"></th></tr>
                   <tr><th align="left">Android:<input type="checkbox" name="check[]" value="Android"></th></tr>
                   <tr><th align="left">Andere Sprachen:</th><th><input type="text" name="asprachen" /></th><td>Eingabebeispiel:Pearl, MSDOS</td></tr>
 
Naja, Wenn der Name check[] ist, ists ein Array. Ich deklariere da gar nix was du nicht bereits deklariert hast

Zu deienr Frage vorher. Nein, da verwertest due die Array-Auswahl nirgends. Egal was in check[] abgefüllt ist. Dein INSERT-Statement kümmerts nicht
 
Zurück