Einzelnen Beitrag anzeigen

Benutzerbild von stOrM
stOrM

Registriert seit: 7. Jun 2003
Ort: Mülheim an der Ruhr
436 Beiträge
 
Delphi 10.3 Rio
 
#1

Mysql mit PHP und Formular

  Alt 15. Jul 2008, 08:48
Hallo,
ich steh grad vor einem deftigem Problem, ich dazu sagen ich hab 0 (in worten null!) Ahnung von irgendwelchen webbasierten Sprachen.
Das Problem ist folgendes, ein sehr guter Freund von mir steht vor dem Problem das er im eigenen Lan (Netwerkfestplatte) eine Menge an Treibern rumfliegen hat (liegen alle als Ziparchiv vor) das Problem ist das wiederfinden dieser Treiber (Treiber für Mainboards diverser Hersteller)

Jetzt hab ich mir folgendes überlegt, erst einmal hab ich mittels Xampp einen internen Webblog gebaut (Wordpress) welcher nur im Lan laufen wird wegen der Sicherheit dort soll es eine spezielle Seite geben über die man ein Suchformluar ausfüllen kann, das Formular ist folgendermaßen aufgebaut:

1. Sockel (z.B. 939 oder AM2)
2. Hersteller (z.B. Asus, Gigabyte usw.)
3. Bezeichnung (z.B. ALiveNF5SLI)
4. Submit Button

Im Mysql Server gibt es pro Hersteller eine Tabelle die alle gleich aussehen, Felder der Tabellen sind:

1. ID
2. Sockel
3. Bezeichnung
4. Bemerkung
5. Url
6. OperatingSystem

Url ist der lokale Pfad auf das Verzeichnis der Netzwerkplatte für den Treiber.

Nachdem ausfüllen des Formulars und klick auf den Submit Button wird unterhalb des Formulars eine Tabelle mit dem ResultSet der Suchanfrage gefüllt.

Mein Problem ist aufgrund der nichvorhandenen Kenntnisse im Bereich Webprogrammierung mit PHP und HTML, Javascript usw. das folgende Probleme auftreten:

1. Beim ersten Aufruf der Seite gibt es einen SQL Query Fehler (meine Vermutung ist das eine Variable zu diesem Zeitpunkt nicht gefüllt ist, beim erstmaligem klick auf Submit ist dann alles OK.)

2. Dem ganzen Fehlt noch eine gewissen Logik wie z.B. die Überprüfung der durch den User gemachten Eingaben im Formular, wenn jemand z.B. eine Suche ausführen will, die den Sockel und den Hersteller beinhaltet jedoch nicht die Bezeichnung, dementsprechend muss das Query ja dann dynamisch gebaut werden. Oder falls der User gar nichts auswählt und einfach Submit klickt,dann sollte unterhalb des Formulars halt eine Bemerkung ala: 'Bitte folgende Felder ausfüllen erscheinen' vielleicht wäre das ja in einem seperaten Div möglich?

Ich zeig mal was ich bisher hab vielleicht steigt ja jemand durch?

Code für die Table unterhalb des Suchformulars (ZebraTable):

Code:
<script type="text/javascript">

var Event = {
   add: function(obj,type,fn) {
      if (obj.attachEvent) {
         obj['e'+type+fn] = fn;
         obj[type+fn] = function() { obj['e'+type+fn](window.event); }
         obj.attachEvent('on'+type,obj[type+fn]);
      } else
      obj.addEventListener(type,fn,false);
   },
   remove: function(obj,type,fn) {
      if (obj.detachEvent) {
         obj.detachEvent('on'+type,obj[type+fn]);
         obj[type+fn] = null;
      } else
      obj.removeEventListener(type,fn,false);
   }
}

function $() {
   var elements = new Array();
   for (var i=0;i<arguments.length;i++) {
      var element = arguments[i];
      if (typeof element == 'string') element = document.getElementById(element);
      if (arguments.length == 1) return element;
      elements.push(element);
   }
   return elements;
}

String.prototype.trim = function() {
   return this.replace(/^\s+|\s+$/,"");
}

function addClassName(el,className) {
   removeClassName(el,className);
   el.className = (el.className + " " + className).trim();
}

function removeClassName(el,className) {
   el.className = el.className.replace(className,"").trim();
}

var ZebraTable = {
   bgcolor: '',
   classname: '',
   stripe: function(el) {
      if (!$(el)) return;
      var rows = $(el).getElementsByTagName('tr');
      for (var i=1,len=rows.length;i<len;i++) {
         if (i % 2 == 0) rows[i].className = 'alt';
         Event.add(rows[i],'mouseover',function() { ZebraTable.mouseover(this); });
         Event.add(rows[i],'mouseout',function() { ZebraTable.mouseout(this); });
      }
   },
   mouseover: function(row) {
      this.bgcolor = row.style.backgroundColor;
      this.classname = row.className;
      addClassName(row,'over');
   },
   mouseout: function(row) {
      removeClassName(row,'over');
      addClassName(row,this.classname);
      row.style.backgroundColor = this.bgcolor;
   }
}

window.onload = function() {
   ZebraTable.stripe('mytable');
}

</script>
<style type="text/css">

body {
   background: #fff;
}

table {
   border-collapse: collapse;
   width: 50%;
   margin: 24px;
   font-size: 1.1em;
}

th {
   background: #3e83c9;
   color: #fff;
   font-weight: bold;
   padding: 2px 11px;
   text-align: left;
   border-right: 1px solid #fff;
   line-height: 1.2;
}

td {
   padding: 6px 11px;
   border-bottom: 1px solid #95bce2;
   vertical-align: top;
}

td * {
   padding: 6px 11px;
}

tr.alt td {
   background: #ecf6fc;
}

tr.over td, tr:hover td {
   background: #bcd4ec;
}

</style>
Die eigentliche Routine zum Connect auf den Mysql Server (Table) usw...:

Code:
<?php
include("dbconnect.php>");

$global_dbh = mysql_connect($hostname, $username, $password)
or die("Could not connect to database");

mysql_select_db($db, $global_dbh)
or die("Could not select database");

function display_db_query($query_string, $connection, $header_bool, $table_params) {
   // perform the database query
   $result_id = mysql_query($query_string, $connection)
   or die("display_db_query:" . mysql_error());
   // find out the number of columns in result
   $column_count = mysql_num_fields($result_id)
   or die("display_db_query:" . mysql_error());
   // Here the table attributes from the $table_params variable are added
   print("<TABLE width=\“50%\“ id=mytable $table_params >\n");
   // optionally print a bold header at top of table
   if($header_bool) {
      print("<TR>");
      for($column_num = 0; $column_num < $column_count; $column_num++) {
         $field_name = mysql_field_name($result_id, $column_num);
         print("<TH>$field_name</TH>");
      }
      print("</TR>\n");
   }
   // print the body of the table
   while($row = mysql_fetch_row($result_id)) {
      print("<TR ALIGN=LEFT VALIGN=TOP>");
      for($column_num = 0; $column_num < $column_count; $column_num++) {
         print("<TD>$row[$column_num]</TD>\n");
      }
      print("</TR>\n");
   }
   print("</TABLE>\n");
}

function display_db_table($tablename, $socket, $connection, $header_bool, $table_params) {

  if($socket == "All")
    {
  $query_string = "SELECT * FROM $tablename";
    }
  else
    {
     $query_string = "SELECT * FROM $tablename WHERE sockel = '$socket'";
    }

    display_db_query($query_string, $connection,
   $header_bool, $table_params);
}
?>
Das Suchformular:

Code:
<form action="searchform.php" method="post">
<form name="form1" method="post" action="">
  <label>Socket
  <select name="Socket" id="Socket">
    <option value="AM2">AM2</option>
    <option value="AM2+">AM2+</option>
    <option value="939">939</option>
    <option value="All" selected>All</option>
  </select>
  </label>






<label>Manufacturer
<select name="Manufacturer" id="Manufacturer">
  <option value="Asrock">Asrock</option>
  <option value="Abit">Abit</option>
  <option value="Asus">Asus</option>
  <option value="Gigabyte">Gigabyte</option>
  <option value="Msi">Msi</option>
</select>
</label>






<label>Search
<input type="submit" name="Search" value="Submit">
</label>
</form>
Durchführen der Suche sowie Füllen der Variablen:

Code:
<?php

$table = $_POST['Manufacturer'];
$sock = $_POST['Socket'];
//$bez = $_POST['bezeichnung'];

display_db_table($table, $sock, $global_dbh, TRUE, "border='0'");
?>
Viele Grüße
Marc
  Mit Zitat antworten Zitat