CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
11.09.2007, 09:14:28
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 47
|
|
DropDown Probleme
Hey Leutz!
Ich benötige einen Tipp von euch, wie ich das optimal verwirkliche. Habe ein Ausleseformular, dass die Datensätze aus der Datenbank in die Tabelle lädt.
Über die Auswahl eines DropDownmenüs sollen die einzelnen Produkte ausgewählt gewählt werden. Die Produktnummer, der Primarykey in der Datenbank, wird bereits ins DropDown geladen. Ab hier hänge ich fest: Wenn ich einen Datensatz auswähle wird dieser nicht reingeladen.
Wie heißt der Befehl, der mir das ermöglicht? Hier mal der Code, vllt. ist das nur eine kleine Geschichte.
PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Daten ausgeben</title>
<script type="text/javascript" src="format.js"></script>
</head>
<body>
<?php
// Verbindung wird zur Datenbank aufgenommen
$db = mysql_connect ("localhost","benutzer","");
// SQL-Anfrage an Datenbank "Produkt"
$res = mysql_db_query("produkt", "select DISTINCT * from test ORDER BY Produktnummer ASC");
// Liefert Anzahl betroffener Datensätze
$num = mysql_affected_rows();
for ($i=0; $i<$num; $i++)
{
$ty = mysql_result($res, $i, "Typ");
$tn = mysql_result($res, $i, "Teilung");
$fb = mysql_result($res, $i, "Frequenzbereich");
$ed = mysql_result($res, $i, "Einfuegungsdaempfung");
$rd = mysql_result($res, $i, "Rueckflussdaempfung");
$is = mysql_result($res, $i, "Isolation");
$im = mysql_result($res, $i, "Impedanz");
$wi = mysql_result($res, $i, "Widerstand");
$sz = mysql_result($res, $i, "Schalterzeit");
$st = mysql_result($res, $i, "Schalttyp");
}
?>
<form action="daten_ausgeben_beta2.php" method="get" name="focusform">
<table width="400" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="350">
<td width="200">
<strong>Produktnummer:
<select name="Produktnummer" onChange="produkt()">
<?php
for ($i=0; $i<$num; $i++)
{
$pn = mysql_result($res, $i, "Produktnummer");
echo "<option value= '$pn'>$pn</option>";
}
?>
</select></strong>
</td>
</td>
</tr>
<tr>
<td>Teilung</td>
<td><input id="pn" name="Teilung" size="80" value="<?php echo "$tn" ?>" readonly="readonly"></td>
</tr>
<tr>
<td>Frequenzbereich</td>
<td><input name="fb" size="80" value="<?php echo "$fb" ?>" readonly="readonly"></td>
</tr>
<tr>
<td>Einfügungsdämpfung</td>
<td><input name="ed" size="80" value="<?php echo "$ed" ?>" readonly="readonly"></td>
</tr>
<tr>
<td>Rückflußdämpfung</td>
<td><input name="rd" size="80" value="<?php echo "$rd" ?>" readonly="readonly"></td>
</tr>
<tr>
<td>Isolation</td>
<td><input name="is" size="80" value="<?php echo "$is" ?>" readonly="readonly"></td>
</tr>
<tr>
<td>Impedanz</td>
<td><input name="im" size="80" value="<?php echo "$im" ?>" readonly="readonly"></td>
</tr>
<tr>
<td>Widerstand</td>
<td><input name="wi" size="80" value="<?php echo "$wi" ?>" readonly="readonly"></td>
</tr>
<tr>
<td>Schalterzeit</td>
<td><input name="sz" size="80" value="<?php echo "$sz" ?>" readonly="readonly"></td>
</tr>
<tr>
<td>Schalttyp</td>
<td><input name="st" size="80" value="<?php echo "$st" ?>" readonly="readonly"></td>
</tr>
<tr>
<td></td>
<td><input type="reset"></td>
</tr>
</table>
</form>
</body>
</html>
|
11.09.2007, 12:24:06
|
Junior Member
|
|
Registriert seit: Jun 2004
Beiträge: 473
|
|
AW: DropDown Probleme
Es gibt keinen Befehl, der dir das ermöglicht. Du mußt das schon über Schleifen machen, nur in deiner Schleife werden die Variablenwerte immer wieder überschrieben, so wird das nix mit der Ausgabe.
PHP-Code:
// Verbindung wird zur Datenbank aufgenommen
$db=mysql_connect ("localhost","benutzer","");
// SQL-Anfrage an Datenbank "Produkt"
$res=mysql_query("SELECT * FROM test ORDER BY Produktnummer ASC");
$pr_nrn=array();
// Hier die Nrn. sammeln und falls etwas bestimmtes ausgewählt wurde, betreffenden Ds merken (show_produkt)
while($row=mysql_fetch_array($res))
{
$pr_nrn[]=$row['Produktnummer'];
if(isset($_GET['produkt']) && $_GET['produkt']==$row['Produktnummer'])
{
$zeige_produkt=$row;
}
}
// Ab hier Ausgabe
// Zuerst die Asuwahl der Produktnummern in einem <select>
echo '
<form name="produktwahl" method="get" action="'.$_SERVER['PHP_SELF'].'">
<select name="produkt" onchange="document.produktwahl.submit()">
<option value="-1">Bitte wählen</option><option value="-1"></option>';
for($z=0;$z<count($pr_nrn);$z++)
{
// Da die Produktnummer im value Attribut steht, kannst du als Bezeichnung der options natürlich auch was anderes als die Nummer verwenden...
if(isset($_GET['produkt']) && $_GET['produkt']==$pr_nrn[$z])
{
echo '<option value="'.$pr_nrn[$z].'" selected>'.$pr_nrn[$z].'</option>';
}
else
{
echo '<option value="'.$pr_nrn[$z].'">'.$pr_nrn[$z].'</option>';
}
}
echo '</select></form>';
// Wenn ein Produkt gewählt wurde, zeige es in einer Tabelle
if(isset($zeige_produkt))
{
$bezeichner=array('Produktnummer','Teilung','Frequenzbereich'); // usw.
echo '
<br>
<table>';
for($z=0;$z<count($bezeichner);$z++)
{
echo '
<tr>
<td>'.$bezeichner[$z].'</td>
<td>'.$zeige_produkt[$z].'</td>
</tr>';
}
echo '
</table>';
}
Du mußt dabei beachten, dass das Array $bezeichner in Anzahl und Reihenfolge der Elemente mit den Spalten deiner Tabelle übereinstimmen muß. So wie es jetzt ist, werden immer nur die ersten drei Merkmal ausgegeben.
Wenn du es noch verfeinern willst, kann du auch die Spaltennamen von MySQL beziehen und $bezeichner damit füllen.
Hatte sich dein JavaScript-Vorschau-Problem damit auch erledigt?
Geändert von Raketenmann (11.09.2007 um 12:34:06 Uhr)
|
11.09.2007, 12:44:49
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 47
|
|
AW: DropDown Probleme
Danke dir Raketenmann.
Ich habe mir schon gedacht, dass es nur über Schleifen geht. Dein Skript bleibt aber in Zeile "...while($row=mysql_fetch_array($res))..." stecken. Sehe jetzt nicht wieso, aber er macht nicht weiter.
Das mit der Vorschau hatte nicht so geklappt wie ich es mir vorgestellt habe. Deshalb möchte ich diese Ausgabe schreiben und dann nach erfolgreichem Einfügen, die Daten per Button ansehen. Umständlich aber naja.
|
11.09.2007, 13:00:39
|
Junior Member
|
|
Registriert seit: Jun 2004
Beiträge: 473
|
|
AW: DropDown Probleme
Jaja... wenn man es nicht ausprobiert ;-)
Also du kannst die while-Zeile mal ändern in
PHP-Code:
while($row=mysql_fetch_array($res,MYSQL_NUM))
Das ist aber nicht der Fehler, den du aktuell hast...
Schreibe mal unter die Zeile $res=... folgendes:
PHP-Code:
// SQL-Anfrage an Datenbank "Produkt"
$res=mysql_query("SELECT * FROM test ORDER BY Produktnummer ASC");
echo mysql_error();
EDIT
Ich hätte deine DB Verbindung nicht ändern sollen, also da wo das hier steht
PHP-Code:
// Verbindung wird zur Datenbank aufgenommen
$db = mysql_connect ("localhost","benutzer","");
muß das hier hin:
PHP-Code:
$db_server = "localhost"; // zum Bsp.
$db_name = ""; // mußt du füllen
$db_user = ""; // mußt du füllen
$db_passwort = ""; // mußt du füllen
MYSQL_CONNECT($db_server,$db_user,$db_passwort) or die ("Konnte keine Verbindung zur Datenbank herstellen");
mysql_select_db($db_name) or die("Auswahl der Datenbank fehlgeschlagen");
Geändert von Raketenmann (11.09.2007 um 13:09:38 Uhr)
|
11.09.2007, 13:06:30
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 47
|
|
AW: DropDown Probleme
Okay Fehler wurde ausgemerzt. Die Angabe des Datenbanknamens hat gefehlt. Danke dir ;)
Doch im DropDownMenü sehe ich nicht die Bezeichnung bzw. die Produktnummer ist nicht sichtbar, sprich es ist leer. Jedoch sind 4 Datensätze vorhanden, man kann diese auch auswählen.
Beim zweiten und letzten "unsichtbaren", wenn dieses angeklickt wird, erfolgt die Ausgabe. Aber nur dort.
Geändert von Luke85 (11.09.2007 um 13:16:34 Uhr)
|
11.09.2007, 13:16:50
|
Junior Member
|
|
Registriert seit: Jun 2004
Beiträge: 473
|
|
AW: DropDown Probleme
Mann... vielleicht sollte ich auch man hingucken, was ich mache...
Also das mit dem hier:
PHP-Code:
while($row=mysql_fetch_array($res,MYSQL_NUM))
war etwas unüberlegt, weil direkt danach ein assoziativer Index 'Produktnummer' verwendet wird...
Ich gehe davon aus, dass Produktnummer die erste Spalte in der DB Tabelle ist
PHP-Code:
while($row=mysql_fetch_array($res,MYSQL_NUM))
{
$pr_nrn[]=$row[0];
if(isset($_GET['produkt']) && $_GET['produkt']==$row[0])
{
$zeige_produkt=$row;
}
}
Das ist der schnellste Weg es zu ändern, ansonsten müsste unten noch die Ausgabe angepasst werden.
|
11.09.2007, 13:35:07
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 47
|
|
AW: DropDown Probleme
Es geht, wow. Du bist mein Ausgabeheld ;D!
Dann werde ich jetzt eine Gescheite Ausgabetabelle schreiben, damit es gut formatiert aussieht und diese dann ins Echo setzten.
Dann kann man ja jetzt einen "Änder" Button einfügen, damit der ausgewählte Datensatz verändert werden kann oder?
Geändert von Luke85 (11.09.2007 um 14:09:27 Uhr)
|
11.09.2007, 14:17:37
|
Junior Member
|
|
Registriert seit: Jun 2004
Beiträge: 473
|
|
AW: DropDown Probleme
Klar...
Du schreibst einfach die Produktnr in ein Hidden-Input des Ändern-Formulars oder hängst die Nr an den Button. Dann weiß dein Update Skript "wo es lang geht". ;-)
|
12.09.2007, 10:32:04
|
Anfänger
|
|
Registriert seit: Aug 2007
Beiträge: 47
|
|
AW: DropDown Probleme
Kann das überhaupt so funktionieren, zwei unterschiedliche Anfragen an die MySQL-Datenbank in einer PHP-Datei?
Geändert von Luke85 (12.09.2007 um 11:01:06 Uhr)
|
12.09.2007, 10:56:17
|
Junior Member
|
|
Registriert seit: Jun 2004
Beiträge: 473
|
|
AW: DropDown Probleme
Zitat:
Zitat von Luke85
Kann das überhaupt so funktionieren, zwei unterschiedliche Anfragen an die MySQL-Datenbank in einer PHP-Datei?
|
Wenn man das richtig macht... Ja.
Ehrlich gesagt, verstehe ich nicht im geringsten was du da machst. Welche Ausgabe? Ich sehe nur den Versuch etwas in der DB-Tabelle "upzudaten". Aber woher kommen denn die Werte für $data? Fehlt da was? Kannst du mal den Rest zeigen und bitte ein paar Kommentare und Leerzeilen einfügen.
Schon mal soviel: Die Zählung des Feldindex bei mysql_field_name() beginnt bei 0. Wenn du $i mit 1 initialisierst, "vergißt" du das erste Feld. Das Gleiche gilt auch für das Array $data, das mit leeren eckigen Klammern, also per "Autoindex", erzeugt wird - das erste Element hat den Index 0.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:10:42 Uhr.
|