Eintragung mit session-id funktioniert nicht.

  • Hallo,
    nach langer Zeit wollte ich mal wieder eine Homepage starten.
    Jetzt hab' ich irgendwie ein Totalcrash in meinem Kopf erlitten, und es klappt nichts mehr.
    Also, wenn man ein Bild hochgeladen hat, bekommt man einen Link. Den link soll man per Formular in die Datenbank schicken. Damit der Server weiß, von wem der link kommt, habe ich noch where id = $_SESSION user_id eingebaut.
    Mein Problem ist aber viel einfacher. Er will den Link einfach nicht eintragen.
    Hier mein Formular:

    Code
    <form action="meinebilder.php">
    Link: 
    <input name="bilder" type="text">
    		<input type="submit" name="submit" value="Absenden" class="button">
    		</form>

    Und hier die meinebilder.php

    Die Spalte in der tabelle benutzerdaten heißt bilder, das ist richtig.

    Der fehler lautet wie folgt:

    Zitat

    Notice: Undefined index: bilder in C:\Programme\xampp\htdocs\bild\meinebilder.php on line 7

    Line 7. ist halt das hier:

    Code
    $url = $_POST["bilder"];

    Ich hoffe ihr koennt mir da weiterhelfen..


    Falls ich irgendein dummen Fehler gemacht hab', verzeiht mir bitte! :)

    Vielen dank schonmal, sibbi


    EDIT://
    Evlt sollte ich noch die URL die beim Fehler angezeigt wird mitschicken, die kommt mir naemlich auch spanisch vor:

    Zitat
  • mach oben mal error_reporting(0)

    oder einfach nur wie folgt

    und die Zeile hier weglassen

    Code
    $url = $_POST["bilder"];
  • Als info nebenbei.

    Du musst nicht für jeden Befehl <? ?> auf und wieder zumachen.
    Demnach würde deine «meinebilder.php» so aussehen ->

    Ich habe noch einige andere Änderungen vorgenommen.

  • Danke @ gast, und auch Danke @ :RMB:

    Das mit den < > weiß ich, aber meistens bau ich noch HTML-tags darein, und dann ist es einfacher anstatt die in's echo zu schreiben. :)
    Was mir ueber nacht eingefallen ist: Ich schreibe ja die Links in eine exestierende Spalte, muesste ich die spalte von dem User dann nicht eigentlich Updaten? Oder schreibt er es dann trotzdem da rein?

    Kleines beispiel: Es gibt 1 User bis jetzt, den "Admin".
    Der Admin hat bis jetzt noch kein Bild eingetragen. Also ist die Spalte `bilder` auf NULL. Da will er jetzt aber verschiedene Links eintragen, die auch immer Fortlaufend sind. Also nicht das er den 1. Link immer ueberschreibt, wenn er einen 2. Einfuegt.

    Ich hoffe ihr versteht mich.. ;)

    MFG


    EDIT://
    :RMB: ich habe mal dein Code uebernommen. (war es absicht das vor .user_id. kein $ kommt? Ich hab' es mal ergaezt.)
    Auf jedenfall kommt der gleiche Fehler.. :-\

  • wenn du das so willst und es mal mehr als 1 user geben wird dann mach eine tabelle `user` und eine tabelle `links`. in der `links` tabelle hast du dann eine spalte `user_nr`. in dieser spalte kommt die jeweilige user_id rein von der tabelle `user`.

    beispiel


    mehr dazu auf wikipedia: referenzielle integrität

    dass sich die links nicht überschreiben musst du logischerweise INSERT nehmen, denn INSERT fügt einen neuen datensatz ein, UPDATE ergänzt einen bestehenden.

    alles klar?

  • Oh, vielen vielen dank @ Phore.
    Also speicher ich bei user_nr einfach die user-id (die session-id) mit rein, und les' sie dann auch mit der Userid wieder aus, oder?
    Koennte ich nicht auch den User-namen einspeichern? Den Gibts ja auch nur 1.
    Ich versuche es ersteinmal, wenn ich noch eine Frage hab', hoffe ich hier ein offenes Ohr zu finden! :)

    Vielen vielen dank!

  • ja du kannst da dann über die session_id speichern und auslesen.
    beim auslesen wirst du zudem sql joins anschauen müssen.

    wenn es den usernamen wirklich nur 1mal geben wird kannst du das theoretisch schon, würde aber trotzdem alles über eine id machen. evtl. machst du später was über GET, hast umlaute in den benutzernamen, hast mehrere tabellen usw. - dann wirds unpraktisch.
    gewöhn dich an die id's wird immer so sein :roll:

    so long

  • Okay, mach ich es mit id's! :)

    Also ich glaub' ich bin einfach bloed. Was mache ich falsch?
    Ich kann einach nichts mehr in die Datenbank eintragen, er sagt immer:

    Zitat


    Notice: Undefined index: user in C:\Programme\xampp\htdocs\bild\meinebilder.php on line 19

    Notice: Undefined index: link in C:\Programme\xampp\htdocs\bild\meinebilder.php on line 20


    line 19/20

    Code
    '{$_POST['user']}'
    '{$_POST['link']}'

    Damit ich das wieder richtig verstehe, man hat ein Formular, bei name="name" muss der name stehn, wie er auch in der datenbank steht, richtig?
    Also z.b. name="link". Das schickt man dann eine Datei. Unter VALUES
    stehen dann die Werte, also z.b.

    Code
    '{$_POST['link']}'


    So habe ich das, aber er sagt wieder den oben genannten Fehler (beim Versuch in die Tabelle LINKS einzutragen. Hier mal die komplette Datei


    ich find' den verflixten Fehler einfach nicht.,. :-\

    Bei dem Code traegt er einfach nur das Datum ein. Mehr nicht.

  • Oh oh oh, das ist Peinlich.. :-\
    Ich hab' im Formular

    Zitat

    method="post"

    vergessen, folglich hat er's ueber get gemacht, aber ich hab' die wieder mit POST ausgelesen. Dann kann es ja auch nicht klappen..
    Tschuldigung an alle, und vielen dank an Phore, fuer den guten tip! :)

  • So weit - So gut.
    Gibt es eine einfache Methode wie man die Bilder in Kategorien packen kann?
    Kennt jemand eine Anleitung dazu?
    Ich habe jetzt in die Tabelle wo auch die Links gespeichert werden einfach cat, cat1 und ca2 angelegt, das soll fuer 3 kategorien stehn. Da wo man acuh den Link eintraegt, hab' ich noch ein Select-feld gemach,t wo man die 3 kategorien auswaehlen kann. Jedoch klappt das irgenwdie nicht. Also es geht einfach GAR NICHTS! :)
    Ist der ansatz schon falsch?

  • für kategorien machst du am besten nochmal eine tabelle. eine spalte mit kategorie_bezeichnung und eine spalte mit kategorie_id, dann in der bilder tabelle wieder eine kategorie_nr.

    fürs select dann einfach die kategorie spalte auslesen und als option value die kategorie_id nehmen.


    da wären wir also wieder bei den id's ;)

  • Oh - hoert sich kompliziert an.. :)
    Aber dann muesste ich ja mit einem Insertbefehl in 2 Tabellen schreiben?!
    Also, ich schreib' den Link in die Tabelle fuer die Links von den Bildern. Das bleibt ja alles so wie gehabt. In 1. zug muss ich dann auch noch die Kategorie mit reinhauen?!
    Das verstehe ich nicht.. :(

  • nein, die kategorien sind schon in der tabelle erfasst.
    in der bildertabelle speicherst du nur noch die kategorie_id
    ähnlich wie auf der tabelle die ich schon oben gepostet habe..

    Code
    ---------------------   |   ---------------------   |   ---------------------------------
    Tabelle: user           |   Tabelle: kategorie      |   Tabelle: links
    ---------------------   |   ---------------------   |   ---------------------------------
    user_nr | username      |   cat_id  | cat_name      |   user_nr | cat_nr | bildirgendwas
    ---------------------   |   ---------------------   |   ---------------------------------
    1         admin         |   1          freunde      |   1            1     blabla.jpg
    2         hans          |   2          arbeit       |   1            1     soso_1.jpg
                            |                           |   1            1     bilder_8.jpg
                            |                           |   2            1     bildbild.jpg
                            |                           |   2            2     oh_la_la.jpg

    beim erfassen von bilder/links dann halt einfach noch ein select fürs dropdown:

    ok?

  • Aaargh. :)
    Also, ich schreibe jetzt, waerend ich es ausprobiere. Dann kann ich Fehler die mir unterlaufen sofort melden.
    Ich hab jetzt eine weitere tabelle namens Kategorie (cat_id, cat_name) angelegt, die tabelle Links hab' ich um die spalte cat_nr erweitert.
    Jetzt weiß ich schon irgendwie nicht mehr weiter. ;)
    Ich verstehe das Konzept dahinter irgendwie nicht.
    Ich trag jetzt ganz normal den Link fuer das Bild wieder ein, und bevor ich das eintrage, will ich das bild in eine Kategorie speichern. Es sollen erstmal 3 Kategorien exestieren.
    Ergo ich komm bei dem "PHP-quatsch" nicht weiter. :)

  • Aloa, schonmal jetzt sorry fuer meine Bloedheit! :)
    Mein Formular sieht jetzt so aus:


    Jedoch sind die select-teile leer.
    Meine Tabelle Kategorie sieht so aus:
    cat_id
    cat1
    cat2
    cat3

    Oder meintest du das gar nicht mit "erfass mal deine drei kategorien in der tabelle kategorie (also 3 datensätze). " ??

    MFG & Vielen dank fuer deine Hilfe! :)

    EDIT://
    Ah, habs verstanden wie du das mit dem eralls mal deine drei kategorien[...] meintest.
    In cat_name einfach die 3 Kategorienamen einfuegen, ja?
    Jetzt zeigt er auch die 3 Kategorien im Select-teil an, jedoch speichert er die noch nicht wirklich mit..

  • ja - beim edit hast du erfasst was ich gemeint habe.
    naja du musst halt dein INSERT code schon anpassen, zeig den mal.

    (übrigens - die session_id brauchst du nicht in ein hidden feld zu speichern, kannst es auch später direkt einfügen.. )

  • Aehm, also ich hab den insert noch nicht wirklich veraendert, weil ich einfach nicht versteh, WIE genau ich das da veraendern muss.
    Im moment sieht es noch so aus:


    Ich hab' mal den quatsch wieder rausgemacht. Mfg

  • der aufbau ist so

    SQL
    INSERT INTO `tabelle`
    ( `spalten`, `spalten`)
    VALUES ('inhalt', 'inhalt');

    also bei dir wäre es dann etwa so:

    Code
    $sql= "INSERT INTO `links`
    (`user_nr`, `link`, `kategorie`, `datum`)
    VALUES (".$_SESSION['user_id'].", '{$_POST['link']}', '{$_POST['kategorie']}', NOW())";

    evtl. die POST werte vorher in variablen schreiben und stripslashes(), htmlentities() &co. machen.
    (siehe zb. hier https://www.forum-hilfe.de/viewtopic.php?t=20713)

    so long