helmuthelmut2000
Goto Top

Eine ganze zeile auswählen

Hallo,

Ich hab da ein Problem,
Ich habe mit PHP und MSSQL eine Tabelle erstellt und jetzt muß
Ich die auch auswählen können zum ändern oder löschen.
Jetzt mach ich das mit :

echo "<td><input type='radio' name='auswahl' value='" . $dsatz["Schluessel"] . "'></td>";  

Ich hätte das etwas schöner, das man mit einem Klick auf die Zeile das auswählen kann.
Weis jemand wie man das macht?

Geht das mit Java oder mit PHP?

Danke.

Gruß
Helmut

Content-Key: 41697

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

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

Member: filippg
filippg Oct 08, 2006 at 22:59:45 (UTC)
Goto Top
Hallo,

du kannst einfach einen Hyperlink in jeder Zeile machen. Als Ziel (url) gibst du dann halt die entsprechende Seite an (wie jetzt auch) und hängst "?auswahl=$dsatz["Schluessel"]" an. Die Ziel-Seite musst du halt u.U. ein wenig Ändern, weil die Daten jetzt per GET über tragen werden ($_GET['...']), statt per POST ( $_POST['...]).

Filipp
Member: helmuthelmut2000
helmuthelmut2000 Oct 10, 2006 at 19:45:42 (UTC)
Goto Top
Hallo Filipp,

Irgend etwas geht da nicht so wie ich will,
Ich kopiere dir mal die Seite vielleicht kanst du mir dann
etwas genauer sagen wo ich das reinschreiben soll.
Oder findest du auch einen anderen Fehler.
Fomatiert und Farbe bekommt die Seite erst wen alles funktioniert.

<html>
<body>
Wählen Sie aus, welcher Datensatz geändert werden soll:<p>
<form action = "Teil2_2.php" method = "post">  
<?php
   //alle Fehler im Browser anzeigen
   ini_set("diplay_errors",1);  
   error_reporting(E_ALL);

define ('MSSQL_HOST','SQLSERVER');  
define ('MSSQL_USER','sa');  
define ('MSSQL_PASS','Passwort');  
define ('MSSQL_DATABASE','Datenbank');  

$db_link=mssql_connect(MSSQL_HOST,MSSQL_USER,MSSQL_PASS);
$select=mssql_select_db(MSSQL_DATABASE)or die(mssql_error());

   $res = mssql_query("select * from Ergebnisse");  
   $num = mssql_num_rows($res);


   // Tabellenbeginn
   echo "<table border>";  

   // Überschrift
   echo
        "<tr>  
         <td></td>
         <td>D1</td>
         <td>D2</td>
         <td>D3</td>
         <td>D4</td>
         <td>D5</td>
         <td>D6</td>
         <td>D7</td>
         <td>Schluessel</td>
         </tr>";  

  while ($dsatz = mssql_fetch_assoc($res))
  {
     echo "<tr>";  
     echo "<td><input type='radio' name='auswahl' value='" . $dsatz["Schluessel"] . "'></td>";  
     echo "<td>" . $dsatz["D1"] . "</td>";  
     echo "<td>" . $dsatz["D2"] . "</td>";  
     echo "<td>" . $dsatz["D3"] . "</td>";  
     echo "<td>" . $dsatz["D4"] . "</td>";  
     echo "<td>" . $dsatz["D5"] . "</td>";  
     echo "<td>" . $dsatz["D6"] . "</td>";  
     echo "<td>" . $dsatz["D7"] . "</td>";  
     echo "<td>" . $dsatz["Schluessel"] . "</td>";  
     echo "</tr>";  
  }   
   // Tabellenende
   echo "</table>";  
?>
   <p>
   <input type="submit" value="Datensatz anzeigen">  
</form>
</body>
</html>
Danke.

Gruß
Helmut
Member: filippg
filippg Oct 10, 2006 at 20:44:11 (UTC)
Goto Top
Hallo,

ändere die Zeile
echo "<td><input type='radio' name='auswahl' value='" . $dsatz["Schluessel"] . "'></td>";  
in
 echo "<td><a href="Teil2_2.php?auswahl='+$dsatz["Schluessel"] +'">'+$dsatz["Schluessel"]+'</td>";  

Alles, was etwas mit <form> zu tun hat (inputs, form-Tag) kannst du entfernen.
In der teil2_2.php kannst du dann über $_GET["auswahl"] erfahren, welcher Datensatz/Schlüssel angeklickt wurde.
Ob das jetzt das ist, was du wolltest weiss ich auch nicht, aber so habe ich deine Frage verstanden.
Member: helmuthelmut2000
helmuthelmut2000 Oct 11, 2006 at 08:42:25 (UTC)
Goto Top
Hallo,

Wenn ich die Zeile so einfüge dann bekomme ich eine Fehlermeldung:

Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in C:\Programme\Apache... on Line 42  

Stimmt da noch was mit den Hochkommas nicht?

Gruß
Helmut
Member: filippg
filippg Oct 11, 2006 at 10:09:16 (UTC)
Goto Top
Ja, das kann sein. Die Teilstrings werden wohl einfach nicht mit einem "+" verknüpft, sondern mit einem ".". Ersetze jedes "+" durch einen "." (oder doch ","?). Da das jede Sprache anders handhabt komme ich hier immer durcheinandern. Ausserdem fehlt als vorletztes Zeichen (direkt vor dem Semikolon) in der Zeile ein einfaches Hochkomma.
Auf sowas achte ich bei so Posts auch nicht wirklich, ich will Prinzipien erklären. Die Überprüfung/Korrektur der Syntax überlasse ich dann den Fragestellern.

Filipp
Member: helmuthelmut2000
helmuthelmut2000 Oct 11, 2006 at 19:16:11 (UTC)
Goto Top
Hallo,

Geht leider noch nicht ich bekomme immer noch den Fehler:

Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in C:\Programme...  
on line 42

Fällt dir vielleicht noch was ein?
Ich habe jetzt . und , versucht.

Gruß
Helmut
Member: helmuthelmut2000
helmuthelmut2000 Oct 11, 2006 at 19:32:10 (UTC)
Goto Top
Hallo,

Alles klar Super es klapt.
a href='Teil2...   und nicht   "Teil2.....  

Viilen Dank.
Member: helmuthelmut2000
helmuthelmut2000 Oct 11, 2006 at 20:05:09 (UTC)
Goto Top
Hallo,

Da hab ich mich zu früh gefreut.
Es gibt zwar keine Fehler aber die Felder bleiben leer.
Ich hab da jetzt so:
echo "<td><a href='Teil2_2.php?auswahl='" . $dsatz["Schluessel"] . '>' . $dsatz["Schluessel"] . '</td>"';  

Gruß
Helmut
Member: helmuthelmut2000
helmuthelmut2000 Oct 13, 2006 at 18:57:37 (UTC)
Goto Top
Hallo,

Ich krig das nicht hin.
Kannst du mir vielleicht noch einen Tipp geben wo
noch ein Fehler sein könnte?


Gruß
Helmut
Member: filippg
filippg Oct 13, 2006 at 22:21:48 (UTC)
Goto Top
Naja, dass sieht so eigentlich nicht ganz schlecht aus. Poste nochmal den ganzen Code... und überprüfe nochmal, ob nicht evtl. $dsatz["Schluessel"] einfach leer ist. Fehlermeldung kommt keine?

Filipp
Member: helmuthelmut2000
helmuthelmut2000 Oct 13, 2006 at 23:55:43 (UTC)
Goto Top
Hallo,

Ja das ist ja das problem das keine Fehlermeldung kommt,
Das Feld Schluessel ist nicht leer, es wird auch zum auswählen angezeigt.
Nur auf der zweiten Seite bleiben die Felder zum ändern leer.

Ich kopiere mal den genzen Text rein.

<html>
<body>
Wählen Sie aus, welcher Datensatz geändert werden soll:<p>
<form action = "Teil2_2.php" method = "Post">  
<?php
   //alle Fehler im Browser anzeigen
   ini_set("diplay_errors",1);  
   error_reporting(E_ALL);

define ('MSSQL_HOST','SQLSERVER');  
define ('MSSQL_USER','sa');  
define ('MSSQL_PASS','Passwort');  
define ('MSSQL_DATABASE','Datenbank');  

$db_link=mssql_connect(MSSQL_HOST,MSSQL_USER,MSSQL_PASS);
$select=mssql_select_db(MSSQL_DATABASE)or die(mssql_error());

   $res = mssql_query("select * from Ergebnisse");  
   $num = mssql_num_rows($res);


   // Tabellenbeginn
   echo "<table border>";  

   // Überschrift
   echo
        "<tr>  
         <td></td>
         <td>D1</td>
         <td>D2</td>
         <td>D3</td>
         <td>D4</td>
         <td>D5</td>
         <td>D6</td>
         <td>D7</td>
         <td>Schluessel</td>
         </tr>";  

  while ($dsatz = mssql_fetch_assoc($res))
  {
     echo "<tr>";  
     echo "<td><a href='Teil2_2.php?auswahl='" . $dsatz["Schluessel"] . '>' . $dsatz["Schluessel"] . '</td>"';  
     echo "<td>" . $dsatz["D1"] . "</td>";  
     echo "<td>" . $dsatz["D2"] . "</td>";  
     echo "<td>" . $dsatz["D3"] . "</td>";  
     echo "<td>" . $dsatz["D4"] . "</td>";  
     echo "<td>" . $dsatz["D5"] . "</td>";  
     echo "<td>" . $dsatz["D6"] . "</td>";  
     echo "<td>" . $dsatz["D7"] . "</td>";  
     echo "<td>" . $dsatz["Schluessel"] . "</td>";  
     echo "</tr>";  
  }   
   // Tabellenende
   echo "</table>";  
?>
   <p>
   <input type="submit" value="Datensatz anzeigen">  
</form>
</body>
</html>

Und ich habe dir auch die zweite Seite:

<html>
<body>
<?php
   //alle Fehler im Browser anzeigen
   ini_set("diplay_errors",1);  
   error_reporting(E_ALL);
   
if (isset($_GET['auswahl']))  
//if (isset($auswahl))
{

define ('MSSQL_HOST','SQLSERVER');  
define ('MSSQL_USER','sa');  
define ('MSSQL_PASS','Passwort');  
define ('MSSQL_DATABASE','Datenbank');  

$db_link=mssql_connect(MSSQL_HOST,MSSQL_USER,MSSQL_PASS);
$select=mssql_select_db(MSSQL_DATABASE);


   $sql = "SELECT * FROM Ergebnisse WHERE Schluessel = '" . $_GET['auswahl']."'";  

   $res = mssql_query($sql);
   $dsatz = mssql_fetch_assoc($res);

   echo "Führen Sie die Änderungen durch,<p>";  
   echo "betätigen Sie anschließend den Button<p>";  
   echo "<form action = 'Teil3_3.php' method = 'GET'>";  

   echo "<input name='D1' value='" . $dsatz["D1"] .  
        "'> D1<p>";  
   echo "<input name='D2' value='" . $dsatz["D2"] .  
        "'> D2<p>";  
   echo "<input name='D3' value='" . $dsatz["D3"] .  
        "'> D3<p>";  
   echo "<input name='D4' value='" . $dsatz["D4"] .  
        "'> D4<p>";  
   echo "<input name='D5' value='" . $dsatz["D5"] .  
        "'> D5<p>";  
   echo "<input name='D6' value='" . $dsatz["D6"] .  
        "'> D6<p>";  
   echo "<input name='D7' value='" . $dsatz["D7"] .  
        "'> D7<p>";  
   echo "<input name='sh' value='" . $dsatz["Schluessel"] .  
        "'> Schluessel<p>";  
   echo "<input type='hidden' name='orish'  
          value='auswahl'>";  

   echo "<input type='submit' ";  
   echo " value='Änderungen in DB speichern'><p>";  
   echo "<input type='reset'>";  
   echo "</form>";  
}

else
   echo "Es wurde kein Datensatz ausgewählt<p>";  
?>
</body>
</html>

Gruß
Helmut
Mitglied: 34678
34678 Oct 14, 2006 at 08:50:13 (UTC)
Goto Top
Hallo!

Für PHP muss die Zeile korrekt so lauten:

echo "<td><a href='Teil2_2.php?auswahl=" . $dsatz["Schluessel"] . "'>" . $dsatz["Schluessel"] . "</td>";  

Die doppelten Anführungszeichen schließen die einzelnen String-Teile ein, die per echo ausgegeben werden. Diese werden mit dem Punkt mit den Variablen aus dem Array konkatiniert. Die einfachen Anführungszeichen dienen zum Abgrenzen der URL im HREF-Attribut innerhalb des echo-Befehls. Würde man hier ebenfalls doppelte Anführungszeichen verwenden, so würde PHP dies als Ende des auszugebenden Strings ansehen und den o.g. Fehler ausgeben.

Falls man innerhalb des Strings trotzdem doppelte Anführungszeichen verwenden möchte, so muss man diese "escapen", d.h. mit einem vorangestellten Backslash versehen:

echo "Alfred ist ein \"Spieler\"";

ergibt als Ausgabe zum Beispiel:

Alfred ist ein "Spieler"

Dies aber nur zur Verdeutlichung, denn in Deinem Beispiel ist das nicht unbedingt nötig.

Gruß,
M*
Member: filippg
filippg Oct 14, 2006 at 10:46:53 (UTC)
Goto Top
Hallo!

Für PHP muss die Zeile korrekt so
lauten:

echo "<td><a href='Teil2_2.php?auswahl=" . $dsatz["Schluessel"] . "'>" . $dsatz["Schluessel"] . "</td>";   
Da kann ich mich dir nur anschliessen... und beim rückblickenden Betrachten wird mir klar, dass ich mich mit meinen Anführungszeichen deutlich verzählt hatte.
Aber wie schon erwähnt: die Syntax überlasse ich eigentlich den Fragestellern...

Filipp
Member: helmuthelmut2000
helmuthelmut2000 Oct 14, 2006 at 19:11:46 (UTC)
Goto Top
Hallo,

Jetzt passt das genau wie ich mir das vorgestellt habe.
Und auserdem habe ich jetzt eine ganze Menge dazugelernt.

Vielen Dank.

Gruß
Helmut