PHP + MSSQL: Selektierung

msycho

Erfahrenes Mitglied
Hallo!

Folgender Sachverhalt: Ich habe eine MSSQL-Abfrage geschrieben, die mehrere Spalten abfrägt und das Ergebniss in Form einer Tabelle ausspuckt. Darunter sind zum Beispiel Spalten wie Kundennummer und Menge.
Jetzt möchte ich gerne über der Ausgabe noch Selektionsfelder anbringen. So zum Beispiel ein Textfeld wo man dann eine Kundennummer eingeben kann, und dann all das passend zur Kundennummer ausgespuckt wird.
Ich finde momentan kein Anfang bzw. weiß ich nicht so recht wo ich anfangen soll. Könnt Ihr mir helfen?
Wäre nett wenn Ihr mir so ein Grundscript hättet mit dem ich mich auseinandersetzen könnte um es letztlich zu verstehen und es anzupassen/erweitern.
 
So was kann man dann über die WHERE Bedindung.
Einfach der Datenbank sagen welche Spalte welche Bedingung erfüllen soll.
 
Wärst Du vielleicht so nett und könntest mir das ganze in Form von Code schreiben, bitte?

/edit: Meinst Du das so:

Code:
$spaltenname=$_POST["spaltenname"];

[DB-Verbindung steht hier]

$query = "SELECT spaltenname FROM tabellenname WHERE spaltenname = '".$spaltenname."' ORDER BY name";

Ich weiß nur nicht wie ich das jetzt zum einen mit dem Textfeld, wo ich hier jetzt die Kundennummer eingeben kann, und zum anderen mit einer neuen Ausgabe verbinden kann.
 
Zuletzt bearbeitet:
Zuerst ein Formular mit dem Ziel auf sich selber. Und dann in dem SQL Befehl einfach sagen meine Spalte gleich dem Wert von dem Textfeld.
SQL:
WHERE `kundennr` = '" . $_POST['wertVonFeld'] . "'

//edit. Oder: Was genau ist noch unklar
 
Hallo,

als Ansatz

HTML:
<form action="<?$_SERVER['PHP_SELF']?>" method="post">
<input type="text" name="kdnummer">
<input type="submit" name="senden" value="senden">
</form>

<?php
$kdnr = $_POST['kdnummer'];

[Hier steht die Verbindung]

$query = "SELECT * FROM tabellenname WHERE spaltenname = '".$kdnr."' ORDER BY name"; 

[Abfrage ausführen]
[Abfrage der Variablen $row zuweisen]
?>

Kundeninfos.
Name: <?=$row['name'];?><br>

Gruß.
 
@tobee: Danke, aber damit kann ich null anfangen.

@cheops: Aha, das leuchtet mir schon eher ein. Danke. Nur, muss ich dann die Abfrage wieder neu schreiben? Also wieder die ganze Ausgabeform?
Noch etwas, der * (Stern) steht für alle Spaltenname, oder? Wenn ich das jetzt richtig verstanden habe, dann ja. Denn es müssen ja trotzdem alle Spalten abgefragt, jedoch wird das ganze speziell durch WHERE abgefragt.

/edit: Hatte den letzten Post von tobee eben erst gesehen. Dann hast du also das gleiche gemeint und ich habe es nur nicht gleich verstanden, sorry.
 
Ich glaube tobee meint schon das Gleiche wie ich...

Der Stern bedeutet, dass du für den selektierten Datensatz (WHERE spaltenname='$kdnummer') alle DB-Felder bekommst und zwar nur für den einen Datensatz

Hast du also z.B. 3 Sätze mit Kdnummer von 1-3 und Namen und allem, dann bekommst du ohne WHERE-Klausel alle Infos von den drei Datensätzen und mit WHERE nur die Infos von einem Datensatz.

Du kannst deine Ausgabe sinnvollerweise übernehmen, da du ja nur einen Datensatz in deiner jetzigen Ausgabe hast, wird auch nur dieser eine angezeigt.

Gruß.
 
Du kannst deine Ausgabe sinnvollerweise übernehmen, da du ja nur einen Datensatz in deiner jetzigen Ausgabe hast, wird auch nur dieser eine angezeigt.

Also das hier ist jetzt mal der Codeschnipsel von der Abfrage und der Ausgabe so wie es momentan noch ist. (SQL-Daten werden includet)

Code:
<table cellspacing="0" cellpadding="0" class="tableouter">
 <tr>
  <th width="15%"><?php echo $spalte1 ?></th>
  <th width="15%"><?php echo $spalte2 ?></th>
  <th width="10%"><?php echo $spalte3 ?></th>
  <th width="10%"><?php echo $spalte4 ?></th>
  <th width="10%"><?php echo $spalte5 ?></th>
  <th width="30%"><?php echo $spalte6 ?></th>
  <th width="10%"><?php echo $spalte7 ?></th>
 </tr>
<?php
// Verbindung zur Datenbank herstellen
$dbverbindung = mssql_connect ($sqlhost, $sqluser, $sqlpass) or die (mssql_get_last_message());
mssql_select_db ($database, $dbverbindung) or die (mssql_get_last_message());
// Abfrage zweier Spalten einer Tabelle
$query = "SELECT testspalte, testspalte_2 FROM testtabelle";
$sql = mssql_query($query) or die (mssql_get_last_message());
// Auslesen des Ergebnisses
while ($result = mssql_fetch_object($sql)){
 $testspalte = $result -> testspalte;
 $testspalte_2 = $result -> testspalte_2;
// Ausgabe ueber echo
 echo "<tr>";
 echo "<td>$testspalte</td>";
 echo "<td>$testspalte_2</td>";
 echo "</tr>";
}
mssql_close() or die (mssql_get_last_message());
?>
</table>

Wenn ich Dich jetzt richtig verstanden habe, dann kann ich jetzt einfach das drüber setzen, oder?

Code:
<form action="<?$_SERVER['PHP_SELF']?>" method="post">
<input type="text" name="kdnummer">
<input type="submit" name="senden" value="senden">
</form>

$kdnr = $_POST['kdnummer'];

$query = "SELECT * FROM tabellenname WHERE spaltenname = '".$kdnr."' ORDER BY name";

Oder versteh ich da jetzt momentan etwas falsch?

Könnt Ihr mir bitte sagen wie ich das zusammen bringe, dass im Normalfall alles komplett angezeigt wird, und wenn ich dann zB bei dem Textfeld eine Kundennummer eingebe, nur die Einträge passend zur eingegebenen Kundennummer angezeigt werden, bitte?
 
Zuletzt bearbeitet:
Hallo,

also ich würde es dann so machen:

HTML:
<form action="<?$_SERVER['PHP_SELF']?>" method="post">
<input type="text" name="kdnummer">
<input type="submit" name="senden" value="senden">
</form>
<br>
<table cellspacing="0" cellpadding="0" class="tableouter">
 <tr>
  <th width="15%"><?php echo $spalte1 ?></th>
  <th width="15%"><?php echo $spalte2 ?></th>
  <th width="10%"><?php echo $spalte3 ?></th>
  <th width="10%"><?php echo $spalte4 ?></th>
  <th width="10%"><?php echo $spalte5 ?></th>
  <th width="30%"><?php echo $spalte6 ?></th>
  <th width="10%"><?php echo $spalte7 ?></th>
 </tr>
<?php
// Verbindung zur Datenbank herstellen
$dbverbindung = mssql_connect ($sqlhost, $sqluser, $sqlpass) or die (mssql_get_last_message());
mssql_select_db ($database, $dbverbindung) or die (mssql_get_last_message());
// Abfrage zweier Spalten einer Tabelle
if(empty($_POST['kdnummer'])){
   $query = "SELECT testspalte, testspalte_2 FROM testtabelle";
} else {
  $query = "SELECT testspalte, testspalte_2 FROM testtabelle WHERE spaltenname = '".$_POST['kdnummer']." ' ";
}
$sql = mssql_query($query) or die (mssql_get_last_message());
// Auslesen des Ergebnisses
while ($result = mssql_fetch_object($sql)){
 $testspalte = $result -> testspalte;
 $testspalte_2 = $result -> testspalte_2;
// Ausgabe ueber echo
 echo "<tr>";
 echo "<td>$testspalte</td>";
 echo "<td>$testspalte_2</td>";
 echo "</tr>";
}
mssql_close() or die (mssql_get_last_message());
?>
</table>

spaltenname musst du in der Anfrage noch durch den richtigen Spaltennamen ersetzen, z.B. id. Oder wie heißt dieser bei dir.

Gruß.
 
Zurück