Ankündigung

Einklappen
Keine Ankündigung bisher.

Spalte in einer Tabelle anlegen

Einklappen

Neue Werbung 2019

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

  • Spalte in einer Tabelle anlegen

    Hallo,

    möchte gerne eine Variable/String übernehmen.
    Was ist hier falsch?

    Code:
        $sql   = "ALTER TABLE tbl_info_point ADD ' $email ' VARCHAR(30)";
                $link->query($sql);
        }

  • #2
    Was zum Henker hast du hier vor? Eine Spaltenname mit einer E-Mail-Adresse? Also z.b. example@example.com?

    Kommentar


    • #3
      Zitat von blackfire Beitrag anzeigen
      Was ist hier falsch?
      Dein Tabellendesign. Werte gehören nicht in Spaltennamen.

      Kommentar


      • #4
        Zitat von jonas3344 Beitrag anzeigen
        Was zum Henker hast du hier vor? Eine Spaltenname mit einer E-Mail-Adresse? Also z.b. example@example.com?
        Wollte was testen...

        Brauche eine Art Lesebestätigung (ca. 20 User) für jeden Datensatz in der Tabelle.

        Kommentar


        • #5
          Beschäftige Dich mit Normalisierung und Datenbankdesign.

          Tabelle lesebestaetigung mit userid und datensatzid. Dort kommt ein Eintrag rein wenn der User einen Datensatz angeschaut hat.

          Kommentar


          • #6
            Zitat von jonas3344 Beitrag anzeigen
            Beschäftige Dich mit Normalisierung und Datenbankdesign.

            Tabelle lesebestaetigung mit userid und datensatzid. Dort kommt ein Eintrag rein wenn der User einen Datensatz angeschaut hat.
            also eine etxra Tabelle, dass sollte nicht das Problem sein!

            wie mache ich das mit meiner Abfrage?

            Vorab (SELECT *) werde noch die Spaltennamen eintragen!! bin noch in der Testphase!

            PHP-Code:
            $daten = array();
            $sql "SELECT * FROM tbl_info_point ORDER BY ID DESC";
            if (
            $erg $link->query($sql)) {
                 if (
            $erg->num_rows) {
                    
            $ds_gesamt $erg->num_rows;
                    
            $erg->free();
                }
                if (
            $erg $link->query($sql)) {
                    while (
            $datensatz $erg->fetch_object()) {
                        
            $daten[] = $datensatz;
                    }
                }

            PHP-Code:
            <table>
             <tbody>
              <tr>
               <?php
                
            if (count($daten)>0)  
                foreach (
            $daten AS $inhalt) {
                
            ?>
                <td><a><?php echo $inhalt->id?></a></td>
              </tr>
                <?php
                
            }
                
            ?>
            </tbody>    
            </table>

            Kommentar


            • #7
              Stichwort => Joins

              Z.b. https://www.mysqltutorial.org/mysql-join/

              Kommentar


              • #8
                du bzw. dein Script sollte zum Zeitpunkt der Abfrage die ID der Nachricht kennen - wenn du wissen willst, welche User die schon gelesen haben ..
                PHP-Code:
                $sql "SELECT * FROM tbl_info_point WHERE message_ID=? ORDER BY ID DESC";
                $statement $dblink->prepare($sql);
                $statement->execute(array($message_id));
                $result=$statement->fetchAll();
                .... 
                "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

                Kommentar


                • #9
                  Zitat von blackfire Beitrag anzeigen
                  wie mache ich das mit meiner Abfrage?
                  Zeige dazu bitte mal deine DB Struktur, wenn du Hilfe zum DB Design brauchst.

                  Zitat von blackfire Beitrag anzeigen
                  Vorab (SELECT *) werde noch die Spaltennamen eintragen!! bin noch in der Testphase!
                  Das hilft hier niemandem, denn wie sollen wir helfen wenn wir nicht wissen, welche Spalten du ausgibst. Also immer, auch für Testzwecke, hier im Forum alle Spalten angeben. Was du zu Hause für dich machst ist uns egal, aber hier im Forum sind wir eben keine Hellseher und können nicht wie du einfach mal in die DB wechseln um nachzusehen.

                  tbl_info_point
                  Warum heisst deine Tabelle denn nicht einfach infopoint, du machst es dir nur unnötig schwer.

                  ORDER BY ID DESC
                  Warum ist ID hier gross geschrieben?
                  Bleibe einheitlich, das vermeidet Fehler. Wenn du mit mysql als DBMS arbeitest, solltest du Spaltennamen(und auch Tabellennamen) immer in `Backticks` schreiben, das steht schon so als Empfehlung im Handbuch von Mysql.

                  Kommentar


                  • #10
                    Zitat von eagle275 Beitrag anzeigen
                    du bzw. dein Script sollte zum Zeitpunkt der Abfrage die ID der Nachricht kennen - wenn du wissen willst, welche User die schon gelesen haben ..
                    PHP-Code:
                    $sql "SELECT * FROM tbl_info_point WHERE message_ID=? ORDER BY ID DESC";
                    $statement $dblink->prepare($sql);
                    $statement->execute(array($message_id));
                    $result=$statement->fetchAll();
                    .... 
                    Hallo,

                    habe die Information "gelesen" in einer anderen Tabelle gespeichert "id" und "username"! (username durch login)

                    HTML-Code:
                    <td width=70><a href="info_point.php?read=<?php echo $inhalt->id; ?>">gelesen</a></td>
                    Code:
                     if (isset($_GET['read'])) {
                      $id = $_GET['read'];
                      if ($id > 0)
                            {    
                           $timestamp = date('d-m-Y H:i:s');
                           $query = "INSERT INTO tbl_debug(email,ip,timestamp,button,webseite,pc,funktion,meldung,color)VALUES( '$username','$ip','$timestamp','$id','InfoPoint','$pc','OnClick','$info  @ [Datensatz gelesen]', '#ba55d3')";
                           $link->query($query);
                     }
                    }
                    jetzt soll der link "gelesen" gesperrt werden, da der User die Information gelesen hat.

                    HTML-Code:
                    <td width=70><a href="info_point.php?read=<?php echo $inhalt->id; ?>" class="<?php if ($inhalt->id !== "????????" && $username == "?????????" ) { ?> disabled <?php } ?>">>gelesen</a></td>

                    wie mache ich das? brauche aus der Tabelle 2 tbl_debug die Variable Email und Button

                    Kommentar


                    • #11
                      HTML-Code:
                        <td width=70><a href="info_point.php?read=<?php echo $inhalt->id; ?>" class="<?php if ($inhalt->id == $id && $userRow['email'] == $username ) { ?> disabled <?php } ?>">>gelesen</a></td>

                      Das hier als Schleife, geht das???
                      HTML-Code:
                      class="<?php if ($inhalt->id == $id && $userRow['email'] == $username ) { ?> disabled <?php } ?> // kann ich das als Schleife laufe lassen?
                      Code:
                      $debug = "SELECT * FROM tbl_debug WHERE email = $username AND button = $id";
                      foreach ($link->query($debug) as $row) { // hier mache ich was falsch???
                      }

                      Kommentar


                      • #12
                        Brauche nochmal Eure Hilfe,

                        habe eine Tabelle, wo jetzt jeder Datensatz (lesebestätigung) quittiert werden soll.

                        Die quittierung wir in einer anderen Tabelle abgelegt!
                        Das klappt auch alle soweit!

                        Mein Problem ist die Abfrage zweier Tabellen (SQL Join-Left), bekomme es nicht auf die Kette.
                        HTML-Code:
                        <td width=70 style="background: <?php echo $inhalt->background; ?>"><font color="#ff0000"><a href="info_point.php?read=<?php echo $inhalt->id; ?>" class="<?php if ($inhalt->id == $id && $userRow['email'] == $username ) { ?> disabled <?php } ?>">gelesen</a></td>
                        Code:
                         if (isset($_GET['read'])) {
                          $id = $_GET['read'];
                          if ($id > 0)
                                {    
                               $timestamp = date('d-m-Y H:i:s');
                               $query = "INSERT INTO tbl_debug(email,ip,timestamp,button,webseite,pc,funktion,meldung,color)VALUES( '$username','$ip','$timestamp','$id','InfoPoint','$pc','OnClick','$info  @ [Datensatz gelesen]', '#ba55d3')";
                               $link->query($query);
                         }
                        }

                        HTML-Code:
                        <table>
                         <tbody>
                          <tr>
                           <?php
                            if (count($daten)>0)  
                            foreach ($daten AS $inhalt) {
                            ?>
                            <td width=52 style="background: <?php echo $inhalt->background; ?>"><font color="<?php echo $inhalt->color; ?>"><a><?php echo $inhalt->id; ?></a></td>
                            <td width=165 style="background: <?php echo $inhalt->background; ?>"><font color="<?php echo $inhalt->color; ?>"><?php echo $inhalt->timestamp; ?></td>
                            <td width=100 style="background: <?php echo $inhalt->background; ?>"hidden><font color="<?php echo $inhalt->color; ?>"><?php echo $inhalt->lebenszeit; ?></td>
                            <td width=160 style="background: <?php echo $inhalt->background; ?>"hidden><font color="<?php echo $inhalt->color; ?>"><?php echo $inhalt->name; ?></td>
                            <td width=30 style="background: <?php echo $inhalt->background; ?>">
                            <?php if ($inhalt->id == $id && $userRow['email'] == $username ) { echo "<img src='gelesen.png'>" ; }
                                  if ($inhalt->id !== $id && $userRow['email'] == $username ) { echo "<img src='Alert.png'>" ; }?> </td>
                            <td width=70 style="background: <?php echo $inhalt->background; ?>"><font color="#ff0000"><a href="info_point.php?read=<?php echo $inhalt->id; ?>" class="<?php if ($inhalt->id == $id && $userRow['email'] == $username ) { ?> disabled <?php } ?>">gelesen</a></td>
                            <td style="background: <?php echo $inhalt->background; ?>"><font color="<?php echo $inhalt->color; ?>"><?php echo $inhalt->meldung; ?></td>
                            <td width=30 style="background: <?php echo $inhalt->background; ?>">
                            <?php if ($inhalt->lebenszeit == "gesperrt") { echo "<img src='Lock.png'>" ; }
                                  if ($inhalt->lebenszeit == "freigabe") { echo "<img src='User.png'>" ; }
                                  if ($inhalt->lebenszeit !== "freigabe" && $inhalt->lebenszeit !== "gesperrt") { echo "<img src='Warning.png'>" ; }?> </td>
                            <td width=100 style="background: <?php echo $inhalt->background; ?>"><font color="#0040FF"><a href="info_point_editor.php?edit=<?php echo $inhalt->id; ?>" class="<?php if ($inhalt->lebenszeit !== "freigabe" && $inhalt->user !== $username ) { ?> disabled <?php } ?>">Bearbeiten</a></td>
                            <td width=80 style="background: <?php echo $inhalt->background; ?>"><font color="#0040FF"><a href="?clear=<?php echo $inhalt->id; ?>" class="<?php if ($inhalt->lebenszeit !== "freigabe" && $inhalt->user !== $username) { ?> disabled <?php } ?>">Löschen</a></td>
                          </tr>
                            <?php
                            }
                            ?>
                        </tbody>    
                        </table>

                        Wie muss ich die Join-Left Abfrage aussehen? Habe schon ein paar Versuche gemacht!

                        info_point.id = debug.id
                        info_point.user = debug.user

                        HTML-Code:
                        <td width=30 style="background: <?php echo $inhalt->background; ?>">
                            <?php if ($inhalt->id == $id && $userRow['email'] == $username ) { echo "<img src='gelesen.png'>" ; }
                                  if ($inhalt->id !== $id && $userRow['email'] == $username ) { echo "<img src='Alert.png'>" ; }?> </td>

                        PHP-Code:
                         $daten = array();
                         
                        $sql "SELECT tbl_info_point.id, tbl_info_point.timestamp, tbl_info_point.user, tbl_info_point.name, tbl_info_point.color, tbl_info_point.meldung, tbl_info_point.datetime, tbl_info_point.lebenszeit, tbl_info_point.lebenszeit_timestamp, tbl_info_point.zustand, tbl_info_point.radio1, tbl_info_point.background
                                FROM tbl_info_point        
                                ORDER BY tbl_info_point.id DESC"
                        ;
                         if (
                        $erg $link->query($sql)) {
                             if (
                        $erg->num_rows) {
                                
                        $ds_gesamt $erg->num_rows;
                                
                        $erg->free();
                            }
                            if (
                        $erg $link->query($sql)) {
                                while (
                        $datensatz $erg->fetch_object()) {
                                    
                        $daten[] = $datensatz;
                                }
                            }

                        Kommentar

                        Lädt...
                        X