[PHP] Div erstellen mit Verlinkung

Kebab

Boskoop
Registriert
22.02.15
Beiträge
39
Hey @hillepille

Vielen Dank für deinen Beitrag. Der Code wird mir sicherlich helfen.
Mir kam da aber eine einfachere Idee. Beim Upload wird einen Datenbankeintrag erstellt, da müsste ich nur wissen wie ich den channelname von dem ausgewählten Radiobutton in die DB kriege.
Hier sollte der channelname von dem ausgewählten Radiobutton in die DB rein:
PHP:
$insert = mysql_query("INSERT INTO videos VALUES ('','$title','$desc','$keywords','$user','$privacy','$date','0','$video_id','','$filename','images/thumbnail.png','no')");

Danach habe ich den Channelname in der DB und in dem Channel Script suche ich einfach in der DB alle Videos mit dem channelname vom dem Channel und bekomme alle DB Einträge mit den Videos. Danach kann ich einen Teil von deinem Code brauchen und die div's erstellen und fertig.

Jetzt brauche ich nur noch Hilfe bei dem Eintrag in der DB, da ich noch nie mit Radiobuttons gearbeitet habe. Könnte mir da jemand helfen?

Vielen Dank
Kebab
 

hillepille

Melrose
Registriert
19.07.09
Beiträge
2.508
Hi, das ist doch nicht schwer. Du musst die Radiobutton alle gleich benennen und jeder hat einen eindeutigen Wert. Dann kannst du wie bei allen anderen Variablen auch darauf zugreifen.

PHP:
<?php

if(isset($_POST['aktion']) && $_POST['aktion'] == "speichern"){
     var_dump($_POST['rad']);
}
?>
<!DOCTYPE html>
<html>
<head>

    <title>Titel</title>
    <link rel="stylesheet" type="text/css" href="" />
</head>
    <body>
        <form method="post" action="">
      
        <input type="radio" name="rad" value="1" /> Radio 1<br/>
        <input type="radio" name="rad" value="2" />     Radio 2<br/>
        <input type="radio" name="rad" value="3" />     Radio 3<br/>
        <input type="submit" value="Speichern" />
        <input type="hidden" name="aktion" value="speichern" />
        </form>

    </body>
</html>

mysql_query wird dort aber nicht funktionieren, wenn du auf mysqli umgestellt hast. Und du solltest an der Stelle die Nutzereingaben prüfen. Ich würde dir prepared Statements empfehlen. Dazu findest du alles auf der folgenden Seite, da musst du dich mal durcharbeiten:

http://www.w3schools.com/php/php_mysql_prepared_statements.asp
 
  • Like
Reaktionen: Kebab

Kebab

Boskoop
Registriert
22.02.15
Beiträge
39
Hallo @hillepille

Leider kann ich nicht alle Radiobuttons schon einzeln erstellen, sondern muss dies so erledigen:
PHP:
$varChannel .= "<input type='radio' name='channel' value='".$row['channel_name']."' /> ".$row['channel_name']." <br />";
Somit werden auch nur die Anzahl an Channels, welche vorhanden sind ein Radiobutton erstellt. Nun brauche ich eine Möglichkeit wie ich die Channelnamen ausgeben kann und die mit Radiobuttons erstellt werden. Wenn dann ein Channel ausgewählt wird und man auf Upload drückt sollte er in der DB eingetragen werden.

Habe ich das Prepared Stratements richtig verstanden?
Kann ich einfach die DB eintragen:
PHP:
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);

Und danach die Variabel von dem Channelname so einfügen?
PHP:
$conn("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES (:firstname, :lastname, :email)");

Vielen Dank für deine Hilfe
Kebab
 

hillepille

Melrose
Registriert
19.07.09
Beiträge
2.508
Hallo @hillepille

Leider kann ich nicht alle Radiobuttons schon einzeln erstellen, sondern muss dies so erledigen:
PHP:
$varChannel .= "<input type='radio' name='channel' value='".$row['channel_name']."' /> ".$row['channel_name']." <br />";
Somit werden auch nur die Anzahl an Channels, welche vorhanden sind ein Radiobutton erstellt. Nun brauche ich eine Möglichkeit wie ich die Channelnamen ausgeben kann und die mit Radiobuttons erstellt werden. Wenn dann ein Channel ausgewählt wird und man auf Upload drückt sollte er in der DB eingetragen werden.

Hi, ja ist schon klar, dann nimm mein Beispiel und schau dir an wie ich die Raduiobutton benannt habe. Nach dem gleiche Schema machst du das dann in der Schleife beim Generieren der Button.

Der untere Teil wird nicht zu dem Rest deines Codes passen., Die DB-Verbiondung hast du doch schon, der obere Teil der prepared-Satements-Seite ist für dich interessant nicht der PDO-Teil. Es sei denn du willst alles was du hast komplett umschreiben.

Ganz konkret der Teil hier, an dem kannst du orientieren.

PHP:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// prepare and bind
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

// set parameters and execute
$firstname = "John";
$lastname = "Doe";
$email = "[email protected]";
$stmt->execute();

$firstname = "Mary";
$lastname = "Moe";
$email = "[email protected]";
$stmt->execute();

$firstname = "Julie";
$lastname = "Dooley";
$email = "[email protected]";
$stmt->execute();

echo "New records created successfully";

$stmt->close();
$conn->close();
?>

Wobei du deine Variablen aus dem Formular bestücken musst.
 
  • Like
Reaktionen: Kebab

Kebab

Boskoop
Registriert
22.02.15
Beiträge
39
Hallo @hillepille

Vielen Dank für deine Hilfe.
Ich habe nun versucht die Radiobuttons so auszugeben.
PHP:
 while($row = mysqli_fetch_assoc($channel_check)) {
            echo $row;
           // $varChannel .= "<input type='radio' name='channel' value='".$row['channel_name']."' /> ".$row['channel_name']." <br />";
            if($numrows_cc == 1)
            {?>
            <input type="radio" name="rad" value="1" /> Radio 1<br/>
            <?php
            }
            if($numrows_cc == 2)
            {?>
            <input type="radio" name="rad" value="1" /> Radio 1<br/>
            <input type="radio" name="rad" value="2" /> Radio 2<br/>
            <?php
            }
            if($numrows_cc == 3)
            {?>
            <input type="radio" name="rad" value="1" /> Radio 1<br/>
            <input type="radio" name="rad" value="2" /> Radio 2<br/>
            <input type="radio" name="rad" value="3" /> Radio 3<br/>
            <?php
            }
            if($numrows_cc == 4)
            {?>
            <input type="radio" name="rad" value="1" /> Radio 1<br/>
            <input type="radio" name="rad" value="2" /> Radio 2<br/>
            <input type="radio" name="rad" value="3" /> Radio 3<br/>
            <input type="radio" name="rad" value="4" /> Radio 4<br/>
            <?php
            }
            if($numrows_cc == 5)
            {?>
            <input type="radio" name="rad" value="1" /> Radio 1<br/>
            <input type="radio" name="rad" value="2" /> Radio 2<br/>
            <input type="radio" name="rad" value="3" /> Radio 3<br/>
            <input type="radio" name="rad" value="4" /> Radio 4<br/>
            <input type="radio" name="rad" value="5" /> Radio 5 <br/>
            <?php
            }
            unset($row);
        }
        echo $varChannel;
    }
    ?>

Dummerweise sieht dies nun so aus:
asdf.PNG
Also erstellt es immer 5 Radiobuttons 5x mal.
Oder wenn man 4 Channels hat dann werden 4 Buttons 4x erstellt.

Ist meine Vorgehensweise so korrekt? Wie kann ich das beheben?

Also kann ich die Verbindung zur DB so nehmen?

PHP:
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
PHP:
$conn = new mysqli($servername, $username, $password, $dbname);

Vielen vielen Dank
Kebab
 

hillepille

Melrose
Registriert
19.07.09
Beiträge
2.508
Hi, sorry aber ich verstehe es langsam nicht mehr. Schau dir doch mal den ganzen Thread hier an, du hast alle Informationen zusammen.
Hier die Ausgabe der Radiobutton, warum baust du das jetzt plötzlich noch mal um.
PHP:
        $varChannel = "";
        while($row = mysqli_fetch_assoc($channel_check)) {
            //Hier durchläufst du die Schleife mit den Channels, dann müssen hier auch die Radio-Buttons erstellt werden
                        $varChannel .= "<input type='radio' name='channel' value='".$row['channel_name']."' /> ".$row['channel_name']." <br />";
            unset($row);
        }
        echo $varChannel;

Den Rest musst du jetzt mal selber machen, hier geht es um Hilfe zur Selbsthilfe. Wenn du das so auf Anhieb nicht hinbekommst, dann musst du in den suaren Apfel beissen und dir das beibringen. Wie gesagt, du hast für jedes deiner Probleme hier Beispielcode erhalten, das Zusammensetzen ist dann aber dein Job. Ich schaue auch gerne noch mal drüber, aber jetzt bist erstmal du dran.

Und deine letzte Herangehensweise kann doch nicth ansatzweise funktionieren. Was sollen die die Abfragen wieviele Ergebnisse es gibt? Was willst du damit machen? Du willst doch die vorhandenen Channel als Radiobutton ausgeben, oder? Dann sind doch deine statistischen if-Abfragen völlig überflüssig. Was machst du denn wenn es plötzlich 20 Channel sind, erweiterst du dann jedesmal den COde von Hand? Lauf die Schleife durch, speicher die einzelnen Radiobutton in einer Variablen und gib die Variable nach der Schleife aus. Punkt, mehr ist da doch gar nicht zu machen. Wie du deine Radiobutoon benennst ist doch Latte, nenn sie channel, das mit rad ist doch nur ein Beispiel. Aber egal für welchen Namen du dich entscheidest, den musst du dann im ganzen Script nutzen.

Wie du an den Wert des angeklickten Radiobuttons kommst habe ich dir ein paar Einträge weiter oben mit Beispielcode dargestellt. Die Prepared-Statementseite ist ein Beispiel(!), du musst das schon auf deinen Code anpassen und nicht einfach rauskopieren und übernehmen. Andere Möglichkeit wäre anhand des Beispielcodes das für deine Bedürfnisse mal nachzubauen.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Kebab

Kebab

Boskoop
Registriert
22.02.15
Beiträge
39
Hallo @hillepille

Vielen Dank für deine grossartige Hilfe.
Tut mir leid ich war nicht ganz bei der Sache. Natürlich hat jeder Channel einen andren Wert und so muss ich nicht jedem Button einen andren geben. Natürlich hat es auch so geklappt.

Vielen Dank
Kebab
 
  • Like
Reaktionen: hillepille