Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: von einem array ins andere schreiben

  1. #1
    Forum Guru Avatar von synaptic
    Registriert seit
    20.06.2007
    Ort
    Butzbach-Wiesental
    Beiträge
    10.901
    Danke
    45
    Bekam 48 mal "Danke" in 46 Postings
    Blog-Einträge
    1

    Standard von einem array ins andere schreiben

    aaalso da ich ja nen vollhorst in sachen php bin, steh ich mal wieder vorm rätsel der eierlegenden wollmilchsau
    nee spass beiseite!
    also folgendes problem:
    ich habe auf ner seite eine anzahl von namen mit ner checkbox davor, diese namen werden aus einer textdatei eingelesen und ausgegeben.
    wenn man namen auswählt und dann auf den button drückt mit "auswahl entfernen" sollen entsprechend der auswahl die einträge entfernt werden.

    meine idee war in der funktion die des durchführt einfach ein array (die auswahl zu übergeben (klappt!)
    dann die textdatei einzulesen und den inhalt komplett in einem array zu speichern (klappt!)
    dann lösche ich die textdatei (klappt ebenfalls)
    erzeuge ein leeres array was für die übernahme der verbleibenden werte dient. (klappt auch )

    was mir jetzt fehlt ist die logik, wie ich das array mit 1 bis x einträgen der zu löschenden werte gegenprüfe mit dem array mit den 1 bis x einträgen der alte liste.
    die einträge wo die liste vom trash mit nem eintrag aus der liste der namen übereinstimmt sollen ignoriert werden und alle anderen werte, wo keine übereinstimmung vorhanden ist sollen in das "übernahme"-array geschrieben werden, damit ich die dann in eine neue txt-datei schreiben kann.

    leider haben meine versuche alle ihr ende darin gefunden, dass die komplette alte liste ins übernahme-array geschrieben wurde manchmal sogar mehrfach.
    wenn ihr zwingend nen code sehen wollt, kann ich den gerne bereitstellen ich hab den jetzt vorerst absichtlich weggelassen, weil ich denke, dass es anhand der beschreibung einfacher ist nen code zu bauen, als sich von meiner digitalen verwurstung irritieren zu lassen.

    Danke für eure unterstützung
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    KEIN support via pn, email, messenger oder falsch geposteten threads
    Futter für deine Schnuffelzwerge gibts bei den Schnuffelzwergen TOP Qualität, also klicken und kaufen

  2. #2
    Bandit
    Gast

    Standard AW: von einem array ins andere schreiben

    Ungetestet:
    PHP-Code:
    <?php
       
    if (isset($_POST['name']))
       {
           
    $data explode("\n"file_get_contents('datei.txt'));
     
           foreach (
    $_POST['name'] as $value)
           {
               
    $key array_search($value$data);
     
               if (
    $key !==false)
                  unset(
    $data[$key]);
           }
     
           
    file_put_contents('datei.txt'implode("\n"$data));
       }
    ?>

  3. #3
    Forum Guru
    Themenstarter
    Avatar von synaptic
    Registriert seit
    20.06.2007
    Ort
    Butzbach-Wiesental
    Beiträge
    10.901
    Danke
    45
    Bekam 48 mal "Danke" in 46 Postings
    Blog-Einträge
    1

    Standard AW: von einem array ins andere schreiben

    mmh klappt leider auch net irgendwie..
    deine funktion umgeschrieben, dass die bei mir reinpasst sieht so aus:

    PHP-Code:
    function deleteSelection($selection){
    $path getBaseDir($_SERVER['SCRIPT_FILENAME']);
        if(
    file_exists($path."folders.txt")){
            
    $data explode("\n"file_get_contents('folders.txt'));
            foreach (
    $selection as $value){
                
    $key array_search($value$data);
                if (
    $key !== false)
                unset(
    $data[$key]);
            }
            
    file_put_contents('folders.txt'implode("\n"$data));
        }

    der aufruf der funktion ist folgender:
    PHP-Code:
        if(strip_tags($_GET['radio'])=== "auswahl"){
            
    $selectedFolders = array();
            
    $keys array_keys($_GET);
            
    $selection = array();
            for(
    $i 0$i count($keys); $i++){
                if(
    $_GET[$keys[$i]] === "on"){
                
    array_push($selection$keys[$i]);
                }
            }
            
    deleteSelection($selection);
            for(
    $i 0$i count($keys); $i++){
                unset(
    $_GET[$keys[$i]]);
                }
        } 
    zur zeit bastel ich halt noch mit get, weil ich zuerst sehen will, was da so passiert und was in den variablen drinsteht
    KEIN support via pn, email, messenger oder falsch geposteten threads
    Futter für deine Schnuffelzwerge gibts bei den Schnuffelzwergen TOP Qualität, also klicken und kaufen

  4. #4
    Bandit
    Gast

    Standard AW: von einem array ins andere schreiben

    Verrate uns doch mal, wie du das Formular aufbaust (Quellcode) und wie die Datei genau aussieht. Dann ist das etwas leichter für uns, eine passende Lösung zu finden.

  5. #5
    Forum Guru
    Themenstarter
    Avatar von synaptic
    Registriert seit
    20.06.2007
    Ort
    Butzbach-Wiesental
    Beiträge
    10.901
    Danke
    45
    Bekam 48 mal "Danke" in 46 Postings
    Blog-Einträge
    1

    Standard AW: von einem array ins andere schreiben

    also so sieht des dann aus: http://badadmin.hopto.org/entwicklung/checker.php

    das ding soll später ne ordnerliste als default haben und ne domainliste eingetippt bekommen, jede domain wird mit jedem ordner verknüpft und bildet ne url.
    die url wird überprüft und der returncode ausgelesen, sobald nen anderer returncode kommt, als aus der 400er-reihe ist sozusagen das directory nicht sicher (bei returncode 200 wurde ein directorylisting komplett geladen und zeigt also ordnerinhalte an)
    ich kann die komplette liste löschen, ich kann nen ordner dranhängen und damit die default-liste erweitern, aber ich bekomm es ums verrecken nicht hin ausgewählte ordner zu löschen

    bisher arbeite ich mit GET, weil ich die werte noch sehen will, bevor ich später nen POST draus mache.

    das hier ist die checker.php:
    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" dir="ltr" lang="de">
    <head>
        <meta name="author" content="synaptic" />
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <meta name="pragma" content="no-cache" />
        <title>DirectoryChecker</title>
        <script type="text/javascript">
            function valueChange(){
                var btn = document.getElementById("folder_submit");
                var rlist = document.getElementById("radioliste");
                var alist = document.getElementById("radioauswahl");
                var fadd = document.getElementById("addfolder");
                var input = document.getElementById("ordnername");
                var boxes = document.getElementsByTagName("")
                if(rlist.checked==true){
                    btn.value="Ordnerliste löschen";
                    input.disabled=true;
                }
                if(alist.checked==true){
                    btn.value="Auswahl löschen";
                    input.disabled=true;
                    
                }
                if(fadd.checked==true){
                    btn.value="Ordner hinzufügen";
                    input.disabled=false;
                }
            }
        </script>
        <style type="text/css">
        .inputdiv{
        width:300px;
        text-align:center;
        float:left;
        margin-right:40px;
        }
        
        .inputdiv input{
        margin-top:10px;
        }
        
        .inputdiv p{
        text-align:left;
        margin-left:40px;
        }
        
        #folder-output{
        text-align:left;
        width:160px;
        }
        
        #showframe{
        display:none;
        width:400px;
        height:400px;
        }
        #wrapper{
        width:900px;
        margin:0 auto;
        }
        </style>
        </head>
        <body>
    <?php
    //funktionen der functions.php bereitstellen
    require_once("functions.php"); 

        
    $prefix"http://";
        
    $slash "/";
        
    $input strip_tags($_GET['domaininput']);
        
    $domainliste split("\r"$input);
        
    $path getBaseDir($_SERVER['SCRIPT_FILENAME']);
        
    $ordner readFolders($path."folders.txt");  //liest die folders.txt ein und gibt ein array mit dem inhalt der datei zurück
    if(!empty($input)){
        echo 
    "<table>";
        if(
    file_exists($path."folders.txt")){
            for(
    $i=0;$i<count($domainliste);$i++){
                if(
    trim($domainliste[$i])!=""){
                    foreach(
    $ordner as $value){
                        echo 
    "<tr>";
                            
                                
    $url $prefix.trim($domainliste[$i]).$slash.trim($value).$slash;
                                
    $request = new HttpRequest($url); 
                                try {
                                    
    $inhalt $request->send()->getBody(); 
                                    
    //responsecode ermitteln und ausgeben
                                    
    echo "<td><a href='".$url."' target='_blank' >".$url."</a></td><td><span style=\"background:".codeColor(getResponseCode($request))."\">Returncode: ".getResponseCode($request)."</span></td>";
                                    if(
    trim($value) ==="admin" && getResponseCode($request) != 404 ){
                                        
    $versionrequest = new HttpRequest($url."footer.jsp");
                                        try {
                                            
    $versioninhalt $versionrequest->send()->getBody(); 
                                            echo 
    "<td>".parseVersionNr(strip_tags($versioninhalt))."</td>";
                                        }catch (
    HttpException $e) {    
                                            print 
    "foreach".$e;    
                                        }
                                    }else{
                                        echo 
    "<td>&nbsp;</td>";
                                    }
                                    
    //request-objekt erzeugen
                                    // HttpRequest::send() returns an HttpMessage object    
                                    // of type HttpMessage::TYPE_RESPONSE or throws an exception    
                                
    }catch (HttpException $e) {    
                                print 
    "forschleife".$e;    
                                }
                                echo 
    "</tr>";
                    }
                }
                echo 
    "<tr colspan =\"3\"><td>&nbsp</td></tr>";
            }
        }else{
            echo 
    "<tr><td>Es ist keine Ordnerliste vorhanden</td></tr>";
        } 
        echo 
    "</table>\n";
    }




    if(isset(
    $_GET['ordnername']) && !empty($_GET['ordnername'])){
    addFolder(strip_tags($_GET['ordnername']));
    unset(
    $_GET['ordnername']);
    echo 
    "<br /> ";
    }else if(isset(
    $_GET['ordnername'])) {
    echo 
    "kein Ordner hinzugefügt, weil keine Angabe gemacht wurde.";
    }

    if(
    $_GET['radio']==="liste" && file_exists($path."folders.txt")){
    unlink($path."folders.txt");
    echo 
    "Ordnerliste gelöscht! ";
    }

    if(isset(
    $_GET['domaininput']) && empty($_GET['domaininput'])){
    echo 
    "Keine Domain angegeben! ";
    }

        



    ?>

    <hr />
    <div id="wrapper">
    <form method="get">
    <div class="inputdiv" id="domain-input">
        <fieldset>
            <legend>Domain-Eingabe</legend>
            <textarea name="domaininput" rows="10" cols ="30"></textarea><br />
            <input type="submit" value="Directorycheck durchführen" />
        </fieldset>
    </div>
    </form>
    <form method="get">
    <div class="inputdiv" id="folder-input">
        <fieldset>
            <legend>Default-Ordner hinzufügen</legend>
            <input type="text" name="ordnername" id="ordnername" value="" />
            <p>
                <input type="radio" id="addfolder" name="radio" value="addfolder" onclick="valueChange();" /> Ordner hinzufügen
            </p>
            <p>
                <input type="radio" id="radioliste" name="radio" value="liste" onclick="valueChange();" /> Ordnerliste löschen
            </p>
            <p>
                <input type="radio" id="radioauswahl" name="radio" value= "auswahl" onclick="valueChange();" /> ausgewählte Ordner löschen
            </p>
            <input type="submit" id="folder_submit" value="Ordner hinzufügen" />
        </fieldset>
        
    </div>
    <div class="inputdiv" id="folder-output">
            <fieldset>
            <legend>Default-Ordner</legend>
    <?php
        
    if(file_exists($path."folders.txt")){
            
    $aktuelleOrdner readFolders($path."folders.txt");
            foreach(
    $aktuelleOrdner as $ordner){
                echo 
    "<input type=\"checkbox\" name=\"".$ordner."\" />".$ordner."<br />";
            }
        }else{
            echo 
    "Keine Ordnerliste vorhanden!";
        }
        
        if(
    strip_tags($_GET['radio'])=== "auswahl"){
            
    $selectedFolders = array();
            
    $keys array_keys($_GET);
            
    $selection = array();
            for(
    $i 0$i count($keys); $i++){
                if(
    $_GET[$keys[$i]] === "on"){
                
    array_push($selection$keys[$i]);
                }
            }
            
    deleteSelection($selection);
            for(
    $i 0$i count($keys); $i++){
                unset(
    $_GET[$keys[$i]]);
                }
        }
    ?>
        </fieldset>
    </div>
    </form>
    </div>
    </body>
    </html>
    das hier ist die functions.php:
    PHP-Code:
    <?php 
    function parseVersionNr($string) {
            
    $echse ="/.*([0-9]+\.[0-9]+\.[0-9]+_[0-9]+).*/";
    preg_match($echse,$string,$matches);
    return 
    "Cira-Version: ".$matches[1];
    }  
       
    function 
    getResponseCode($request){
    $code $request->getResponseCode();
    return (int)
    $code;
    }   

    function 
    codeColor($code){
        if(
    $code==400 || $code==401 || $code==402 || $code==403 || $code==404){
            
    $color"#28B023;"//dunkelgrün also OK
        
    }else if($code==301 || $code==302 || $code==500 || $code==503){
            
    $color="#FFEA31;"// gelb also odner gefunden, aber page nich successful geladen
        
    }else{
            
    $color="#FF4726;"// rot also nich OK
        
    }
        return 
    $color;
    }
    function 
    readFolders($datei){
        
    $inhalte = array();
        if(
    file_exists($datei)){
            
    $dateizeiger=fopen($datei,"r");
            while(!
    feof($dateizeiger)){
                
    array_push($inhaltefgets($dateizeiger));
            }
            
    fclose($dateizeiger);
            return 
    $inhalte;
        }else{
        return 
    "Datei nicht vorhanden!";
        }
    }

    function 
    addFolder($ordnername){
        
    $path getBaseDir($_SERVER['SCRIPT_FILENAME']);
        
    $datei $path."folders.txt";
        if(
    file_exists($datei)){
            
    $dateizeiger=fopen($datei,"a+");
            
    fwrite($dateizeiger"\n".$ordnername);
            
    fclose($dateizeiger);
        }
        else{
        
    $dateizeiger=fopen($datei,"a+");
            
    fwrite($dateizeiger$ordnername);
            
    fclose($dateizeiger);
        }
        echo 
    "Ordner ".$ordnername." hinzugefügt";
    }

    function 
    getBaseDir($path){
        
    $pathparts explode("/"$path);
        
    array_pop($pathparts);
        
    $returnpath implode("/"$pathparts);
        return 
    $returnpath."/";
    }

    function 
    deleteSelection($selection){

    $path getBaseDir($_SERVER['SCRIPT_FILENAME']);
        if(
    file_exists($path."folders.txt")){
            
    $data explode("\n"file_get_contents('folders.txt'));
            foreach (
    $selection as $value){
                
    $key array_search($value$data);
                if (
    $key !== false){
                    unset(
    $data[$key]);
                }
            }
            
    file_put_contents('folders.txt'implode("\n"$data));
        }



    }
    und hier die folders.txt:
    Code:
    admin
    adminplugins
    config
    fe
    public
    sc
    static
    WEB-INF
    tools
    KEIN support via pn, email, messenger oder falsch geposteten threads
    Futter für deine Schnuffelzwerge gibts bei den Schnuffelzwergen TOP Qualität, also klicken und kaufen

  6. #6
    Bandit
    Gast

    Standard AW: von einem array ins andere schreiben

    Das ist der springende Punkt:
    PHP-Code:
    echo "<input type=\"checkbox\" name=\"".$ordner."\" />".$ordner."<br />"
    Das würde ich so machen:
    PHP-Code:
    echo "<input type='checkbox' name='ordner[]' value='$ordner' />$ordner<br />"
    Und dann müsste bei Script von oben (bis auf den Namen und Post) eigentlich passen.

  7. #7
    der/die Göttliche Avatar von jojo87
    Registriert seit
    23.03.2007
    Ort
    Leipzig
    Alter
    30
    Beiträge
    3.131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: von einem array ins andere schreiben

    Vorraussetzung ist, dass alle Checkboxen den selben Namen haben, also:
    Code:
    <form>
    <input type="checkbox" name="delete[]" value="Eintrag der folders.txt" />
    </form>
    Dadurch hast du dann ein Array $_POST['delete'][] (oder halt $_GET['delete'][]).
    Dann kannst du das mit dieser Funktion gegen die alte Liste laufen lassen:
    PHP-Code:
    //gibt Array mit neuer Liste zurück
    //$alt: Array mit der alten Liste, ich gehe von einem numerischen Array aus
    //$delete: Array mit den zu löschenden Einträgen
    function neueListe($alt$delete) {
    //nur ausführen, wenn beide Parameter als Array vorliegen
    if(is_array($alt) && is_array($delete)) 
    {
      for(
    $i 0$i count($alt); $i++)
      {
        if(
    in_array($alt[$i], $delete))
       {
         unset(
    $alt[$i]);
       }
      }
    return 
    $alt;
    }
    else
    {
     return 
    false;
    }

    Sollte gehen.
    Zum Aufrufen dann in etwa so:
    PHP-Code:
    $neu neueListe(readFolders(folders.txt), $_POST['delete']); 
    Ungetestet, hoffe aber, es hilft.

    Gruß,
    Jojo

    Edit: da war Bandit schneller

  8. #8
    Forum Guru
    Themenstarter
    Avatar von synaptic
    Registriert seit
    20.06.2007
    Ort
    Butzbach-Wiesental
    Beiträge
    10.901
    Danke
    45
    Bekam 48 mal "Danke" in 46 Postings
    Blog-Einträge
    1

    Standard AW: von einem array ins andere schreiben

    DANKE ihr beiden, werd ich mir gleich direkt mal reinschrauben
    Geändert von synaptic (07.02.2009 um 16:34 Uhr)
    KEIN support via pn, email, messenger oder falsch geposteten threads
    Futter für deine Schnuffelzwerge gibts bei den Schnuffelzwergen TOP Qualität, also klicken und kaufen

  9. #9
    Forum Guru
    Themenstarter
    Avatar von synaptic
    Registriert seit
    20.06.2007
    Ort
    Butzbach-Wiesental
    Beiträge
    10.901
    Danke
    45
    Bekam 48 mal "Danke" in 46 Postings
    Blog-Einträge
    1

    Standard AW: von einem array ins andere schreiben

    also irgendwas will da noch immer nich so ganz..

    PHP-Code:
        if(file_exists($path."folders.txt")){
            
    $aktuelleOrdner readFolders($path."folders.txt");
            foreach(
    $aktuelleOrdner as $ordner){
                echo 
    "<input type=\"checkbox\" name=\"delete[]\" value=\"".$ordner."\" />".$ordner."<br />";
            }
        }else{
            echo 
    "Keine Ordnerliste vorhanden!";
        }
        
        if(
    strip_tags($_GET['radio'])=== "auswahl"){
        
            if (isset(
    $_GET['delete'])){
                
    $data explode("\n"file_get_contents($path."folders.txt"));
                
                foreach (
    $_GET['delete'] as $value){
                    
    $key array_search($value$data);
                    if (
    $key !== false)
                        unset(
    $data[$key]);
                }
                
    file_put_contents($path."folders.txt"implode("\n"$data));
            }
        } 
    ich weiß noch immer nich wo der fehler liegt.. grundlegend verstanden was da passieren soll hab ich, jedoch bring ich es einfach nich auf die kette -.-
    wär toll wenn da nochmal jemand drübergucken könnte.
    hab die funktionalität vorerst nur in der checker.php, damit ich erstma sichergehen kann, dass es fruchtet, bevor ich die funktion auslagere
    KEIN support via pn, email, messenger oder falsch geposteten threads
    Futter für deine Schnuffelzwerge gibts bei den Schnuffelzwergen TOP Qualität, also klicken und kaufen

  10. #10
    Bandit
    Gast

    Standard AW: von einem array ins andere schreiben

    Daran wirst du nicht vorbeikommen:

    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

    Für uns ist es im Moment etwas schwer, dieses Problem nachzuvollziehen, ohne ein entsprechendes Script zu schreiben. Ich werde aber trotzdem mal sehen, dass ich dir etwas bastele.

Ähnliche Themen

  1. array in einem struct
    Von danhof im Forum Forum für alle anderen Programmiersprachen
    Antworten: 2
    Letzter Beitrag: 28.04.2008, 20:49
  2. [C++] Klassenvariable an andere Klasse übergeben (2D Array)
    Von DarkSyranus im Forum Forum für alle anderen Programmiersprachen
    Antworten: 4
    Letzter Beitrag: 06.12.2007, 18:38
  3. Problem mit Array füllen und an andere Funktion übergeben
    Von Jessica Heinze im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 10.06.2007, 12:22
  4. array aus text auslesen bzw schreiben.
    Von doper im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 20.10.2006, 16:03
  5. input value einem Array geben
    Von Mitti im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 23.06.2006, 17:18

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •