Ordner auslesen und eine Auswahl in die Datenbank schreiben.

s3993

Grünschnabel
Hallo

Ich habe folgendes Problem.
Ich lese mittels dieser funktion den Inhalt eines Ordners aus:
Code:
$var = array();
while($name = $dir->read())
{
  if($name != "." AND $name != "..")
  {
  $tmp = array_push($var,$name);
  }
}

das funktioniert auch wunderbar.

danach lasse ich mir die ganzen Ordner in einem Selectfeld ausgeben.

Code:
<select multiple name="ort" class=Stil3 id="ort">
	 <?php 
	  
	  foreach($var AS $tmp)
	   {
	   echo "<option value=".$tmp.">".$tmp."</option>";
	   next($var);
	   }
	   ?>
	   </select>

das klappt auch noch wunderbar aber jetzt kommt es.
Ich möchte z.B. einem User zugriff auf z.B. 3 und nicht alle Ordner gewähren, also soll er mir auch nur die 3 ordner in die Datenbank reinschreiben, die ich auswähle aber er schreibt mir leider immer nur den letzten in die datenbank rein.

Hat einer von euch eine Idee, ich habe da was von serialize() gelesen aber ich denke das ist nicht das was ich suche, ich dachte eher an so was, wie eine INSERT INTO Anweisung in eine forschleife zu schreiben aber das hat leider auchg nicht wirklich funktioniert.

Ichj hoffe, ihr könnt mir weiter helfen. Ich danke euch.

Gruß s3993
 
Code:
<?php
require('kernel.php');
$recht=recht(1);

$verbindung = mysql_connect($db_server,$db_user,$db_pass ) or die ("Connect nicht möglich");
mysql_select_db($db_name,$verbindung);


//Stylesheets

echo " <style type=text/css>
<!--
.Stil1 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 24px;
	font-weight: bold;
}
.Stil2 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 10px;
}
.Stil3 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
}
.Stil4 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 14px;
	font-weight: bold;
}
.Stil7 {color:#FFFFFF
}
.hlinks {
	font-family: Arial, Helvetica, sans-serif;
	font-size:12px;
	text-decoration:none;
}
.links {
	font-family:Arial, Helvetica, sans-serif;
	font-size:12px;
	text-decoration:none;
	color:#333333;
	
}
a:link, 
a:visited 
	{
	text-decoration: none; 
	color:#333333
	}
a:hover 
    {
     text-decoration:underline; 
     color:#666666; 

}
.Stil11 
{
	font-family:Arial, Helvetica, sans-serif;
	font-size:18px;
}
-->
</style>";

//Ordnerstruktur auslesen



$dir = dir("./xxxt/xxx");
$var = array();
while($name = $dir->read())
{
  if($name != "." AND $name != "..")
  {
  $tmp = array_push($var,$name);
  }
}
           

if($flag == 1)

{
    // Testen ob Benutzername schon vorhanden ist
	$sql_user = "SELECT * FROM user WHERE username LIKE '$username'";
    $result_user = mysql_query($sql_user,$verbindung) or die (mysql_error());
	
	for($i=0;$i<mysql_num_rows($result_user);$i++)
	{
	$ergebnis_user[$i]=mysql_fetch_array($result_user);
	}
	for($i=0;$i<count($ergebnis_user);$i++)
	{
	$usrname = "$ergebnis_user[$i][username]";
	}
		
		
	
// Überprüfen der Einträge
   if($usrname)
   {
   $fehler="<font color=red>Der Benutzernamen existiert bereits!<BR></font>";
   }
   
  if(!$username)
  {
  $fehler="<font color=red>Bitte geben sie einen Benutzernamen ein!<BR></font>";
  }

  if($kwort1!=$kwort2)
   {
  $fehler.="<font color=red>Das Kennwort stimmt nicht Überein!<BR></font>";
  }

  if($kwort1 == "" OR $kwort2 == "")
  {
  $fehler.="<font color=red>Bitte tragen sie ein Kennwort ein!<BR></font>";
  }

  if($admin == 1 AND $dir)
  {
  $fehler.="<font color=red>Sie brauchen keine Ordnere angeben da sie einen Administrativen Account anlegen wollen!<BR></font>";
  }

  if($admin ==-1 AND !$dir)
  {
  $fehler.= "<font color=red>Bitte geben sie mindestens einen Ordner an, auf den der Benutzer zugreifen darf!<BR></font>";
  }
  if($admin ==1 AND $check == -1)
  {
  $fehler.= "<font color=red>Sie können keinen gespeerten Administrativen Account anlegen!<BR></font>";
  }
  if($fehler)
  {
  
  unset($flag);
  }
// wenn alle Felder richtig ausgefüllt wurden, werden die Werte in die Datenbank eingetragen

if(!$fehler)
{
   	$sql_user = "INSERT INTO user (username, kwort, admin, erlauben) VALUES ('$username', '$kwort1', '$admin', '$check')";
	$sql_directory = "INSERT INTO directory (directory, username, frei, admin) VALUES ('$ort', '$username', '$check', '$admin')"; 
	$sql_ipadressen = "INSERT INTO ipadressen (ipadr, username) VALUES ('$ipadr', '$username')"; 
	/* $tmp = array();
      foreach($var AS $tmp)
	   {
	   $sql2 = "INSERT INTO dir (directory, username, frei) VALUES ('$tmp', '$username', '$frei')"; // zu letzt bearbeitet $var zum eintragen der Ordner bei zeil 428
	mysql_query($sql2, $verbindung) OR die ("Fehler beim eintragen in Tabelle dir");
	     next($var);
		 }	*/
	
	mysql_query($sql_user, $verbindung) OR die ("Fehler beim eintragen in Tabelle User");
	mysql_query($sql_directory, $verbindung) OR die ("Fehler beim eintragen in Tabelle Directory");
	mysql_query($sql_ipadressen, $verbindung) OR die (mysql_error());
	
	$meldung="<BR><BR><BR><BR><span class=stil3><center>Die Daten wurden in die Datenbank eingetragen!</center></span>";
	
	
	#$sql2 = "INSERT INTO $db_tabelle2 (ordner) VALUES ('$ort')";
	#mysql_query($sql2,$verbindung);
	#$meldung.="<h2><font color=red>Die Ordner wurden in die Datenbank eingetragen!</font></h2>";
	
	echo $meldung;
	echo "<BR><BR><span class=hlinks><center><a href=$PHP_SELF?flag=3 class=links>Weiter</a></center></span><BR><BR>";
	
exit;
}
}


// Benutzerübersicht

if($flag==3)
{	//Abfrage Tabelle 1 user
    $sql_user = "SELECT * FROM user ORDER BY username";
    $result_user = mysql_query($sql_user,$verbindung);
	
	for($i=0;$i<mysql_num_rows($result_user);$i++)
	{
	$ergebnis_user[$i]=mysql_fetch_array($result_user);
	}
	//Abfrage Tabelle 2 directory
	$sql_directory = "SELECT * FROM directory ORDER BY id_dir";
    $result_directory = mysql_query($sql_directory,$verbindung);
	
	for($i=0;$i<mysql_num_rows($result_directory);$i++)
	{
	$ergebnis_directory[$i]=mysql_fetch_array($result_directory);
	}
	//Abfrage Tabelle 3  ipadressen
	$sql_ipadressen = "SELECT * FROM ipadressen ORDER BY id_ip";
    $result_ipadressen = mysql_query($sql_ipadressen,$verbindung);
	
	for($i=0;$i<mysql_num_rows($result_ipadressen);$i++)
	{
	$ergebnis_ipadressen[$i]=mysql_fetch_array($result_ipadressen);
	}
	
	echo "<BR><BR><table width=240 border=0 align=center>
	    <tr align=center><td width=240 class=Stil11 valign=top>Benutzerübersicht</td></tr></table>";
	echo "<BR><BR><BR><table width=740 border=0 align=center bgcolor=#000000>
	    <tr align=center>
      <td width=90 class=Stil3 ><font color=#FFFFFF>Benutzername</font></td>
      <td width=90 class=Stil3 Stil7><font color=#FFFFFF>Passwort</font></td>
      <td width=90 class=Stil3 Stil7><font color=#FFFFFF>Adminaccount</font></td>
      <td width=30 class=Stil3 Stil7><font color=#FFFFFF>Gespeert</font></td>
      <td width=190 class=Stil3 Stil7><font color=#FFFFFF>Ordner</font></td>
      <td width=250 class=Stil3 Stil7>&nbsp;   
	  </td>
    </tr>
  </table>";
	
	
	
   
	for($i=0;$i<count($ergebnis_user);$i++)
	{
	if($ergebnis_user[$i][admin] == 1) { $ja = "ja";} else {$ja = "nein";}
	if($ergebnis_user[$i][erlauben] == -1) { $j = "ja";} else {$j = "nein";}
	if($i%2==1){$color="bgcolor=#CCCCCC";} else {$color="bgcolor=#ffffff";}
	echo 
	"<table width=740 border=0 align=center $color><tr align=center> 
      <td width=87 class=Stil3>".$ergebnis_user[$i][username]."</td>
      <td width=83 class=Stil3>".$ergebnis_user[$i][kwort]."</td>
      <td width=82 class=Stil3>$ja $nein</td>
      <td width=50 class=Stil3>$j $n</td>";
	   
echo "<td width=150 class=Stil3>/kunden/".$ergebnis_directory[$i][directory]."</td>";
	  
echo "<td width=202 >&nbsp;&nbsp;&nbsp;<a href=".$PHP_SELF."?id=".$ergebnis_user[$i][id_user]."&username=".$ergebnis_user[$i][username]."&flag=4 class=links>Löschen</a>&nbsp";
	  if($ergebnis_user[$i][erlauben] == -1)
	  {
	  echo "<a href=".$PHP_SELF."?id=".$ergebnis_user[$i][id_user]."&flag=6 class=links>Freigeben</a>";
	  }
	  else
	  {
	  echo "<a href=".$PHP_SELF."?id=".$ergebnis_user[$i][id_user]."&flag=7 class=links>Speeren</a>" ;
	  }
	  
	   echo "&nbsp;<a href=".$PHP_SELF."?id=".$ergebnis_user[$i][id_user]."&flag=5 class=links>Bearbeiten</a></td>
    </tr></table>";
	
	}
	#echo "<BR><BR><BR><BR><BR><center><span class=Stil3><a href=$PHP_SELF?flag=0>neuen Benutzer Anlegen</a></span></center>";
	#echo "<BR><center><span class=Stil3><a href=logout.php?flag=1>Abmelden</a></span></center>";
exit;
}

// Benutzer Löschen
if($flag==4)
{

	$sql_user = "DELETE FROM user WHERE username='$username'";
	$sql_directory = "DELETE FROM directory WHERE username='$username'";
	$sql_ipadressen = "DELETE FROM ipadressen WHERE username='$username'";
    $result_user = mysql_query($sql_user,$verbindung) or die (mysql_error());
	$result_directory = mysql_query($sql_directory,$verbindung) or die (mysql_error());
	$result_ipadressen = mysql_query($sql_ipadressen,$verbindung) or die (mysql_error());
	
	echo "<BR><BR><BR><BR><center><span class=Stil3>Daten wurden aus der Datenbank gelöscht!</span><center>";
	echo "<BR><BR><BR><center><span class=Stil3><a href=$PHP_SELF?flag=3 class=links>Zurück</a></span></center>";
	
exit;
}


// Benutzer Bearbeiten

if($flag==5)
{
    $sql_user = "SELECT * FROM user WHERE id=$id";
	$sql_directory = "SELECT * FROM directory, ipadressen WHERE username='$username'";
	#$sql_ipadressen = "SELECT * FROM ipadressen WHERE username='$username'";
    $result_user = mysql_query($sql_user,$verbindung) or die (mysql_error());;
	$result_directory = mysql_query($sql_directory,$verbindung) or die (mysql_error());;
	
	//Tabelle user Forschleife
	for($i=0;$i<mysql_num_rows($result_user);$i++)
	{
	$ergebnis_user[$i]=mysql_fetch_array($result_user);
	
	}
	//Tabelle 2 Forschleife
	for($i=0;$i<mysql_num_rows($result_directory);$i++)
	{
	$ergebnis_directory[$i]=mysql_fetch_array($result_directory);
	
	}

	for($i=0;$i<count($ergebnis_user,$ergebnis_directory);$i++)
	{

$user = $ergebnis_user[$i][username];
$kennwort = $ergebnis_user[$i][kwort];

echo "<BR><BR><BR><form name=form1 method=post action=".$PHP_SELF."?id=$id&flag=8><table width=672 height=352 border=0 align=center><tr>";
echo "<td height=38 colspan=4><div align=center class=Stil1>Benutzer Bearbeiten</div></td>";
echo "</tr><tr><td width=301 height=24><span class=Stil3>Benutzername</span></td>";
echo "<td colspan=3><input name=username type=text id=username value=$user";
echo "></td></tr><tr><td height=24><span class=Stil3>Kennwort</span></td>";
echo "<td colspan=3><input name=kwort1 type=password id=kwort1 value=$kennwort";
echo "></td></tr><tr><td height=24><span class=Stil3>Kennwort Wiederholen </span></td>";
echo "<td colspan=3><input name=kwort2 type=password id=kwort2 value=$kennwort;";
echo "></td></tr><tr><td height=17><span class=Stil3>Adminacount</span></td>";
echo "<td width=92><div align=center class=Stil3><input type=radio name=admin value=1>ja</div></td>";
echo "<td width=107><div align=center class=Stil3><input name=admin type=radio value=-1 checked>nein</div></td>";
echo "<td width=154>&nbsp;</td></tr><tr><td height=17><span class=Stil3>Freischalten</span></td>";
echo "<td><div align=center><span class=Stil3><input type=radio name=check value=1>ja</span></div></td>";
echo "<td><div align=center><span class=Stil3><input name=check type=radio value=-1 checked>nein</span></div></td>";
echo "<td>&nbsp;</td></tr><tr><td height=34><span class=Stil3>Zugriff auf volgende Ordner</span><br>";
echo "<span class=Stil2>(wenn Adminacount = ja, dann ist diese Option nicht n&ouml;tig) </span></td><td colspan=3><select name=ort id=";
	  $directory = array();
	  echo "><option selected></option>";
	  foreach($var AS $tmp) {echo "<option value=".$tmp.">".$tmp."</option>"; next($var);}
echo "</select></td></tr><tr><td height=34>&nbsp;</td><td colspan=3>&nbsp; </td></tr><tr><td height=34><div align=center>";
echo "<input type=submit name=Submit value=&Uuml;bernehmen></div></td><td colspan=3><div align=center>";
echo "<input type=reset name=Submit value=Zur&uuml;cksetzen></div></td></tr></table></form>";
}
exit;
}







//Benutzer Freischalten
if($flag==6)
{
	$sql_user = "UPDATE user SET erlauben=1  WHERE id_user=$id ";
	$sql_directory = "UPDATE directory SET frei=1 WHERE username=$username";
	
	$result_user = mysql_query($sql_user,$verbindung);
	$result_directory = mysql_query($sql_directory,$verbindung);
	echo "<BR><BR><BR><center><span class=Stil3>Benutzerdaten wurden Freigeschaltet!</span><center>";
	echo "<BR><BR><center><span class=Stil3><a href=$PHP_SELF?flag=3 class=links>Zurück</a></span></center>";

exit;
}


//Benutzer Speeren
if($flag==7)
{
	$sql_user = "UPDATE user, directory SET user.erlauben=-1 AND directory.frei=-1 WHERE user.id_user=$id AND user.username=$username";
	$result_user = mysql_query($sql_user,$verbindung) or die (mysql_error());
	echo "<BR><BR><BR><center><span class=Stil3>Benutzerdaten wurden Gespeert!</span><center>";
	echo "<BR><BR><center><span class=Stil3><a href=$PHP_SELF?flag=3 class=links>Zurück</a></span></center>";


exit;
}


//Benutzer Ändern
if($flag==8)
{   
	
	$sql="UPDATE user, directory, ipadressen SET ";
	$sql.="user.username='$username', ";
	$sql.="user.kwort='$kwort1', ";
	$sql.="user.admin='$admin', ";
	$sql.="user.erlauben='$check', ";
	$sql.="directory.dir='$ort' ";
	$sql.="directory.username='$username' ";
	$sql.="directory.frei='$check' ";
	$sql.="directory.admin='$admin' ";
	$sql.="ipadressen.ipadr='$ip' ";
	$sql.="ipadressen.username='$username' ";
	$sql.=" WHERE user.username='$username' AND directory.username='$username' AND ipadressen.username='$username' ";
	$result = mysql_query($sql,$verbindung) or die (mysql_error());
	echo "<BR><BR><BR><BR><center><span class=Stil3>Benutzerdaten wurden Geändert!</span><center>";
	echo "<BR><BR><center><span class=Stil3><a href=$PHP_SELF?flag=3 class=links>Zurück</a></span></center>";





exit;
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
<style type="text/css">
<!--
.Stil2 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 10px;
}
.Stil3 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
}
.Stil7 {color: #000000}
.Stil8 {font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #000000; }

-->
</style>
<link href="links.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.Stil11 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 18px;
}
-->
</style>
</head>

<body>
<form name="form1" method="post" action="<?php $PHP_SELF; ?>">
  <p>&nbsp;</p>
  <table width="672" height="266" border="0" align="center">
    <tr>
      <td height="38" colspan="4" valign="top"><div align="center" class="Stil11">Benutzer Anlegen <br>
        <br>
        <br>
      </div></td>
    </tr>
    <tr>
      <td width="301" height="24" class="Stil3">Benutzername</td>
      <td colspan="3"><input name="username" type="text" id="username" value="<?php echo $username; ?>" size="30" maxlength="50"></td>
    </tr>
    <tr>
      <td height="24" class="Stil3">Kennwort</td>
      <td colspan="3"><input name="kwort1" type="password" id="kwort1" value="<?php echo $kwort1; ?>" size="30" maxlength="50"></td>
    </tr>
    <tr>
      <td height="24" class="Stil3">Kennwort Wiederholen </td>
      <td colspan="3"><input name="kwort2" type="password" id="kwort2" value="<?php echo $kwort2; ?>" size="30" maxlength="50"></td>
    </tr>
    <tr>
      <td height="17" class="Stil3 Stil7">Adminacount</td>
      <td width="92"><div align="center" class="Stil8">
          <input type="radio" name="admin" value="1"> 
        ja       </div></td>
      <td width="107"><div align="center" class="Stil8">
          <input name="admin" type="radio" value="-1" checked> 
        nein </div></td>
      <td width="154">&nbsp;</td>
    </tr>
    <tr>
      <td height="17" class="Stil3">Freischalten</td>
      <td><div align="center" class="Stil3">
          <input type="radio" name="check" value="1">
  ja </div></td>
      <td><div align="center" class="Stil3">
          <input name="check" type="radio" value="-1" checked>
  nein </div></td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td height="34" class="Stil3 " >Ordner</td><td colspan="3"> 
     <table><tr><td align=left><select multiple name="ort" class=Stil3 id="ort">
	 <?php 
	  
	  foreach($var AS $tmp)
	   {
	   echo "<option value=".$tmp.">".$tmp."</option>";
	   next($var);
	   }
	   ?>
	   </select></td></tr></table>
	  
       			
      
    </tr>
    <tr>
      <td height="34"><div align="center">
      </div></td>
      <td colspan="3"><div align="center">
      </div></td>
    </tr>
    <tr>
      <td height="34"><div align="center">
        <input type="submit" name="Submit" value="&Uuml;bernehmen">
        <input name="flag" type="hidden" id="flag" value="1">
      </div></td>
      <td colspan="3"><div align="center">
        <input type="reset" name="Submit" value="Zur&uuml;cksetzen">
      </div></td>
    </tr>
  </table>
  <br>
  </a>
</form>



</body>
</html>
<?php
echo $meldung="<table width=678 border=0 align=center>
    <tr>
      <td><span class=Stil4><left>$fehler</left></span></td>
    </tr>
  </table>";
?>
 
wieso stehen die ordnernamen nicht immer an der gleichen stelle in dem array, immer wenn ich die seite aktualisiere, ändert sich die position der ordner innerhalb des arrays auser der Ordner, der an letzter stelle im array steht, der bleibt auch immer da.
Wie bekomme ich es hin, das ich nur die neuen ordner in die Datenbank reinschreibe, bis jetzt hane ich es so versucht:

PHP:
// Auslesen des Ordners

$dir = dir("xxx/xxxx");
$var = array();
while($name = $dir->read())
{
  if($name != "." AND $name != "..")
  {
  $tmp = array_push($var,$name);
  }
}

// testen ob Ordnereintrag schon vorhanden ist
     
$directory = array();
	
	  foreach($var AS $tmp) 
	  {
	  	  $sql_select="SELECT directory FROM directory WHERE directory='$tmp'";
		  $result_select = mysql_query($sql_select,$verbindung) or die (mysql_error());
     	         if(mysql_num_rows($result_select)!=1)
		  {
		  $sql="INSERT INTO directory (directory) VALUES ('$tmp')";
		  $result=mysql_query($sql,$verbindung) or die (mysql_error());
		  echo "$tmp";
		   next($var);
		   }
		   else
		   {
		   $sql="UPDATE directory SET directory='$tmp' WHERE directory!='$tmp'";
		   $result=mysql_query($sql,$verbindung) or die (mysql_error());
		    next($var);
		   }
	   }
	   
?>
also auf Deutsch:
ich möchte nix weiter, das er mir neue Ordner(wenn ich sie mit einem FTP Programm auf dem Server angelegt habe) und nur die neuen Ordner in die bestehende Datenbank mit einfügt.
Wenn ich diese Abfragen wie sie hier stehen ausführe, erkennt er, das die Alten orner vorhanden sind und geht in den else Zweig der schleife aber jetzt füllt er die Datenbank mit dem Namen des Letzten Ordners auf, das macht er genau so oft, wie es Ordner gibt.

Worann liegt das oder sind meine Abfragen Müll

Gruß s3993

PS: Danke allen, die mir Helfen
 
oder gibt es ne möglichkeit, die ordner Alfabetisch in das array reinzu schreiben und sie auch so wieder auszulesen, damit sollte das problem, das sich die ordner innerhalb des arrays verschieben, gelöst sein, oder ?
 
Unter PHP5 gibts ne neue Funktion, die die Ordner alphabetisch ausliest: [phpf]scandir[/phpf]
In den Kommtentaren steht auch der Workaround, falls PHP5 nicht vorhanden sein sollte.
 
schaut so aus, als hätte ich kein php5

Code:
Fatal error: Call to undefined function: scandir() in /srv/www/htdocs/test.php on line 5

hast du noch eine idee?
 
upps sorry, das geht schon mal, danke wie bekomme ich jetzt aber nur die anzahl der ordner raus? also ich brauche die genaue anzahl in einer variablen, mit der ich dann weiterarbeiten kann
 
Zurück