E-Card

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

  • E-Card

    Hey ich stehe jetzt vor einen Problem:

    Ich speichere die Daten der E-Card in der Datenbank. Nun will ich einen Link in einer eMail erstellen der folgendes Aussehen hat:
    <a href='http://www.meine.domain.to/e-card/e-card.user.php?card_id=$card_id'>

    Die Datei e-card.user.php ist die Ausgabedatei, an diese Ausgabedatei müssen nun folgende Wert übergeben werden: card_id

    card_id ist aber die Datensatz ID die ich per auto_increment erstelle. Wie kann ich nach einem insert nun die Datensatz ID ermitteln? Um sie im Link einzubauen.

    Mein Insert sieht so aus:
    $sqlab = "insert ecard (ename, email, betreff, bild, text, aname, amail, gruss, datum) values
    ('$ename', '$email', '$betreff', '$bild', '$text', '$aname', '$amail', '$gruss', '$datum')";
    *winks*
    Gilbert
    ------------------------------------------------
    Hilfe für eine Vielzahl von Problemen!!!
    http://www.1st-rootserver.de/

  • #2
    Gilt für MySQL: mysql_insert_id() liefert die Kennung (ID), die bei der letzten INSERT-Operation für eine automatisch inkrementiertes Feld (AUTO_INCREMENTED) vergeben wurde.

    Siehe:
    http://www.php.net/manual/de/functio...-insert-id.php

    Kommentar


    • #3
      und wie (Newbie) wende ich das jetzt an, im Bezug auf meinen Link?
      *winks*
      Gilbert
      ------------------------------------------------
      Hilfe für eine Vielzahl von Problemen!!!
      http://www.1st-rootserver.de/

      Kommentar


      • #4
        Unmittelbar nach dem Insert-Statement:
        $card_id = mysql_insert_id();

        Danach den String für das Mail weiterbauen und Mail senden:
        ...
        <a href='http://www.meine.domain.to/e-card/e-card.user.php?card_id=$card_id'>
        ...

        Kommentar


        • #5
          Aber

          $card_id = mysql_insert_id();

          schmeißt mir immer nur 0 aus.

          Was ist falsch?

          hier der Code:
          Code:
          $sqlab = "insert ecard (ename, email, betreff, bild, text, art, farbe, aname, amail, gruss, datum) values 
          ('$ename', '$email', '$betreff', '$bild', '$text', '$art', '$farbe', '$aname', '$amail', '$gruss', '$datum')";
          
          $card_id = mysql_insert_id();
          Die Spalte card_id ist tinyint(4) auto_increment und PRIMARY.
          *winks*
          Gilbert
          ------------------------------------------------
          Hilfe für eine Vielzahl von Problemen!!!
          http://www.1st-rootserver.de/

          Kommentar


          • #6
            Macht es nicht mehr Sinn, die ID selbst zu generieren?

            Ich meine, sonst kann doch jeder der eine Card mit ID=1001 bekommt einfach ID=1000 angeben und schon ist gesichert, dass er die Card eines Fremden lesen kann. Nicht so schön.

            Wäre doch ne MD5 oder CRYPT besser.

            Kommentar


            • #7
              Aber wie?

              Bin noch nicht so frim im PHP.

              Editiert:

              Habe es anders gelöst!

              Ich benutze jetzt Variablen die ich übergeben bekomme und die Eindeutig sind

              Unter anderen habe ich im Script eine Date Funktion mit d.m.Y.H.i.s

              Das ist eindeutig genug.

              /Editiert:

              [Editiert von Wotan am 02-01-2002 um 23:37]
              *winks*
              Gilbert
              ------------------------------------------------
              Hilfe für eine Vielzahl von Problemen!!!
              http://www.1st-rootserver.de/

              Kommentar


              • #8
                Das ist super Easy. Wahrscheinlich einfacher als deine Methode. Ich dachte schon du hättest einen Grund, dass du auto_increment benutzt.

                Ich hab mich mit MD5 noch letztens beschäfftigt. Schreibe dir in fünf Minuten noch einen Code hierhin, damit du die sache mal genauer ansehen kannst.

                Kommentar


                • #9
                  Hab jetzt aber noch was anderes:

                  Ich habe in der Datenabnk eine Spalte die da heißt:

                  lesen mit dem Standartwert = 0

                  nun will ich wenn die e-Card aufgerufen wird, kontrolieren ob dieser wert immer noch 0 oder schon 1 ist. Wenn er noch 0 ist, soll der Absender, falls amail!=NULL ist eine eMail erhalt das der Empfänger die e-Card abgeholt hat.
                  *winks*
                  Gilbert
                  ------------------------------------------------
                  Hilfe für eine Vielzahl von Problemen!!!
                  http://www.1st-rootserver.de/

                  Kommentar


                  • #10
                    Und bitte:

                    Code:
                    <?php
                    //Wenn du einen vorgegebenen Wert benutzen willst (z.B. E-Mail Adresse)
                    $wert = "demowert";
                    
                    //Hier kommen die Funktionen MD5 und CRYPT
                    echo "<big><big><b>ID erstellen:</b></big></big><br><br><br>";
                    echo "<b>Hier mit MD5():</b><hr>";
                    echo md5($wert);
                    echo "<br><br><br><br>";
                    echo "<b>Und hier kommt CRYPT():</b><hr>";
                    echo crypt($wert);
                    echo "<br><br><br><br>";
                    echo "Bei der Funktion MD5 kommt bei einem vorgegebenen Wert immer 
                    das selbe raus.Bei Crypt hingegen werden in die verschlüssellung 
                    zusätzlich die Millisekunden mit einbezogen. Bei jedem Aufruf wird 
                    eine neue ID generiert.";
                    
                    ?>
                    Was passiert, steht ja drinne. Hoffe kommst damit zurecht. Ist nur zur Demo. In dein Script musst du später folgendes schreiben:

                    Code:
                    $id = md5(); // oder mit Wert: md5($wert)
                    
                    // ODER DU NIMMST DIE ANDERE:
                    
                    $id = crypt(); // oder mit Wert: crypt($wert)
                    Such dir was aus!

                    Kommentar


                    • #11
                      Zum neuen Prob:

                      Das ganz Easy. Du ließt die Sache einfach aus der DB aus und machst dann ne if abfrage.

                      IF 1 dann mailaktion und EXIT, sonst den rest.

                      hab dein deutsch aber nicht ganz verstanden.

                      Kommentar


                      • #12
                        schuldigung bin nur mitlerweile über 24 Stunden am Progen.

                        Nochmal in Deutsch
                        nun will ich wenn die e-Card aufgerufen wird vom Empfänger, kontrolieren ob der Empfänger die e-Card schon gelesen hat lesen=1 oder ob das der erste Aufruf ist lesen=0. Wenn er noch 0 ist, soll der Absender, falls er eine eMail-Adresse angebene hat, das der Empfänger die e-Card abgeholt hat bekommen.
                        *winks*
                        Gilbert
                        ------------------------------------------------
                        Hilfe für eine Vielzahl von Problemen!!!
                        http://www.1st-rootserver.de/

                        Kommentar


                        • #13
                          Das mit der Funktion "mysql_insert_id()" muß funktionieren, es ist Basisfunktionalität des PHP/MySQL. Vielleicht hast Du woanders einen Fehler.
                          Wir überhaupt ein Record in die DB geschrieben, bekommst Du vielleicht beim Insert einen Error, den Du nicht abhandelst?

                          Sollte Dein Insert-Statement nicht wie folgt lauten:
                          $sqltab = "insert INTO ecard ...."?
                          (INTO vergessen?)

                          So sollte es funzen:

                          Code:
                          $MY_DBSRV = "localhost";
                          $MY_DBUID = "userid";
                          $MY_DBPWD = "password";
                          $MY_DBNAM = "database";
                          
                          $MY_DBLNK = mysql_connect("$MY_DBSRV", "$MY_DBUID", "$MY_DBPWD");
                          
                          $result = mysql_db_query("$MY_DBNAM",
                            	"INSERT INTO ecard (
                           		...,
                           	       	...
                          		)
                             	VALUES (
                           		...,
                           		...
                          		)",
                           	$MY_DBLNK
                           	);
                          
                          if (mysql_errno() != 0) {
                          	print "Datenbank-Error: ".
                          		mysql_errno().
                          		" / ".
                          		mysql_error();
                          }
                          
                          $card_id = mysql_insert_id($MY_DBLNK);

                          Kommentar


                          • #14
                            Also er schreibt mir das Resultat in die Datenbank, ob mit oder ohne Into. Ich bekomme aber als ID nur 0 gemeldet. Habe das aber schon anders gelöst.

                            Brauch jetzt nur was für mein zweite Anliegen:

                            nun will ich wenn die e-Card aufgerufen wird vom Empfänger, kontrolieren ob der Empfänger die e-Card schon gelesen hat lesen=1 oder ob das der erste Aufruf ist lesen=0. Wenn er noch 0 ist, soll der Absender, falls er eine eMail-Adresse angebene hat, das der Empfänger die e-Card abgeholt hat bekommen.
                            *winks*
                            Gilbert
                            ------------------------------------------------
                            Hilfe für eine Vielzahl von Problemen!!!
                            http://www.1st-rootserver.de/

                            Kommentar


                            • #15
                              Du gehst hin, selektest bei der ID die E-Mail und den Status

                              Und scheckst dann, ob status = 0

                              wenn ja, dann die mail und status auf 1

                              else

                              echo " DU hast die karte doch schon";

                              // Aber auch nur wenn du das willst.

                              Kommentar

                              Lädt...
                              X