Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe Hilfe
Schneggo 30-07-2002, 15:41 Habs geändert, so wie vorher angegeben wurde also mit $row["id_abteilung"]' >$row["name"]
Folgender Fehler wird ausgegeben:
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /usr/local/httpd/htdocs/phpMyInventory/uf07.php on line 14
<html>
<body>
<table>
<tr>
<td width='115'>Department:</td>
<td width='300'>
<select name='cboAbteilung'>
<?$db = mysql_connect();
$res = mysql_db_query("inventory", "select * from Abteilung");?>
while($row = mysql_fetch_array($res))
{
<? echo "<option value='$row["id_abteilung"]' >$row["name"]</option> "?>}
<?mysql_close($db);?>
</select>
</td>
</tr>
</table>
</body>
</html>
Schneggo 30-07-2002, 15:54 <html>
<body>
<table>
<tr>
<td width='115'>Department:</td>
<td width='300'>
<select name='cboAbteilung'>
<?$db = mysql_connect();
$res = mysql_db_query("inventory", "select * from Abteilung");?>
while($row = mysql_fetch_array($res))
{
<? echo "<option value=" . $row["id_abteilung"] . " > " . $row["name"] . "</option> "; }?>
<?mysql_close($db);?>
</select>
</td>
</tr>
</table>
</body>
</html>
Schneggo 30-07-2002, 15:55 Folgender Fehler wird ausgegeben
Parse error: parse error in /usr/local/httpd/htdocs/phpMyInventory/uf07.php on line 14
Schneggo 30-07-2002, 16:03 So, und jetzt bringt er zwar keinen Fehler mehr, aber er gibt im Auswahlmenü nix aus. Woran kann das jetzt schon wieder liegen??
<html>
<body>
<table>
<tr>
<td width='115'>Department:</td>
<td width='300'>
<select name='cboAbteilung'>
<?
$db = mysql_connect();
$res = mysql_db_query("inventory", "select * from Abteilung");
while($row = mysql_fetch_array($res)){
echo "<option value=" . $row["id_abteilung"] . " >" . $row["name"] . "</option> "; }
mysql_close($db);
?>
</select>
</td>
</tr>
</table>
</body>
</html>
Pleitegeier 30-07-2002, 16:10 was machst du hier eigentlich? :)
Er versucht, Zeit zu sparen.
Sind eventuell keine Daten in der Tabelle?
Ist der Tabellenname richtig geschrieben (Groß/Kleinschreibung!)
Wie sieht denn der HTML-Quelltext der fertigen Seite aus?
Schneggo 01-08-2002, 07:37 Das ist der komplette Text, wollte es ausprobieren, aber es funktioniert einfach nicht.
Die Tabelle ist mit Inhalten gefüllt. Richtig geschrieben ist sie auch.
Schneggo 01-08-2002, 07:52 Jetzt hab ichs mal ohne Auswahlmenue probiert. Sonder mit einer Tabelle. Und, es gibt wieder tausend Fehler:
Warning: Supplied argument is not a valid MySQL result resource in /usr/local/httpd/htdocs/phpMyInventory/uf07.php on line 12
Datenbank
Tabelle
Datensätze:
Warning: Supplied argument is not a valid MySQL result resource in /usr/local/httpd/htdocs/phpMyInventory/uf07.php on line 23
Warning: Division by zero in /usr/local/httpd/htdocs/phpMyInventory/uf07.php on line 26
<html>
<body>
<?php
/* Verbindung aufnehmen */
$con = mysql_connect('localhost' ,'inventory', '20074054');
/* Datensätze ermitteln */
$dataresult = mysql_db_query($inventory,
"select * from " . $Abteilung);
/* Anzahl der Datensätze ermitteln */
$numdata = mysql_num_rows($dataresult);
/* Überschrift ausgeben */
echo "<h3>Datenbank $inventory</h3>";
echo "<h4>Tabelle $Abteilung</h4>";
echo "$numdata Datensätze:<p>";
/* Felder ermitteln */
$fdresult = mysql_list_fields($inventory, $Abteilung);
/* Anzahl der Felder ermitteln */
$numfds = mysql_num_fields($fdresult);
/* Ausgabebreite für die Felder ermitteln */
$avwidth = 100 / $numfds;
/* Tabelle beginnen, alle Feldnamen ausgeben */
echo "<table width='100%' border><tr>";
for ($f=0; $f<$numfds; $f++)
{
$fdname[$f] = mysql_field_name ($fdresult, $f);
echo "<td bgcolor='#c3c3c3'>$fdname[$f]</td>";
}
echo "</tr>";
/* Schleife über alle Datensätze */
for ($i=0; $i<$numdata; $i++)
{
echo "<tr>";
/* Schleife über alle Felder */
for ($f=0; $f<$numfds; $f++)
{
/* Feldinhalt ermitteln, ausgeben*/
$data = mysql_result($dataresult, $i, $fdname[$f]);
if ($data=="") $data = " ";
echo "<td width='$avwidth%'>$data</td>";
}
echo "</tr>";
}
echo "</table>";
mysql_close($con);
?>
</body>
</html>
Mach mal ein Dump der tabelle mit Struktur und Daten und schick mir das mal mit dem Script zu. Werde mal sehen was sich machen läst.
Schneggo 01-08-2002, 07:57 Wenn du mir sagst, wie ein "dump" geht?! Bin absolut neu in dem Themenbereich
Hast du PHPMyAdmin auf dem Web laufen?
Schneggo 01-08-2002, 08:02 ja hab ich, und was muss ich jetzt machen? habs geöffnet
Du hast doch gerade das Posting db Copy gelesen. Da steht glaube ich alles drin.
Du ruftst die tabelle im PHPMyAdmin auf, scrollst ein wenig runter.
Dort findest du dann eine tabelle wo in etwa folgendes steht:
Nur Struktur
Struktur und Daten
Nur Daten
auf der anderen Seite steht senden.
Du machst die Hacken in "Struktur und Daten" und in "Senden" und klickst dann auf OK.
Nur noch das File speichern und mir samt Script-Dateien zu schicken, an wotan@php-resource.de.
Kann aber 1-2 Stunden daueren bis ich mich darum kümmern kann.
Sind die Variablen $inventory bzw. $Abteilung belegt?
// Kannst untmittelbar hinter <? einfügen
// Schauen wir mal, ob die Variablen übethapt belegt sind
if (!isset($inventory)) {
print "Variable Inventory ist nicht belegt !!<br>";
$inventory = "inventory";
}
if (!isset($Abteilung)) {
print "Variable Abteilung ist nicht belegt !!<br>";
$Abteilung = "Abteilung";
}
ad mysqldump für WAMP:
1. DOS Eingabeaufforderung öffnen
2. In das MySQL-Installationsverzeichnis/bin wechseln
3. C:\WAMP\mysql\bin>mysqldump datenbankname > filename.dmp
C:\WAMP\mysql\bin>
Jetzt wurden die Daten der Datenbank abgezogen und in das File filename.dmp gestellt.
[Pfoa, Wotan ist auch schon wieder online :p - und ich schon wieder zu spät]
Schneggo 01-08-2002, 08:20 Danke "hand", das mit dem Dump hab ich jetzt kapiert. Wär ja eigentlich ganz einfach gewesen, wenn man hald lesen könnte :D
Die Variablen sind schon belegt. Keine Ahnung. Der bringt immer den Fehler, wenn ich was zuweisen will.
Du must schon das richtige zuweisen, nicht irgendwas !
Wie und wo weist Du eigentlich zu? Die Tabelle muß es geben, sonst kommt mitunetr der Fehler, den Du hast.
Machs einmal direkt im Skript ....
Schneggo 01-08-2002, 08:25 Das ist schon alles richtig zugewiesen. Nur mir ist das hald aufgefallen, dass er genau in diesen 3 Zeilen Fehler bringt.
Zeile 13
$numdata = mysql_num_rows($dataresult);
Zeile 24
$numfds = mysql_num_fields($fdresult);
Zeile 27
$avwidth = 100 / $numfds;
Das hab ich damit gemeint
Schneggo 01-08-2002, 08:29 Es hat funktioniert. Peinlich Peinlich. Hab echt vergessen, die Variablen zu belegen.
Schneggo 01-08-2002, 08:32 vielleicht kriegen wir das auswahlmenue auch noch hin, das ich eigentlich bräuchte?
<html>
<body>
<table>
<tr>
<td width='115'>Department:</td>
<td width='300'>
<select name='cboAbteilung'>
<?
$db = mysql_connect('localhost' ,'inventory', '20074054');
$res = mysql_db_query("inventory", "select * from Abteilung");
while($row = mysql_fetch_array($res)){
echo "<option value='$row[id_abteilung]'>$row[name] </option>";
}
mysql_close($db);
?>
</select>
</td>
</tr>
</table>
</body>
</html>
Probier es mal und sag was rauskommt.
Hier kommt der Code mit laufenden Select-Feld.
<html>
<body>
<?php
// Die Informationen werden aus der Datenbank geholt
$db = mysql_connect('localhost' ,'root', 'test');
$res = mysql_db_query("schneggo", "select * from Abteilung");
// Die Datensätze werden einzeln gelesen
while($temp = mysql_fetch_array($res))
{
// Key für den zweidim. Array ermitteln
$ax = $temp["id_abteilung"];
// Die Informationen aus dem Datensatz werden
// über den Key im zweidim. Array gespeichert
$tab[$ax]["name"] = $temp["name"];
}
// Alle Datensätze mit allen Inhalten anzeigen
while(list($dsname,$dswert) = each($tab))
{
// Der Key wird ausgegeben
echo "$dsname : ";
// Informationen aus dem Datensatz ausgeben
while(list($name,$wert) = each($dswert))
{
echo "$wert ";
}
echo "<p>";
}
// Einzelne Beispiel-Informationen werden angezeigt
echo $tab["2297"]["name"] . "<p>";
?>
</body>
</html>
//Code mit Auswahlmenue der nicht funktioniert. Gibt nix aus. Fehler kommt keiner
<html>
<body>
<table>
<tr>
<td width="115">Department:</td>
<td width="300">
<select name="cboAbteilung">
<?
$ret = mysql_db_query("schneggo", "select * from Abteilung");
while($row = mysql_fetch_array($ret))
{
echo "<option value='$row[id_abteilung]'>$row[name]</option>";
}
?>
</select>
</td>
</tr>
</table>
</body>
</html>
ACHTUNG habe die Var für die Datenbank-Verbindung geänder auf meine System. SERVER-NAME, BENUTZERNAME, PASSWORT und DATENBANKNAME musst du wieder auf deine Daten einstellen.
Schneggo 01-08-2002, 08:48 Hey, es geht!!! :D
Was hast du geändert??
Original geschrieben von Wotan
$db = mysql_connect('localhost' ,'root', 'test');
$res = mysql_db_query("schneggo", "select * from Abteilung");
Hier oben habe ich das mysql_close($db) raus genommen.
<select name="cboAbteilung">
<?
Hier habe ich auf eine anderen Datenbank Var umgestellt
$ret = mysql_db_query("schneggo", "select * from Abteilung");
while($row = mysql_fetch_array($ret))
{
Habe diese Zeile auch noch geändert.
echo "<option value='$row[id_abteilung]'>$row[name]</option>";
}
?>
</select>
Hier unten habe ich das mysql_close() raus genommen.
Schneggo 01-08-2002, 08:55 Das vorher war eigentlich an "hand" gerichtet, denn der hat es auch geschafft. :)
Aber jetzt hab ich gleich 2 Lösungen. Vielen Dank an euch beide.
Schneggo 01-08-2002, 10:39 Also, jetzt haut ja soweit alles hin.
Wie mach ich es jetzt, dass er mir die Auswahl anerkennt. In einem normalen Auswahlmenue gebe ich ja an, 1 ist das 2 ist das usw. Aber wie erkennt er das jetzt??
Muss ich das über die "id_abteilung" machen??
Sage ich dann if = "id_abteilung" 1 dann weise das zu und wenn gleich 2 dann weise das zu???
???? Ich steht irgentwie auf dem Schlauch, mit dem was du da erzählst.
Du hast Dein Formularfeld so definiert <select name='cboAbteilung'>
Also kann der Inhalt im aufgerufenen Skript über die Variable $cboAbteilung abgearbeitet werden
Was Du dann miot der Info machst ist Deine Sache:
<?php
if ($cboAbteilung == "abc") {
print "Heute tu ich was";
}
// oder
switch ($cboAbteilung) {
case "1":
print "Abteilung 1 hast ausgewählt";
break;
case "2":
print "Abteilung 2 hast ausgewählt";
break;
default:
print "Keine gültige Abteilunghast ausgewählt";
}
?>
Schneggo 01-08-2002, 11:26 Egal! Ich probier noch 1 Tag rum, wenns nicht klappt, dann erklär ich es dir genauer.
Aber wie kann ich jetzt
<option value=''> </option>
einbauen??
Shit der zeigt des net an. Versuchs mal so:
<option value=''>&!nbsp!;</option>
! nicht beachten
Schneggo 01-08-2002, 11:28 zu "HAND"
ja genau, dass hab ich gemeint. Case ist wohl die bessere Methode. Vielen Dank.
Schneggo 01-08-2002, 11:41 Habs gelöst! Vielleicht keine besonders gute Lösung aber immerhin eine.
Hab in der Datenbank die erste Abteilung mit keinem Text belegt.
Als Code hab ich dann folgendes genommen.
If($cboAbteilung == "1" AND $strError == "") {
$strError = "Please select a department.";
} Else {
$intAbteilung = $cboAbteilung;
}
Die lösung ist besser:
<select name="cboAbteilung">
<option selected>Bitte wählen sie aus</option>
<?
$ret = mysql_db_query("schneggo", "select * from Abteilung");
while($row = mysql_fetch_array($ret))
{
echo "<option value='$row[id_abteilung]'>$row[name]</option>";
}
?>
</select>
Schneggo 01-08-2002, 12:57 Also, aufs neue.
Wenn ich einen User erstelle, dann wird er in der DB korrekt erzeugt. Nur wenn ich jetzt die Userdaten ändern möchte, dann zeigt er mir die Abteilung die ich vorher ausgewählt habe nicht an. Wie gesagt, in der Datenbank steht es korrekt drinnen.
Wo liegt jetzt da mein Fehler? Ist bestimmt nur eine Kleinigkeit, oder??
Hier mal das komplette Programm
<?
$intSecurity = 0;
$intTimeOut = 900;
$intSecFolder = TRUE;
$strPageTitle = "Create a new user";
Include("../includes/security.inc.php");
Include("../includes/functions.inc.php");
Include("../includes/db.inc.php");
If ($HTTP_POST_VARS["btnSubmit"] != "") {
$strUserID = validateText("User ID", $txtUserID, 3, 20, TRUE, FALSE);
$strFirstName = validateText("First Name", $txtFirstName, 2, 40, TRUE, FALSE);
$strMiddleInit = validateText("Middle Initial", $txtMiddleInit, 1, 1, FALSE, FALSE);
$strLastName = validateText("Last Name", $txtLastName, 2, 40, TRUE, FALSE);
$strEmail = validateEmail("Email Address", $txtEmail, TRUE);
If ($cboLevel == "" AND $strError == "") {
$strError = "Please select a security level.";
} Else {
$intLevel = $cboLevel;
}
If($cboAbteilung == "1" AND $strError == "") {
$strError = "Please select a department.";
} Else {
$intAbteilung = $cboAbteilung;
}
If ($strError == "") {
$strSQL = "SELECT id FROM tblSecurity WHERE userID='$strUserID'";
$result = dbquery($strSQL);
$intFound = mysql_num_rows($result);
If ($intFound != 0) {
$strError = "That userID already exists.";
} Else {
$strSQL = "SELECT id FROM tblSecurity WHERE email='$strEmail'";
$result = dbquery($strSQL);
$intFound = mysql_num_rows($result);
If ($intFound != 0) {
$strError = "That email address already exists.";
} Else {
If ($intLevel != 3) {
$strTempString = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
for ($i = 0; $i < 8; $i++) {
srand ((double) microtime() * 1000000);
$intPos = rand(0, 33);
$strTempChar = substr($strTempString, $intPos, 1);
$strPassword = $strPassword.$strTempChar;
}
} Else {
$strPassword = "nonuser1";
}
$strPassword2 = md5($strPassword);
$strSQL = "INSERT INTO tblSecurity (userID, password, firstName, middleInit, lastName, email, securityLevel, fk_abteilung) VALUES ('$strUserID', '$strPassword2', '$strFirstName', '$strMiddleInit', '$strLastName', '$strEmail', $intLevel, $intAbteilung)";
$result = dbquery($strSQL);
$strError = "User '$strUserID' has been added successfully.";
$addSuccessful = TRUE;
If ($intLevel != 3) {
$strURL = makeHomeURL("/security/createUser.php");
$msgBody = "Your phpMyInventory username is '$strUserID' and your temporary password is '$strPassword'. ";
$msgBody .= "You may log in at $strURL.";
mail($strEmail, "phpMyInventory account created: ".date("m-d-Y"), $msgBody);
}
}
}
}
}
Include("../includes/header.inc.php");
declareError(TRUE);
?>
Users created through this tool will automatically be emailed a random password,
which they can then use to log in for the first time. <p>
<u>Explanation of Security Levels</u>: "Full-access" users can do anything, including create and delete users.
You have full access. "Limited-access" users can edit the inventory database in any way <i>except</i> except for
the ability to delete entries or create other users. "Read-only" users can view data in this database, but
not alter it in any way. "No-access" users cannot access this inventory at all; they will not receive an email
containing account information, or anything else that alerts them to the existence of this system. "No-access"
users can still be assigned systems, software, and peripherals.
<p>
<form name="form1" method="POST" action="createUser.php">
<p><table border='0' width='415' cellpadding='2'>
<tr>
<td width='115'>UserID:</td>
<td width='300'><input type="text" name="txtUserID" value="<?echo $strUserID;?>" size="20" maxlength="20"></td>
</tr>
<tr>
<td width='115'>First Name:</td>
<td width='300'><input type="text" name="txtFirstName" value="<?echo $strFirstName;?>" size="40" maxlength="40"></td>
</tr>
<tr>
<td width='115'>Middle Initial:</td>
<td width='300'><input type="text" name="txtMiddleInit" value="<?echo $strMiddleInit;?>" size="1" maxlength="1"></td>
</tr>
<tr>
<td width='115'>Last Name:</td>
<td width='300'><input type="text" name="txtLastName" value="<?echo $strLastName;?>" size="40" maxlength="40"></td>
</tr>
<tr>
<td width='115'>Email:</td>
<td width='300'><input type="text" name="txtEmail" value="<?echo $strEmail;?>" size="40" maxlength="50"></td>
</tr>
<tr>
<td width='115'>Security Level:</td>
<td width='300'>
<select name='cboLevel'>
<option value=''> </option>
<option value='0' <? echo writeSelected($cboLevel, "0"); ?>>Full-access</option>
<option value='1' <? echo writeSelected($cboLevel, "1"); ?>>Limited-access</option>
<option value='2' <? echo writeSelected($cboLevel, "2"); ?>>Read-only</option>
<option value='3' <? echo writeSelected($cboLevel, "3"); ?>>No-access</option>
</select>
</td>
</tr>
<tr>
<td width='115'>Department:</td>
<td width='300'>
<select name='cboAbteilung'>
<?
$db = mysql_connect('localhost' ,'inventory', '20074054');
$res = mysql_db_query("inventory", "select * from Abteilung");
while($row = mysql_fetch_array($res)){
echo "<option value='$row[id_abteilung]'>$row[name] </option>";
}
mysql_close($db);
?>
</select>
</td>
</tr>
</table><p>
<? If (!$addSuccessful) { ?>
<input type="submit" value="Submit" name="btnSubmit">
<input type="reset" value="Reset" name="reset">
<? } ?>
</form>
<?
Include("../includes/footer.inc.php");
?>
Du musst das:
echo "<option value='$row[id_abteilung]'>$row[name] </option>";
durch das ersetzen:
echo "<option value='$row[id_abteilung]'";
if ($row[id_abteilung] == $intAbteilung)
{
echo " selected ";
}
echo ">$row[name]</option>\n";
Ich hoffe ich hab es jetzt richtig übersetz auf dein Script.
Schneggo 01-08-2002, 13:15 Ich wollt gerade meine Lösung präsentieren. Du warst schneller:rolleyes:
Was hat du für eine Lösung?
Schneggo 01-08-2002, 13:26 echo writeSelected($cboAbteilung, $intAbteilung);
Upps, vielleicht noch die Funktion selber:
Function writeSelected($SelectValue,$OurValue) {
If ($SelectValue==$OurValue) {
Return "selected";
}
}
Schneggo 02-08-2002, 07:27 Hab gestern hier meine Lösung für ein leeres Auswahlmenuefeld gepostet, leider ergibt sich jetzt folgendes Problem, wenn ich Datensätze lösche, dann werden die neuen vor dem leeren eingefügt. Sprich es wird mir im Auswahlmenue wieder nicht das leere angezeigt. Wer hat eine bessere Lösung?
War meine Lösung:
If($cboAbteilung == "1" AND $strError == "") {
$strError = "Please select a department.";
} Else {
$intAbteilung = $cboAbteilung;
}
Für folgendes Menue soll es gelten:
while($row = mysql_fetch_array($res)){
echo "<option value='$row[id_abteilung]'";
Schneggo 02-08-2002, 08:30 Hat sich erledigt.
Richtiger Code lautet:
$res = mysql_db_query("inventory", "select * from Abteilung");
echo "<option value=''> </option>\n";
while($row = mysql_fetch_array($res)){
echo "<option value='$row[id_abteilung]'";
welchen wert hat denn $Abteilung?
|
-
- |