Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbanken bearbeiten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbanken bearbeiten

    Hallo ihr, möchte in einer Datenbank neue User anlegen und über den Button löschen in der entstandenen Tabelle die Möglichkeit nutzen, auch wieder User zu löschen. Funktioniert leider nicht. Wollte das Ganze so gestalten, das alles mit Leerzeichen überschrieben wird. Findet jemand meinen Fehler? (PHP Version 4.3)
    Danke pegmen
    <html>
    <head>
    <title>Mini Datenbank</title>
    </head>
    <body>

    Anlegen von Usern:


    <form action=db.php" method="get">
    <table>
    <tr><td>Vorname:</td>
    <td><input type="Text" name="vorname"></td></tr>
    <tr><td>Nachname:</td>
    <td><input type="Text" name="nachname"></td></tr>
    <tr><td>Login:</td>
    <td><input type="Text" name="login"></td></tr>
    <tr><td>Passwort:</td>
    <td><input type="Text" name="pass"></td></tr>

    <tr><td>autom. ID:</td>
    <td><input type="Text" name="id" value ="<?php echo time();?>"></td></tr>
    <tr><td>Userlevel:</td>
    <td><select name="userlevel">
    <?php for($i=1; $i<21; $i++) { ?>
    <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
    <?php } ?>
    </select></td></tr>
    <tr><td colspan="2">
    <input type="Submit" name="submit" value="User Speichern"></td></tr>
    </table>
    </form>
    <?php
    /* Anlegen eines Datenbank-Arrays $csv_array zum auslesen der Einträge. */

    function csv_write ( $csv_array, $fp ){
    $zeile = implode(",",$csv_array)."\r\n";
    fputs($fp,$zeile);
    }

    function read_csv($fp){
    while ( !feof ( $fp ) ) {
    $zeile = fgetcsv ( $fp, 4096 );
    if ( count ( $zeile ) == 6 ) {
    $csv_array[]= $zeile;
    }
    }
    return $csv_array;
    }


    if ($HTTP_GET_VARS["submit"] == "User Speichern") {


    $fpr = @fopen("db.txt","r");
    if ( $fpr == true ) {
    $inhalt = false;
    while ( !feof ( $fpr ) ) {
    $lieszeichen = fgetc ( $fpr );
    if ( ( ord ( $lieszeichen ) != 0 ) && ( ord ( $lieszeichen ) != 10 ) && ( ord ( $lieszeichen ) != 13 ) &&
    ( ord ( $lieszeichen ) != 32 ) ) {
    $inhalt = true;
    break;
    }
    }
    fclose ( $fpr );
    }
    if ( $inhalt == true ) {
    $fp = fopen("miniDb.txt","a+");

    if ($fp == true ) {

    $allewerte = true;
    $datensatz = array ( $HTTP_GET_VARS["vorname"],
    $HTTP_GET_VARS["nachname"],
    $HTTP_GET_VARS["login"],
    $HTTP_GET_VARS["pass"],
    $HTTP_GET_VARS["userlevel"],
    $HTTP_GET_VARS["id"] );


    foreach ( $datensatz as $val ){
    if ( $val == "" ) {
    echo ( "Bitte alle Werte ausfüllen");
    $allewerte = false;
    break;
    }
    }
    if ( $allewerte == true ){

    csv_write($datensatz,$fp);
    }
    fclose($fp);
    }
    }
    if ( $inhalt == false ) {
    $fp = fopen("miniDb.txt","w+");

    if ($fp == true ) {

    $allewerte = true;
    $datensatz = array ( $HTTP_GET_VARS["vorname"],
    $HTTP_GET_VARS["nachname"],
    $HTTP_GET_VARS["login"],
    $HTTP_GET_VARS["pass"],
    $HTTP_GET_VARS["userlevel"],
    $HTTP_GET_VARS["id"] );


    foreach ( $datensatz as $val ) {
    if ( $val == "" ) {
    echo ( "Bitte alle Werte ausfüllen");
    $allewerte = false;
    break;
    }
    }
    if ( $allewerte == true ){
    csv_write($datensatz,$fp);
    }
    fclose($fp);
    }
    }
    }
    $fp = @fopen("miniDb.txt","r");
    if ($fp == true) {

    ?>



    Folgende User sind bereits vorhanden:
    </p>
    <form action="miniDB.php" method="get">
    <table cellspacing="0" cellpadding="2" border="1" bordercolor="Black" width="75%">
    <tr>
    <td>Vorname</td>
    <td>Nachname</td>
    <td>Login</td>
    <td>Passwort</td>
    <td>Userlevel</td>

    <td>Löschen</td>
    </tr>
    <?php

    $zeile = read_csv($fp);


    for ( $i = 0; $i < count ( $zeile ) ; $i++ ) {
    echo "<tr>";
    for ( $j = 0; $j < count ( $zeile[$i] ); $j++ ) {
    if ( $j < count($zeile[$i]) -1 ) {
    echo "<td>".$zeile[$i][$j]."</td>";
    }else {
    echo "<td>";
    ?>
    <input type="checkbox" name="loesch[]" value="<?php echo $zeile[$i][$j];?>">
    <?php
    echo "</td>";

    }
    }
    echo "</tr>";
    }

    ?>
    <tr>
    <td colspan="7">
    <input type="submit" name="submit" value="User loeschen"></td>
    </tr>
    </table>
    </form>
    <?php
    fclose($fp);
    }
    if ( $HTTP_GET_VARS["submit"] == "User loeschen" ){
    $fp = @fopen("miniDb.txt","r+");
    if ( $fp == true ) {

    $leer = " ";
    $leerstring = " ";
    $gelesen = 0;
    $geloescht = 0;

    $zeile = read_csv($fp);
    for ( $i = 0; $i < count($zeile); $i++ ){


    $gelesen += strlen(implode(",",$zeile[$i]));

    for ( $j = 0; $j < count($zeile[$i]); $j++ ) {



    if ( is_array ( $HTTP_GET_VARS["loesch"] ) ) {


    foreach ( $HTTP_GET_VARS["loesch"] as $key => $value ){


    if ( $zeile[$i][$j] == $value ){


    $row = implode(",",$zeile[$i] );
    $geloescht += strlen($row);
    for ( $k = 0; $k < strlen($row); $k++ ){

    $leer .= str_replace(substr($row,$k,1)," ",$row);
    $leerstring .= substr($leer,strpos($leer," ",$k),1);

    }

    fseek ( $fp, $gelesen - strlen($row) );

    /*Jetzt wird ab der gesetzen Zeigerposition $leerstring geschrieben und ein "\r\n" angehängt.
    Das ist der Zeilenumbruch unter Windows. Leider stimmt danach das Ergebnis nicht mehr */
    fputs($fp,$leerstring,strlen($leerstring));
    fputs($fp,"\n");

    fseek($fp, - strlen($leerstring)-2,SEEK_CUR);
    }
    }
    }else{
    echo "Bitte markieren Sie die Benutzer die Sie löschen wollen"."
    ";
    $loeschnone = true;
    break;
    }
    }
    if ( $loeschnone == true ){
    break;
    }

    }

    }
    @fclose($fp);
    }
    ?>

    </body>
    </html>

  • #2
    Was funktioniert und was nicht, gibt es Fehlermeldungen?
    Und ich denke, deinen Code wird niemand lesen. Wenn du Code postest doch bitte mit Code-Tags und beschränkt auf die relevanten Teile. Wenn du eine Passage aus einem englischen Buch nicht verstehst, schickst du auch nicht das ganze Buch zu einem Englisch-Spezialisten.
    Gruss
    L

    Kommentar

    Lädt...
    X