Zum Inhalt springen

checkbox ein mal auswerten

Erstellt am 15. Mai 2007 · 5 Antworten · letzte Antwort am 17. Mai 2007

Tags: Frage

Unbekannter Benutzer ·

Hallo,

eine kurze beschreibung von meinem problem:
ich möchte zu verschiedenen fragen einen wert von 5-1 abgeben könnnen.
Die texte lese ich von einer tabelle "fragen" und gebe diese in zeile (18-) aus.
In einer anderen tabelle "bewertung" schreibe ich meine werte rein.
Dazu habe ich in der tabelle "bewertung" einen Field "frageid", die auf die uid der tabelle "fragen" zeigt.
Das Problem:
Wenn ich z.B. zu frage 1 den wert 5 abgebe, wird in der datenbank den wert 5 nicht nur für frage 1, sondern für alle fragen gespeichert.

kann mir jemand das licht am ende des tunels zeigen?

Danke im Voraus!

funktion(){
		
		...
		//Lese alle Daten aus der Datenbank aus und speicher diese in $rows
		$rows = $this->getItems();
		
		
		$url = $this->pi_getPageLink($GLOBALS['TSFE']->id);

		$content .= '<form action="'.$url.'" method="POST">';
		
		while( list($c,$row)=each($rows) ){		
			

			// FORMULAR  ///////////////////////
			//$content.= '<form action="'.$url.'" method="POST">';
		
			$markerArray["###TEXT1###"] = $row['frage'];

			$id = $row['uid'];
			
			$markerArray["###CHECKBOX###"] = 
			 '<input type="radio" name="'.$this-" />prefixId.'[amigood]=>'.$id.'" value="5">
			  <input type="radio" name="'.$this-" />prefixId.'[amigood]=>'.$id.'" value="4">
			  <input type="radio" name="'.$this-" />prefixId.'[amigood]=>'.$id.'" value="3">
			  <input type="radio" name="'.$this-" />prefixId.'[amigood]=>'.$id.'" value="2">
			  <input type="radio" name="'.$this-" />prefixId.'[amigood]=>'.$id.'" value="1">';
			  
	
			$id = $row['uid'];
				
			
			if( isset($this->piVars['amigood']) )
			{
					
				$amigood = $this->piVars["amigood"];	
				#t3lib_div::debug($this->piVars['amigood']);	
				
				$sql = "INSERT INTO `tx_score_bewertung` (`tx_score_frageid`,`value`) VALUES('$id' ,'$amigood')";

				$result = $GLOBALS['TYPO3_DB']->sql_query($sql);
	
				$content .= $GLOBALS['TYPO3_DB']->sql_error();
				
				$content .= '<p>You voted: ' . $amigood . ' for Question no.' . $id . '</p>';
			
			}
		

		}// Ende While

				
		$button = '<input type="submit" value="Abschicken!" /></form>'; 		
				
        $markerArray["###BUTTON###"] = $button;
        $content .= $button;
	        
		return $content;
		
		...
		
	}//Funkton Ende
two-b · · Beste Antwort

Das wird wohl daran liegen, dass Deine Checkboxen alle den gleichen Namen haben. Vllt mal so:

#
$markerArray["###CHECKBOX###"] =
#
                         '<input type="radio" name="'.$this-" />prefixId.'[amigood]=>'.$id.'_1" value="5">
#
                          <input type="radio" name="'.$this-" />prefixId.'[amigood]=>'.$id.'_2" value="4">
#
                          <input type="radio" name="'.$this-" />prefixId.'[amigood]=>'.$id.'_3" value="3">
#
                          <input type="radio" name="'.$this-" />prefixId.'[amigood]=>'.$id.'_3" value="2">
#
                          <input type="radio" name="'.$this-" />prefixId.'[amigood]=>'.$id.'_4" value="1">';
steffenk ·

da Du das gleiche Formular für alle Fragen nutzt, musst Du das auch unterscheiden.

Deine radios müssen also so aussehen:

<input type="radio" name="'.$this->prefixId.'[amigood]['.$id.']" value="5">

Jetzt hast Du natürlich ein Array, was Du bei Deiner Abfrage und beim speichern berücksichtigen musst.

Unbekannter Benutzer ·

Hallo steffenk und danke für die Antwort!

in $this->piVars['amigood'][$id] stehen jetzt die richtige werte
und es funktioniert alles.

Besten Dank!

lg
LU

steffenk ·

wenn die piVar leer ist, dann ist der Name falsch, das kannst Du ja im HTML überprüfen. es sollte so aussehen:

<input type="radio" name="tx_ext_pi1[amigood][1]" value="5">
...