MYSQL Datenbank ausgabe

  • Hallo ich habe ein Problem. Ich habe eine Tabelle mir gemacht, ganz einfache Ausgabe.

    Ich habe ein Forumlar wo ich 4 Beispiele auswählen kann:

    Hund
    Katze
    Tiger
    Löwe

    Das Formular wirft wie 1 Gästebuch die Daten aus ( untereinander ) Wählt man Hund aus kommt im

    1. Beitrag Hund

    Füllt man das Formular nochmal aus und nimmt jetzt Katze kommt im

    2. Beitrag Hund und Katze raus

    Füllt man das Formular erneut aus und nimmt wieder Hund kommt im

    3. Beitrag Hund, Katze und Hund raus.


    ABer eigentlich wollte ich das er mir pro Formular immer nur einmal etwas auspuckt, das halt was ich ausgewählt habe.

    Er holt aus Tabelle 1 und 2 für Beitrag 3 alles raus.

    Das sieht dann wie folgt aus
    -> Link zum Bild

    Zu meinem PHP Absatz

    PHP
    $m1                     = $row->treatment_mode1;
            $m2                     = $row->treatment_mode2;
            $m3                     = $row->treatment_mode3;
            $m4                     = $row->treatment_mode4;
            $treatment_notices    = $row->treatment_notices;
            $treatment_symbef    = $row->treatment_symbef;
            $treatment_symaft    = $row->treatment_symaft;
            if($m1 == 1){$treatment_mode .= "selbst<br />";} if($m2 == 1){$treatment_mode .= "kurz<br />";} if($m3 == 1){$treatment_mode .= "ganzkörper<br />";} if($m4 == 1){$treatment_mode .= "punktuelle<br />";}


    Muss ich bei ==1 immer eine andere Zahl angeben oder wieso funktioniert das nicht?

    In der Datenbank tut er alles richtig eintragen, wenn ich doch in der obersten Tabelle eine andere Zahl angebe funktioniert es außer die erste Tabelle, jedoch habe ich keine Lust immer in der Datenbank zu suchen, hoffe mir kann jemand Helfen?

  • Du kannst das beim eintragen steuern. Wenn das ausgewählte schon in der db ist, einfach nix tun. Dass führt dann simpel zum verhindrn von Hund, Katze und Hund

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Ja aber was ist wenn der Hund schon eingetragen ist und ich den nicht möchte. Das ist ja mein Problem. Wie bekomme ich den Hund wieder raus? Ich brauche so etwas wie atomar / keine Wiederholung

  • Dann musste den eben entfernen, siehe explode() /implode() und unset()

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Entfernen ist leicht gesagt, wo finde ich den die explode() /implode() und unset() in der Datenbank - Tabelle oder Feld ? Den in meinen Attributen stehen nur 4 Sachen

    Edit: So wie ich das mitbekomme muss ich ein unset() einfügen damit es im nächsten Beitrag gelöscht wird? In der PHP Datei.


    Ich glaube du hast mich falsch verstanden. Ich brauche keinen Zeilenbruch oder Ähnliches ich möchte das was ausgegeben wird nur das Ausgegeben wird was ich Ankreuze zur Zeit gibt er mir alle Tabellen immer wieder aus, die einträge die schon in der Datenbank vorhanden sind. Die trägt er erneut ein ( Wiederholung )

    2 Mal editiert, zuletzt von siriussmarty (10. August 2010 um 15:30)

  • Es stimmt irgendetwas mit meinem PHP Code nicht.

    Das ist der Abschnitt


    PHP
    $content .= "<td>$treatment_mode</td>";


    Hier trägt er es ein auch wenn $m1 == 0 ist, wo liegt mein Fehler?


    Hier ein Link zur PHP Datei
    http://siriussmarty.si.funpic.de/code/kunden.zip

    Hoffe es kann mir da jemand weiterhelfen :/ Vielen Dank im voraus

  • Nein, ich denke nicht dass ich dich falsch verstanen haben. Du trägst eingach das tier ein, wenn es noch nicht drin steht. Wenn du es jetzt löschen willst, egal wie du das dem user ermöglichst, liest du das feld der datenbank aus, teilst den string mit PHP explode() auf, nimmst das tier per unset() raus, fügst das Array per implode() wieder zusammen und trägst den string per SQL UPDATE wieder ein. Ferddisch.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • Immer wieder sehr hilfreich:

    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.

  • Hallo,
    wie ich vorgehe um Fehler zu finden ist meine eigene Sache, anstatt Usern zu Helfen wird hier Angezeigt wie ich Richtig Debugge?

    Sinnloser Kommentar aber Danke für das Pushen meines Beitrages.

    @ Tobse
    Danke erst einmal für deine Hilfe, aber von was du da jetzt Redest verstehe ich nur einzelne Wörter, das hängt aber nicht an dir. Mein Problem sind die Kenntnisse mit MySQL.

    Selbst weis ich nicht, wie ich diese Dinger in meiner PHP-Datei Unterkriegen soll. Ich habe schon mehreres Versucht, jedoch zeigt er mir einen Syntax-Fehler immer erneut an. So das ich etwas falsch erstelle und falsch verstehe.

    Probiert und gemacht habe ich fast die ganze Nacht. So das ich erneut um Rat fragen muss.Es wäre ja viel zu einfach für mich mal wieder gewesen :D

    explode(), unset(), implode()

    Explode bedeutet: Keine Ahnung
    unset bedeutet: Nimmt es raus
    implode: fügt es wieder ein

    Was ein String ist gehe ich dann erstemal Googlen, damit ich auch einen Zusammenhang erahnen kann.

    Eventuell kannst du mir da weiterhelfen bzw Tipps zum Eintragen der 3 Dinge geben.

    Schonmal super Netten Dank an dich für deine Hilfe und Ausdauer

  • String:

    Code
    Das-ist-ein-String.

    Der hat hässliche "-" als Trennzeichen zwischen den Wörtern. Wenn Du nun an die einzelnen Wörter heran willst, dann brauchst Du explode(). explode() trennt den String an dem Zeichen, welches Du angibst. Also wird durch:

    Code
    $ausgabe = explode($string,"-");

    ein Array, welches wiederum die einzelnen Wörter beinhaltet:

    Code
    array("Das","ist","ein","String");

    Soweit klar? implode() dient dann nur dazu mehrere Strings zusammenzusetzen.

    Aus meiner Sicht musst Du lediglich unset() nutzen um die Variable $treatment_mode zurück zu setzen. Vor dem ersten if() in dem Du $treatment_mode erweiterst, setzt Du einfach

    Code
    unset($treatment_mode);

    ein.

  • wie ich vorgehe um Fehler zu finden ist meine eigene Sache, anstatt Usern zu Helfen wird hier Angezeigt wie ich Richtig Debugge?

    Sinnloser Kommentar aber Danke für das Pushen meines Beitrages.


    Hast du einen an der Murmel? Ich sehe in deinem Script nicht eine Debug-Ausgabe! Wenn etwas sinnlos ist, dann ist das wohl dein Kommentar!!! Was hast du denn bisher versucht, dieses Problem zu beseitigen? Lass' mich raten: außer hier zu posten nicht viel!

  • Hallo threadi,
    das war die Lösung.
    Ich habe das unset nicht benutzt andauern nur implode und explode da mir unset nicht seriöse erschien. Habe auch weitere Maßnahmen in der Datenbank vorgenommen, da ich dachte es würde daran liegen. Aber das es so einfach ist nur ein kleines Bisschen den Code Hinzuzufügen. Echt Hammer. Ich danke euch beiden sehr für die Hilfestellungen und Erklärungen ich bin jetzt 1 Trick schlauer und falls User die gleiche Frage haben werde ich Sie sicherlich beantworten können.

    @ Bandit
    Trotzdem Danke für dein Kommentar.

    P.s Sitze seit gestern halb 1 an der Sache da ich das Fertigstellen muss. Sprich werde ich mich dann in Ruhe mal Hinlegen. Die Datenbank spuckt jetzt alles Korrekt aus. Hätte nur eine Frage.

    Er macht Tabellen

    Datum | Tiername | Kunde | Notiz | Aufgabe
    Datum | Tiername | Kunde | Notiz | Aufgabe
    Datum | Tiername | Kunde | Notiz | Aufgabe
    Datum | Tiername | Kunde | Notiz | Aufgabe

    Und dann steht das halt unter einander , wie bekomme ich das hin das der letzte eintrag in der Datenbank als erstes Angezeigt wird.

    Ja dies habe ich auch schon versucht mit verschiedenen Varianten, an den PHP code habe ich mich nicht getraut habe bissel versucht in der Datenbank zu basteln.


    EDIT // Hat das vielleicht etwas mit dem Primärschlüssel zutun?

    habe mal folgenden Code eingegeben in der PHP Datei

    PHP
    <?php 
    
    
    function datum($datum) { 
      $datum = explode("-", $datum);     
      echo $datum[2].".".$datum[1].".".$datum[0]; 
    } 
    
    
    ?>

    Er zeigt keinen Sytaxfehler an, jedoch ist die Seite dann Down.

    2 Mal editiert, zuletzt von synaptic (11. August 2010 um 09:53) aus folgendem Grund: beiträge zusammenführt! selbstzitat entfernt! Vermeide bitte Doppelposts und nutz die editfunktion

  • Vielen Dank für den Link, hat mir mit dem Gedächnis geholfen, jedoch zeigt das Sortieren keine Wirkung

    Das mit SELECT * FROM möchte nicht so wirklich hinhauen.

    Meine Tabelle: beeg_treatments
    mein Feld ( Was ich sortieren möchte :( treatment_date

    Folgenden Code habe ich eingefügt

    PHP
    $date = "SELECT * FROM beeg_treatment WHERE treatment_date >= '$datum' ORDER BY treatment_date";

    Er zeigt keine Fehler an aber er sortiert noch nicht. Habe ich etwas vergessen oder etwas Unerwünschtest dazu getippt?

  • Ich hoffes auch ist es aber nicht :D "varchar(15)" Kann ich den einfach Umstellen?

    Kann es aber auch nicht ändern, folgender Fehler ="#1283 - Column 'treatment_date' cannot be part of FULLTEXT index"

    Einmal editiert, zuletzt von siriussmarty (11. August 2010 um 11:17)

  • Nee, nee, nee, wie kommt man auf das schmale Brett, ein Datum als varchar zu speichern? Das ist so ziemlich (sorry) das dämlichste Format. Entweder einen Timestamp verwenden oder aber die Datentypen date oder date_time. Wofür gibt es diese Typen wohl?

    Du könntest dir ein Script basteln, dass aus deinem Text ein MySQL-Datum zusammenbaut und in eine neue Spalte der Tabelle einfügt. Von varchar solltest du auf jeden Fall wegkommen!

  • Hallo,
    ich habe mir das nicht ausgesucht ... Das Backend wurde von einer Werbeagentur Konfiguriert. Dafür kann ich nix, deswegen brauche ich ja Hilfe :D

    Also auf DATETIME habe ich es umgestellt.
    Nur zeigt er dann gar kein Datum mehr an

  • Wenn in dem Varchar-Feld das Datum im Format YYYY-MM-DD steht, kannst du den Feldtyp einfach in phpmyadmin auf DATE umstellen, die Daten bleiben erhalten.

    Da du scheinbar noch Anfänger bist würde ich dir raten, die Debug-Anleitung von Bandit nochmal genau anzuschauen und in Zukunft zu berücksichtigen, auch wenn man als Anfänger vielleicht noch nicht den ganzen Nutzen erschließen kann (ging mir früher mal nicht anders). Das ist wirklich ein sehr guter Weg um Fehler zu finden. Wenn man die Schritte beherzigt kann man fast alle Fehler selber beseitigen

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Du kannst doch nicht einfach die Tabellenspalte auf Datetime umstellen!!!! Jetzt hast du dir vermutlich das Datum in der DB zerdroschen! Ich hoffe mal, du hast ein Backup!?!?