helmuthelmut2000
Goto Top

Daten aus MSSQL DB auslesen und den Richtigen RadioButton aktiv machen

Hallo,

Ich habe folgendes Problem.
Ich habe ein PHP Formular wo ich Daten in eine MSSQL DB schreibe.
Da sind auch vier so Radio Buttons zum anklicken.
Button 1, 2, 3, 4
Das schreibt dann die Zahl 1, 2, 3, 4 in die DB.

Dann habe ich noch ein Formular wo ich die Daten ändern kann.
Da lese ich aus der DB die Daten. Und jetzt meine Frage:

Wie kann ich das machen wenn z.B. die Zahl 3 in der DB steht sollte auch der
Radio Button 3 hinterlegt sein?

Gruß
Helmut

Content-Key: 167355

Url: https://administrator.de/contentid/167355

Printed on: April 26, 2024 at 12:04 o'clock

Member: BAMBOIHH
BAMBOIHH Jun 01, 2011 at 15:48:46 (UTC)
Goto Top
Du musst mit mit 'checked' und 'unchecked' arbeiten.

Ein nettes Tutorial (allerdings auf Englisch) findest Du hier: http://www.homeandlearn.co.uk/php/php4p10.html
Member: nxclass
nxclass Jun 01, 2011 at 20:47:08 (UTC)
Goto Top
<input type="radio" checked="checked" name="" value="" />  
Member: EvilMoe
EvilMoe Jun 01, 2011 at 21:42:46 (UTC)
Goto Top
Ich verstehe seine Frage anders, er möchte einen Radio Butten einen Wert zuweisen.
Das geht so
<input type="radio" checked="checked" name="" value="Hier_dein_Wert" />  

Wie mein vorredner sagte, das checked="checked" bedeutet das er standardmäßig markiert ist.
Falls das nicht gewünscht ist einfach entfernen.
Member: helmuthelmut2000
helmuthelmut2000 Jun 02, 2011 at 07:58:59 (UTC)
Goto Top
Hallo,

Nein, Ich hab das so in die DB geschrieben:

echo "<input type='radio' name='Note' value='1' id='note_1' /><span class='abstand'>Note 1</span>";
echo "<input type='radio' name='Note' value='2' id='note_2' /><span class='abstand'>Note 2</span>";
echo "<input type='radio' name='Note' value='3' id='note_3' /><span class='abstand'>Note 3</span>";
echo "<input type='radio' name='Note' value='4' id='note_4' /><span class='abstand'>Note 4</span>";

Wenn man jetzt den Note 1 Button aktiv hat dann schreibt es die 1 in eine DB.

Mit dem nächsten Formular lese ich die Daten wieder aus und will sie evt auch ändern.

Wie muss ich das machen damit mir zB. auch wieder bei der 1 der Button 1 aktiv ist und ich evt auf die 3 ändern kann?
Member: EvilMoe
EvilMoe Jun 02, 2011 at 08:01:30 (UTC)
Goto Top
Steht in meinem Beitrag oder in denen vor mir.
Musst noch etwas ergänzen:

// Das dann für alle Radio buttons
if($row->value == 1) {
echo "<input type='radio' name='Note' value='1' id='note_1' checked="checked" /><span class='abstand'>Note 1</span>";  
} else {
echo "<input type='radio' name='Note' value='1' id='note_1'  /><span class='abstand'>Note 1</span>";  
}
Member: helmuthelmut2000
helmuthelmut2000 Jun 02, 2011 at 19:17:27 (UTC)
Goto Top
Hallo,

Das hab ich jetzt so versucht, aber da bekomme ich eine Fehlermeldung:

Notice: Undefined variable: row in ............

Was stimmt denn da nicht?
Member: EvilMoe
EvilMoe Jun 02, 2011 at 19:20:19 (UTC)
Goto Top
Da muss der Wert aus deiner Datenbank stehen, der Wert deines Radios.
Member: helmuthelmut2000
helmuthelmut2000 Jun 02, 2011 at 19:43:02 (UTC)
Goto Top
Hallo,

Das geht irgendwie nicht richtig.
In dem Formular hab ich noch ein anderes Textfeld das lese ich so aus der DB:

echo "<input value='" . $dsatz['Bezeichnung'] . "' type='text' name='bezeichnung' id='bezeichnung' size='20' maxlength='18' />";

Wie ist das denn dann bei den Radiobutton, da heist das DB Feld Note und die Werte sind 1 2 3 4 und leer.

Danke.
Member: EvilMoe
EvilMoe Jun 02, 2011 at 19:50:53 (UTC)
Goto Top
$note = (int)$dsatz['note']; // dein wert aus der DB  

for($i=1; $i <= 4; $i++) {
  if($note == 1) {
       echo "<input type='radio' name='Note ".$i."'  value='".$note."' id='note_".$i."' checked='checked' /><span class='abstand'>Note ".$i."</span>";  
  } else {
      echo "<input type='radio' name='Note ".$i."'  value='".$note."' id='note_".$i."' '  /><span class='abstand'>Note ".$i."</span>";  
 }
}
Ungetestet
Member: Guenni
Guenni Jun 03, 2011 at 09:07:16 (UTC)
Goto Top
Hi Evil,

Ungetestet . . . face-sad

$note = (int)$dsatz['note']; // dein wert aus der DB
if($note == 1) { . . .

. . . hier wäre die Bedingung nur erfüllt, wenn der Wert aus der DB tatsächlich "1" ist.

Durch . . .

name='Note ".$i."'

. . . erhält jeder Radio-Button einen anderen Namen: "Note 1", "Note 2" . . . usw., der außerdem ein Leerzeichen enthält.


Hi Helmut,

trotz der 2 kleinen Fehler ist der Code-Schnipsel von Evil ganz brauchbar. Den Wert aus der DB lass' ich jetzt mal per rand(1 ,4) erzeugen,

also "Zufallszahl", du kannst aber trotzdem einen anderen Radio anklicken, dessen Wert dann gesendet wird.


Evil's Code-Schnipsel, etwas ab(um)geändert . . .

<?php
if(isset($_POST['Note'])){  
 echo "Gesendet: Note ".$_POST['Note'];  
}
/*
* Wenn Radio-Buttons gesendet werden, die alle den gleichen Namen haben,
* wird nur der Wert eines Buttons gesendet, der angeklickt ist.
*/
echo "<pre>";  
print_r($_POST);
echo "<pre>";  
?>
<form action="" method="post">  
<?php
$note = rand(1, 4); //Wert aus DB (Zufallszahl)

for($i=1; $i <= 4; $i++) {
  if($note == $i) {
       echo "<input type='radio' name='Note'  value='".$i."' id='note_".$i."' checked='checked' /><span class='abstand'>Note ".$i."</span>";  
  } else {
      echo "<input type='radio' name='Note'  value='".$i."'  id='note_".$i."' '  /><span class='abstand'>Note ".$i."</span>";  
 }
}
 
?>
<p><input type="submit" /></p>  
</form>

Wenn du nicht weißt, wie du gesendete Formulardaten im PHP-Script ansprechen sollst, kann es hilfreich sein, sich das Array $_POST

mit der Funktion print_r($_POST) ausgeben zu lassen. Bei Formularelementen, die durch ein PHP-Script erzeugt und mit Werten gefüllt

werden, kann ein Blick auf den Quelltext der erzeugten Ausgabe im Browser ebenfalls helfen, Fehler zu entdecken.


Gruß
Günni
Member: EvilMoe
EvilMoe Jun 03, 2011 at 09:30:39 (UTC)
Goto Top
@günni

Ich habe das direkt im Browser geschrieben. Dadurch sind mit die kleinen Fehler unterlaufen ;)
Aber du hast mich ja richtig verbessert ;)
Member: helmuthelmut2000
helmuthelmut2000 Jun 03, 2011 at 17:19:46 (UTC)
Goto Top
Hallo,

Danke für die Lösung.
Das hab ich jetzt so hinbekommen.

Gruß
Helmut
Member: helmuthelmut2000
helmuthelmut2000 Sep 15, 2011 at 20:06:20 (UTC)
Goto Top
Hallo,

Geht das auch mit einem select Feld?
Also wo in einem Scrollfeld mehrere Daten sind,
und beim auslesen einer mssql db sollte gleich die
richtige Zeile anstehen.

Danke.
Member: Guenni
Guenni Sep 17, 2011 at 10:00:23 (UTC)
Goto Top
@helmuthelmut2000,

Geht das auch mit einem select Feld?

Ja, auch das geht.

<?php
/*
* z.B. Wert aus Formular
*/
$str="e3";  
/*
* z.B. Ergebnis aus DB-Abfrage
*/
$str_arr=array(0 => "e1", 1 => "e2", 2 => "e3", 3 => "e4");  
/*
* Ausswahlliste
*/
echo "<select name='selList'>";  
foreach($str_arr as $in_arr){
 if($in_arr == $str){
  echo "<option value='$in_arr' selected>$in_arr</option>";  
 }else{
 			 echo "<option value='$in_arr'>$in_arr</option>";  
 			 }
}
echo "</select>";  
?>

Gruß
Günni
Member: helmuthelmut2000
helmuthelmut2000 Sep 17, 2011 at 20:53:57 (UTC)
Goto Top
Hallo Günni,

Ich hab da noch ein Problem mit dem Wert aus der DB zu lesen.

Ich muß das doch so machen:

$str=' . $dsatz["ab"] . ';

Dann geht das bei mir immer auf e1, also das erste auswahl Feld.

Muß ich das anders machen?
Member: helmuthelmut2000
helmuthelmut2000 Sep 17, 2011 at 21:03:53 (UTC)
Goto Top
Hallo Günni,

Danke es geht.

so:

$str="" . $dsatz['ab'] . "";


Gruß
Helmut
Member: helmuthelmut2000
helmuthelmut2000 Sep 18, 2011 at 08:55:06 (UTC)
Goto Top
Hallo,

Kann man das auch irgendwie so machen das man einen anderen Wert aus der DB liest und schreibt.

echo "<option value='5'>Seite 5</option>";

Jetzt sollte, wenn die 5 aus der DB gelesen wird im Scroll die Seite 5 gleich angezeigt werden.

Geht das?
Member: Guenni
Guenni Sep 21, 2011 at 20:12:49 (UTC)
Goto Top
@helmuthelmut2000,

Kann man das auch irgendwie so machen das man einen anderen Wert aus der DB liest und schreibt.

echo "<option value='5'>Seite 5</option>";

Jetzt sollte, wenn die 5 aus der DB gelesen wird, im Scroll die Seite 5 gleich angezeigt werden.

Wenn du im Select Texte ausgeben willst (Seite 1 - Seite n, oder irgendwas), so kannst du diese ja in einem

Array ablegen. Die Indexe legst du ebenfalls in einem Array ab. Jetzt vergleichst du dein Abfrageergebnis in einer

foreach-Schleife mit den Indexen und gibst bei Übereinstimmung einfach den entspr. Eintrag aus dem Textearray

als "selected" aus. Z.B.:

<?php
/*
* Mit den Werten wird die Select-Box gefüllt.
*/
$option_arr=array(1 => "Seite 1", 2 => "Seite 2", 3 => "Seite 3", 4 => "Seite 4", 5 => "Seite 5");  
/*
* Die Schlüssel(Indexe) in einem Array ablegen.
*/
$key_arr=array_keys($option_arr);
/*
* Per Zufall ein Abfrageergebnis erzeugen.
*/
$data_set=rand(1,5);
/*
* Select-Box "bauen". 
*/
echo "<select>";  
foreach($key_arr as $key){
/*
* Bei Übereinstimmung von Abfrageergebnis mit einem Index gibst du den entsprechenden
* Eintrag aus "$option_arr" als "selected" aus. 
*/
 if($key == $data_set){
  echo "<option value='$key' selected>$option_arr[$key]</option>";  
/*
* Alle anderen Einträge werden ohne "selected" ausgegeben. 
*/
 }else{
 			 echo "<option value='$key'>$option_arr[$key]</option>";  
 			 }
}
echo "</select>";  
?>


Gruß
Günni
Member: helmuthelmut2000
helmuthelmut2000 Sep 22, 2011 at 20:12:10 (UTC)
Goto Top
Hallo Günni,

Und wo gibt man da den Wert aus der DB an?

$str="" . $dsatz['ab'] . "";

Gruß
Helmut
Member: Guenni
Guenni Sep 24, 2011 at 14:26:40 (UTC)
Goto Top
@helmuthelmut2000,

Und wo gibt man da den Wert aus der DB an?

Im zweiten Beispiel in Zeile 13 ($data_set=rand(1,5); ).

Dort habe ich ein Abfrageergebnis ja einfach per Zufall erzeugt.

Die Texte des Selects sind ja in $option_arr abgelegt, und die Indexe von $option_arr in $key_arr.

In der foreach-Schleife (foreach($key_arr as $key){ . . . ) wird nun geprüft, ob ein

vorhanderner $key mit einem Abfrageergebnis übereinstimmt. Wenn ja, wird im Select

ein entspr. Eintrag als "selected" ausgegeben.


Gruß
Günni
Member: helmuthelmut2000
helmuthelmut2000 Oct 20, 2011 at 12:06:32 (UTC)
Goto Top
Hallo Günni,

Wie schaut den das script aus wenn ich keine select Feld und Radio Button habe.
Also nur ein Normaler Text.

In der DB Steht z.B. 2 da sollte dann 2.Seite erscheinen oder bei der 3 sollte 3.Seite kommen.

Gruß
Helmut