Beiträge von Stef

    basti1012 :

    Okay alles klar.

    Zitat

    Aber ich muß sagen das mir das Layout deiner Tabelle gefällt.

    Gegenüber meinen bunten kram bist du ein Weltmeister.

    Haha ^^ Danke ;)


    Das ist keine Tabelle. Das sind mehrere div-blöcke welche im Bootstrap Grid-System eine feste Spaltenanzahl erhalten haben

    Zitat

    Hast du das Layout im Kopf,oder holst du dir irgendwo anregungen ? ,weil ich muß mir mal so langsam für meine ganze Page ein Layout erstellen was die Besucher nicht gleich abschreckt

    Dieses Layout hatte ich nicht im Kopf. Ich habe dieses im Internet gesehen und dachte mir einfach, dass dies als Userverwaltung super aussieht und für jeden gut bedienbar. Dies ist aufjedenfall besser als das vorige Layout und hat mehr Funktionen zu bieten.

    Dieses Layout habe ich von dieser Seite: https://www.tutorialrepublic.com/snippets/previ…ment-data-table

    Moin,

    okay. So kann man das natürlich auch machen. Ist sogar doch besser beim genauern hinschauen. Dann hat man keine Abfragen mehr im HTML sondern nur die Variablen. Mit Templating hatte ich bisher noch nichts zu tun.

    Muss man, wenn man eine Variable als Value eines Feldes speichertm nicht diese Variable mit echo ausgeben?

    Grüße,

    Stef

    Guten Morgen,

    Arne Drews $ cottton :

    Vielen Dank für eure sehr gute Hilfe und Mühe. :)

    Okay. Wenn ich es nach der Syntax erstelle und die Werte so eintrage wird trotzdem nichts Ausgegeben.

    Wenn ich OFFSET in die SQL-Query Eingebe verfärbt sich das aber nicht Rot. Und es kommt zum Fehler.

    Dies ist der Codeteil vom Limit und Offset:

    Beispiel:

    Wir sind auf Seite 1. Also wird dem Offset der Wert null zugewiesen, denn (1 -1) * 5 = 0. Somit steht in der SQL-Query drin:

    Select columns FROM users LIMIT 5, 0 . Da wird nichts aus der DB gezogen. Nun gehen wir auf Seite 2. Da lautet die Rechnung (2 - 1) * 5. Da kommt dann 5 raus. Das heißt es werden ab dem startIndex 5, 5 columns aus der DB gezogen. Nun gehen wir auf Seite 3. Rechnung : (3 - 1) * 5 = 10. Nun werden von startIndex 5, 10 Columns aus der DB gezogen. Und so weiter....

    Seite 1 bekommt somit keine Resultate zurück Weil der Offset 0 ist. Deswegen bekommt erst Seite 2 die Daten aus der Datenbank.

    Da liegt irgendwo dann ein Fehler vor. Aber wenn bei Seite 3 vom startIndex 5, 10 Reihen gefetcht werden sollte man doch 10 Ausgaben haben?

    Zitat

    Ohne bindParam() - also die Parameter per execute übergeben - werden die Values default immer als String in die Query eingefügt.

    Gibst Du also ein array('limit' => 5) als integer rein, wird trotzdem (default) ein String eingefügt.

    Aso okay. Darum funktioniert das nicht. Jetzt wird es mir verständlich warum es nicht funktioniert.

    Nein. Da hast du mich falsch verstanden. Das ist mir nicht so wichtig. Es geht um die Anzeige wie viel User von so viel Usern angezeigt wurden.

    Beispiel:

    Page 1: 5 von 18 User

    Page 2: 10 von 18 User

    Page 3: 15 von 18 User

    Page 4: 18 von 18 User.

    Diese Anzeige funktioniert solange man beim löschen keine ganze Page "löscht". Das heißt wenn man auf Page 4 nun alle 3 User löscht kommt man automatisch auf Page 3 weil Page 4 leer ist. Auf Page 3 sind aber nur 15 von 15 User. In der Url steht trotz automatischen Wechsel auf Page 3 noch als Parameter page=4 drin. Somit ist die Anzeige nicht 15 von 15 User sondern 20 von 15 User. Nun wenn ich über die Pagination auf Seite 3 klicke wird wieder alles normal dargestellt.

    Wie erreiche ich es, dass wenn Page 4 leer ist und dann automatisch man auf Page 3 kommt dies auch in der Url beim Parameter angepasst wird.

    Damit meine ich wenn eine Seite leer ist, dass dann in der Url man auf die darunterliegende Seite, in diesem Fall Seite 3, geleitet wird, sodass diese Ungereimtheiten bei der Anzeige x von x User nicht vorkommen.

    Hier ist die Live Demonstration:
    Link: http://stef97.bplaced.net/admin/php/manageUser.php

    Wenn du den User basti1012 auf der Page 2, der Pagination löschst, wird dir die Page 1 Angezeigt, aber in der Url steht immernoch ?page=2 drin.

    basti1012 & Co :

    Wenn es euch was ausmacht, dass ich eure Namen da zum testen erstelle dann sagt es mir bitte.


    Grüße,

    Stef

    Hey,

    ich verstehe es gerade nicht. wie kann den bei limit 5, 3 was gezogen werden ? 5 ist doch größer?

    Dies ist mein Code welcher die Pagination erstellt:

    Ne weiter frage habe ich auch noch.

    Und zwar wenn ich anstatt bindParam, execute() verwende und da den Platzhaltern mitgebe bekomme ich immer eine SQL Error, dass in diesem Prepare-Statement ein Fehler ist, obwohl beide Variablen keine Strings sind.

    Warum ist das so?

    Und bei der x von x Usern Anzeige kam ich bis jetzt nicht weiter.

    Okay.

    Zitat

    Die Verarbeitung von Daten gehört für mich halt nicht in den HTML-Text, aber wie gesagt, rein subjektiv.

    Die Verarbeitung erfolgt ja nicht im HTML. Es wird nur überprüft ob Fehler vorhanden sind und ob die Erfolgsmeldung vorhanden ist. Und wenn ja wird dies ausgegeben.

    Wenn man dies im PHP-Teil machen würde, müsste man im HTML-Teil trotzdem überprüfen ob die Ausgabe vorhanden ist mittels if-else.

    Hey,

    Danke für deine Bewertung unseres Tutorials.

    Arne Drews :

    Zitat

    Ein wenig mehr EVA Einhaltung hätte ich schöner gefunden, aber das handhabt jeder halt wie er es selber am sinnvollsten findet.

    Meiner Ansicht nach ist alles gut getrennt.

    Welche Stellen im Code meinst du ?

    Gruß,

    Stef

    Guten Morgen.

    cottton :

    Ich habe mir nochmal dein Codebeispiel angeschaut und bin es durchgegangen. Währenddessen ist mir au fgefallen, das dein Code einen Fehler bei der DB-Abfrage hat. Wenn ich die DB-Abfrage so erstelle wie du, bekomme ich erst ab Page 2 Ergebnisse. Page 1 ist leer. Ich habe jetzt zuerst das offset und dann das Limit gesetzt und es zeigt nun auf jeder Page alle Ergebnisse an.

    PHP
    $selectUsers = $dbv->prepare("SELECT userId, username, avatar, rang FROM users LIMIT :offset, :start");

    Nun habe ich mir nochmals gedanken gemacht wie ich die Anzeige " Userzahl von Userzahl Usern" dynamisch erstellen kann und kam auf die Idee den $key welchen ich bereits verwende für die Nummerierung der User für dies zu verwenden. Dies funktioniert auch solange man User hinzufügt und löscht bis eine Page leer ist.

    Das ist der Code dazu:

    Beispiel:

    Ich bin auf manageUsers.php?page=3. Habe dort noch 1 User stehen. Somit ist die Anzeige " 11 User von 11 User". Nun wenn ich diesen 1nen User lösche bleibe ich trotzdem in der Url auf manageUsers.php?page=3 und im browser direkt wird mir aber die Page 2 mit deren Werten angezeigt. Somit steht nun bei der Anzeige : "15 User von 10 User". Wenn ich nun über die Pagination Page 2 anklicke wird wieder alles so wie gewollt angezeigt : 10 User von 10 User.

    Frage:

    Wie erreiche ich es, dass wenn eine Page leer ist, automatisch in der Url auf die darunterliegende Page weitergeleitet zu werden, bzw. das sich die Url dann automatisch anpasst?

    Grüße,

    Stef

    Hey,

    Wenn man das ganze mit den Userzahlen dynamisch erstellt dann kann man das so machen. Ist sogar besser.

    Aber wenn ich statisch immer nach jeder Überprüfung um 5 hochzähle bringt das nichts.

    Das Ziel ist, das es dynamisch ist und sich nach jedem User hinzufügen und löschen anpasst.

    Daran scheitere ich in Moment.

    cottton :

    Vielen Dank für deine Antwort und das kleine Tutorial wie man am besten eine Pagination erstellt. Ich werde dieses mir morgen noch genauer anschauen.

    Diese Pagination ist bereits vorhaden.

    Ich lasse zu jeder Seite anzeigen wie viel User nun angeschaut worden sind von der Anzahl der vorhandenen.

    Also z.b. Seite 1 : 5 von 18 User, Seite 2 : 10 von 18 User, Seite 3: 15 von 18 User, Seite 4 18 von 18 User.

    Daran scheitert es weil ich nicht weis wie man das dynamisch erstellt, somit die erste Zahl sich immer anpasst. Die 2 te Zahl habe ich bereits definiert und diese beinhaltet die Anzahl der ganzen User.

    Hoffe , dass du mein Problem jetzt besser nachvollziehen kannst.

    Grüse,

    Stef

    Hey,

    du kannst über CSS mit den Selektoren auf den Button zugreifen.

    Auf Klassen mit dem .Klassenname und auf Ids mit #deineId.

    Beispiele:

    Klasse:

    HTML
    <input type="button" class="button1" value="Beweben" onclick="window.location.href='http://www.playgalaxy.net/bewerben'">
    CSS
    .button1{
        background-color: green;
    }

    Id:

    HTML
    <input type="button" id="button1" value="Beweben" onclick="window.location.href='http://www.playgalaxy.net/bewerben'">
    CSS
    #button1{
        background-color: green;
    }

    Grüße,

    Stef

    Edit:

    Ich habe es jetzt fast lösen können.

    Habe nurnoch ein Punk wo ich nicht hinbekomme.

    Wenn es nur 21 Users gibt wird trotzdem 25 angezeigt. Das ist selbsterklärend weil wenn $useranzeige = 20 ist ist diese Variable ja nicht kleiner als $records und somit wird 20 nochmal mit 5 addiert.

    Wie kann ich es denn machen, dass es individuell zur Useranzahl hochgezählt wird?

    Edit:


    Habe eben als Test auch User gelöscht. Da besteht das gleiche Problem.

    Grüße,

    Stef

    Es dreht sich um diese Beispieltabelle:

    Keine Verfärbungen der Tabellenspalten oder des Tabellenkopfes funktionieren.

    Hey,

    ich habe das komplette Layout von meiner Userverwaltung geändert.

    Ich habe jetzt für jeden User eine eigene Reihe. Pro Seite werden aus der Datenbank nur 5 User gezogen.

    Gibt es mehr als 5 User kann man auf diese über die Pagination zugreifen. Es wird auf jeder Page angezeigt wie viel User von allenUsern nun gezeigt worden sind.

    Da habe ich Schwierigkeiten.

    Habe jetzt bestimmt schon 45 Minuten herumgetestet und nachgedacht.

    Ich habe mir folgenden Programmablauf gedacht:

    Ich erfasse die ganzen Keys von den Paginationseiten mittels count() und die Seite, auf der ich aktuell bin, über GET.

    Nun führe ich eine for-schleife aus indem ich die for schleife so oft neu durchgehe, bis die ganze Anzahl der Keys, von den Paginationseiten, erreicht ist.

    Währenddessen erstelle ich eine Variable welche bei jedem Durchlauf sich um 5 erhöht.

    Somit ist auf jeder Seite folgendes gegeben:

    • Seite 1 = 5
    • Seite 2 = 10
    • Seite 3 = 15
    • usw..

    Und dann überprüfe ich ob die Variable users, welche hochgezählt wird, kleiner als diese Variable ist. Die Variable users wird in einer while-schleife hochgezählt.

    Das ist mein Code:

    Bei var_dump kommt immer die Anzahla aller User raus. Was ich nicht verstehen kann.

    int(1) int(2) int(3) int(4) int(5) int(6) int(7) int(8) int(9) int(10) int(11) int(12) int(13) int(14) int(15) int(16) int(17) int(18) int(19) int(20) int(21)

    Ich weiß grad ehrlich gesagt nicht woran das liegt. Hoffe ihr könnt mir helfen.

    Grüße,

    Stef

    Sailor :

    Zitat

    Hmmm... ich denke, das steht da in der Beschreibung schon drin. Auch wenn oben ein "," angegeben ist, so ist doch der Beschreibungstext eindeutig -(one character only) .... also jedes beliebige Zeichen - auch das ";".

    Ja dies habe ich auch gelesen. Nur ich wusste, als ich diesen Beitrag erstellt habe, nicht, wie man jeder Value eine eigene Spalte zuweist. Und das Semikolon ist für jemanden, der nicht weiß das dieses diese Funktion erfüllt welche man möchte, auch nicht die erste oder zweite Wahl.

    Aber Dank Sempervivium weiß ich das jetzt :)

    Vielen Dank für deine Mühe und Hilfe.

    Sempervivum :

    Vielen Dank für den Tipp mit dem Semikolon. Hat super funktioniert :)

    Hatte bisher noch nichts mit CSV-Eintragungen zu tun.

    Grüße,

    Stef

    Guten Morgen,

    StephanLarge :

    Willkommen im Forum.

    Zitat


    Was ich jetzt suche ist eine Moglichkeit, die übergebenen Werte an die form.php an eine dritte Datei zu übergeben (also an die tatsächliche Anwendung) also beginnend mit

    Du hast bestimmt auf der 1nen Seite das Formular und auf dieser Seite überprüfst du die ganzen Daten. Was man früher gemacht hat ist dem form tag das action attribut geben und darin den Link angeben, welcher aufgerufen werden soll, wenn das Formular abgesendet wurde. Dies brauchst du heutzutage eigentlich nicht mehr. Du kannst das Formular und den PHP-Teil in einer Seite belassen.

    Am Anfang, bevor HTML kommt, erstellst du dann den PHP-Teil. In HTML kommen dann nurnoch die Ausgaben von PHP-Variablen dazu.

    m.scatello :

    Zitat

    Das kannst du dir leichter machen, denn wenn ein Formular gesendet wird, sind alle Felder, egal ob leer oder nicht, gesetzt. Ausnahme bilden dabei Radiobutton und Checkboxen. Deshalb reicht in deinem Fall:


    Code

    1. if(isset($_POST['email']))
    2. {
    3. $email = $_POST['email'];
    4. $anmerkung = $_POST['anmerkung'];
    5. $anrede = $_POST['Anrede'];
    6. }

    Dies stimmt so nicht. Wenn nun ein User nur die E-Mail angibt und den rest nicht. Dann hat man 2 mal eine Warnung oder Notiz mit Undefined Index nachdem Formular absenden.

    In PHP 7 ist das ja ganz einfach zu verhindern:

    PHP
    $email = $_POST['email'] ?? null;

    In PHP 5.* geht die kurzschreibweise so:

    PHP
    $email = isset($_POST['email']) ? $_POST['email'] : null;

    Grüße,

    Stef