PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Youtube einbinden


sertunc
27.10.2011, 11:04:01
Ich möchte jetzt eine neue Seite programmieren, undzwar ich möchte den Benutzern meiner Community die möglichkeit geben Youtube Videos selber auf einer bestimmten Seite einzubetten.

Die Benutzer sollten im Prinzip nur den Link von Youtube im Browser kopieren und im Textfeld einfügen. Beim Klicken des Speichern-Buttons sollte das Video angezeigt werden.


Ich weiss, dass ich mit

parse_url();
strpos();
substr();

arbeiten muss.

Meine Frage: Können Sie mir denn ein Tutorial vorschlagen "Usern die möglichkeit geben Youtube Videos einzubetten", das sehr hilfreich ist und ausführlich erklärt ist ? (gegoogelt habe ich schon)

sertunc
27.10.2011, 12:35:27
Um Missverständnisse auszuschließen habe ich einfachen Layout erstellt:

http://i44.tinypic.com/i6jpj5.jpg

sertunc
28.10.2011, 11:28:11
So jetzt habe ich durch eigene Mittel, google und nach ein paar Zeilen copy-paste Vorgang, das Thema "Youtube Videos einbinden" programmiert (Quelltext unten), leider habe ich noch ein paar Probleme. Könnt ihr mir da helfen ?

Problembeschreibung:

Wenn ich im Browser videoenter.php aufrufe, wird das Formularfeld automatisch gefüllt also es wird in der Datenbank die Datensätze mit "leeren" Informationen gespeichert und es erscheint im Browser die Meldung "Video erfolgreich eingetragen" soll ja auch aber die Datensätze sollen dann gespeichert werden wenn ich submit klicke, ich habe es programmiert "wenn submit dann eintragen" hat es aber auch nicht geklappt.
videos.php funktioniert soweit, wenn ich ein Video anklicke dann wird es videosshow.php weitergeleitet aber das Video wird nicht angezeigt Fehlermeldung:mysql_fetch_object(): supplied argument is not a valid MySQL result resource




Datenbank: Tabelle videos
`videoid` int(10) unsigned NOT NULL auto_increment, Primary key
`link` varchar(150) NOT NULL,
`titel` varchar(50) NOT NULL,
`beschreibung` text NOT NULL,
`von` varchar(150) NOT NULL,
`von2` int(2) unsigned NOT NULL,
`datum` int(11) unsigned NOT NULL,
`link2` varchar(150) NOT NULL,




videoenter.php:

<?php
include ("connect.php");

error_reporting(-1);
ini_set('display_errors', TRUE);

echo "<center><b><u>Videos eintragen:</u></b><br><br>
<form action=\"videoenter.php\" method=\"post\">
<table width=\"600\" style=\"font-family:Helvetica;font-size:12px;\"><tr><td><b>Titel:</b></td><td><input type=\"text\" name=\"video\" maxlength=\"50\"></td></tr><tr>
<td><b>Link: </b><sub>(Mit http:// und www)</td><td><input type=\"text\" name=\"link\"></td></tr>
<tr><td><b>Beschreibung:</td><td><textarea style=\"font-family:Helvetica;font-size:12px;\" name=\"beschreibung\" cols=\"70\" rows=\"8\"
wrap=\"physical\"></textarea></td></tr></table>
<input type=\"submit\" value=\"Eintragen\">
</form></center>";


$titel = $_POST['titel'];
$beschreibung = $_POST['beschreibung'];
$link2 = $_POST['link'];
$link = substr("$link2", 31, 11);
$datum = time();



if(strpos($link2, "de.youtube.com") !== false)
{
$link = substr("$link2", 30, 11);
}
else if(strpos($link2, "www.youtube.com") !== false)
{
$link = substr("$link2", 31, 11);
}
else if(strpos($link2, "youtube.com") !== false)
{
$link = substr("$link2", 27, 11);
}
$datum = time();
$userid = $_SESSION['userid'];

$eintrag = "INSERT INTO videos (titel, link, link2, von, von2, datum, beschreibung) VALUES ('$titel', '$link', '$link2', '$email', '$userid', '$datum', '$beschreibung')";
$eintragen = mysql_query($eintrag);
if($eintragen == true)
{
echo "<center><b>Video erfolgreich eingetragen</b><br><a href=\"videos.php\">Videos ansehen</a></center>";
}
else
{
echo "<center><b>Fehler beim eingetragen</b></center>";
}

?>



videos.php:

<?php
include_once("connect.php");
$videopage = $_GET["videopage"];
if(!isset($videopage))
{
$videopage = 1;
}

$eintraege_pro_seite = 10;
$start = $videopage * $eintraege_pro_seite - $eintraege_pro_seite;

$abfrage = "SELECT * FROM videos ORDER BY videoid DESC LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$titel = $row->titel;
$datum = date("d.m.Y H:i", $row->datum);
$beschreibung = $row->beschreibung;
$link = $row->link;
$videoid = $row->id;
if ($beschreibung == "")
{
$beschreibung = "Keine Beschreibung vorhanden";
}
echo "<table Border=\"0\" Width=\"600px\" style=\"font-family:Helvetica;font-size:12px;\">
<tr><td width=\"200\"><b>$titel</b></td></tr></table>
<table Border=\"0\" Width=\"600px\" style=\"font-family:Helvetica;font-size:12px;\">
<tr><td width=\"135\"><a href=\"videoshow.php?videoid=$videoid\"><img src=\"http://i.ytimg.com/vi/$link/default.jpg\"></a></td><td valign=\"top\">$beschreibung</td></tr><tr><td>$datum</td></tr>
</table><br>
";

}
$result = mysql_query("SELECT videoid FROM videos");
$menge = mysql_num_rows($result);

$wieviel_seiten = $menge / $eintraege_pro_seite;

echo "<div align=\"center\">";
echo "<b>Seite:</b> ";

for($a=0; $a < $wieviel_seiten; $a++)
{
$b = $a + 1;
if($videopage == $b)
{
echo " <b>$b</b> ";
}
else
{
echo " <a href=\"?videopage=$b\">$b</a> ";
}


}
echo "</div>";
?>


videoshow.php:

<?php
include_once("connect.php");
$videoid = $_GET["videoid"];
$abfrage = "SELECT * FROM videos WHERE id = '$videoid' LIMIT 1";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$beschreibung = $row->beschreibung;
$link = $row->link;
if ($beschreibung == "")
{
$beschreibung = "Keine Beschreibung vorhanden";
}
echo "<center><b>$row->titel</b><br><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/$link&hl=de\"></param>
<param name=\"wmode\" value=\"transparent\"></param>
<embed src=\"http://www.youtube.com/v/$link&hl=de\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"425\" height=\"355\"></embed></object><br><b>Von $row->von</b></center><br>
";
}
?>

vt1816
28.10.2011, 13:01:09
$_POST['submit'] abfragen!

sertunc
28.10.2011, 14:14:54
$_POST['submit'] abfragen!


<?php
include ("connect.php");

error_reporting(-1);
ini_set('display_errors', TRUE);

echo "<center><b><u>Videos eintragen:</u></b><br><br>
<form action=\"videoenter.php\" method=\"post\">
<table width=\"600\" style=\"font-family:Helvetica;font-size:12px;\"><tr><td><b>Titel:</b></td><td><input type=\"text\" name=\"video\" maxlength=\"50\"></td></tr><tr>
<td><b>Link: </b><sub>(Mit http:// und www)</td><td><input type=\"text\" name=\"link\"></td></tr>
<tr><td><b>Beschreibung:</td><td><textarea style=\"font-family:Helvetica;font-size:12px;\" name=\"beschreibung\" cols=\"70\" rows=\"8\"
wrap=\"physical\"></textarea></td></tr></table>
<input type=\"submit\" value=\"Eintragen\">
</form></center>";


if(isset($_POST['submit']))

{
$name = $_POST['video'];
$beschreibung = $_POST['beschreibung'];
$link2 = $_POST['link'];

if(strpos($link2, "de.youtube.com") !== false)
{
$link = substr("$link2", 30, 11);
}
else if(strpos($link2, "www.youtube.com") !== false)
{
$link = substr("$link2", 31, 11);
}
else if(strpos($link2, "youtube.com") !== false)
{
$link = substr("$link2", 27, 11);
}
$datum = time();
$userid = $_SESSION['id'];

$eintrag = "INSERT INTO videos (titel, link, link2, von, von2, datum, beschreibung) VALUES ('$name', '$link', '$link2', '$email', '$userid', '$datum', '$beschreibung')";
$eintragen = mysql_query($eintrag);
if($eintragen == true)
{
echo "<center><b>Video erfolgreich eingetragen</b><br><a href=\"videos.php\">Videos ansehen</a></center>";
}
else
{
echo "<center><b>Fehler beim eingetragen</b></center>";
}
}
?>

wie oben auch erwähnt hatte ich es mit if isset submit versucht aber ...

jetzt wird es gar nichts gespeichert

vt1816
28.10.2011, 14:40:00
<?php
...
if($eintragen == true)
{
echo "<center><b>Fehler beim eingetragen</b></center>";
}
else
{
echo "<center><b>Video erfolgreich eingetragen</b><br><a href=\"videos.php\">Videos ansehen</a></center>";
}
}
?>



Besser:
<?php
...
if(!$eintragen)
{
echo "<center><b>Video erfolgreich eingetragen</b><br><a href=\"videos.php\">Videos ansehen</a></center>";
}
else
{
echo "<center><b>Fehler beim eingetragen</b></center>";
}

sertunc
28.10.2011, 14:48:20
Besser:
<?php
...
if(!$eintragen)
{
echo "<center><b>Video erfolgreich eingetragen</b><br><a href=\"videos.php\">Videos ansehen</a></center>";
}
else
{
echo "<center><b>Fehler beim eingetragen</b></center>";
}


funktioniert auch nicht :(


<?php
...

$eintrag = "INSERT INTO videos (titel, link, link2, von, von2, datum, beschreibung) VALUES ('$titel', '$link', '$link2', '$email', '$userid', '$datum', '$beschreibung')";
$eintragen = mysql_query($eintrag);
if(!$eintragen)
{
echo "<center><b>Video erfolgreich eingetragen</b><br><a href=\"videos.php\">Videos ansehen</a></center>";
}
else
{
echo "<center><b>Fehler beim eingetragen</b></center>";
}
}
?>

vt1816
28.10.2011, 15:07:19
funktioniert auch nicht :(
Was funktioniert nicht?
Welche Ausschrift erhältst Du?
Welche Fehlermeldung erhältst Du?

sertunc
28.10.2011, 15:19:18
Was funktioniert nicht?
Welche Ausschrift erhältst Du?
Welche Fehlermeldung erhältst Du?

Die Daten werden nicht in die Datenbank gespeichert.
Wenn ich "eintragen" (submit) klicke, dann werden die Infos, link etc aus dem Formularfeldern gelöscht und die Seite wird neugeladen.

Ich erhalte keine Fehlermeldung.

vt1816
28.10.2011, 15:33:11
Kleine Ursache - große Wirkung:
echo "<center><b><u>Videos eintragen:</u></b><br><br>
<form action=\"videoenter.php\" method=\"post\">
<table width=\"600\" style=\"font-family:Helvetica;font-size:12px;\"><tr><td><b>Titel:</b></td><td><input type=\"text\" name=\"video\" maxlength=\"50\"></td></tr><tr>
<td><b>Link: </b><sub>(Mit http:// und www)</td><td><input type=\"text\" name=\"link\"></td></tr>
<tr><td><b>Beschreibung:</td><td><textarea style=\"font-family:Helvetica;font-size:12px;\" name=\"beschreibung\" cols=\"70\" rows=\"8\"
wrap=\"physical\"></textarea></td></tr></table>
<input type=\"submit\" value=\"Eintragen\">
</form></center>";


Gibt dem SUBMIT einen Namen:
<input type=\"submit\" name=\"submit\" value=\"Eintragen\">
dann sollte es auch wieder funktionieren. (Rest unverändert.)

sertunc
28.10.2011, 16:01:14
Kleine Ursache - große Wirkung:


Gibt dem SUBMIT einen Namen:
<input type=\"submit\" name=\"submit\" value=\"Eintragen\">
dann sollte es auch wieder funktionieren. (Rest unverändert.)

*ouch*


Vielen dank für den Hinweis.

Jetzt erhalte ich andere Fehler, wenn ich nicht weiterkomme werde ich später posten.

sertunc
28.10.2011, 16:13:12
Besser:
<?php
...
if(!$eintragen)
{
echo "<center><b>Video erfolgreich eingetragen</b><br><a href=\"videos.php\">Videos ansehen</a></center>";
}
else
{
echo "<center><b>Fehler beim eingetragen</b></center>";
}


Ein Hinweis für andere, die diesen Code übernehmen, Sie haben hier die echos umgetauscht, dass muss genau umgekehrt.

So ist es richtig:

<?php
....
if(!$eintragen)
{
echo "<center><b>Fehler beim eingetragen</b></center>";
}
else
{
echo "<center><b>Video erfolgreich eingetragen</b><br><a href=\"videos.php\">Videos ansehen</a></center>";
}

?>

vt1816
28.10.2011, 16:16:56
Sorry!

Nur so kann man testen, ob die Hilfe auch richtig umgesetzt wird. ;-)

sertunc
28.10.2011, 16:19:48
Sorry!

Nur so kann man testen, ob die Hilfe auch richtig umgesetzt wird. ;-)

:))

sertunc
02.11.2011, 08:47:11
Die Videos werden in videos.php aufgelistet so wie ich es auch haben wollte, wenn ich die Videos mir bzw. User jetzt ansehen möchte, werden die Videos nicht angezeigt, die Videos sollen in videoshow.php angezeigt werden.

Fehleranzeige: Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in .......

Wo mache ich da eig. Fehler. Was muss ich anders machen bzw. ändern ?


videoshow.php:

<?php
include_once("connect.php");

error_reporting(-1);
ini_set('display_errors', TRUE);

$videoid = $_GET["videoid"];
$abfrage = "SELECT * FROM videos WHERE id = '$videoid' LIMIT 1";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$beschreibung = $row->beschreibung;
$link = $row->link;
if ($beschreibung == "")
{
$beschreibung = "Keine Beschreibung vorhanden";
}
echo "<center><b>$row->titel</b><br><object width=\"425\" height=\"355\"><param name=\"movie\" value=\"http://www.youtube.com/v/$link&hl=de\"></param>
<param name=\"wmode\" value=\"transparent\"></param>
<embed src=\"http://www.youtube.com/v/$link&hl=de\" type=\"application/x-shockwave-flash\" wmode=\"transparent\" width=\"425\" height=\"355\"></embed></object><br><b>Von $row->von</b></center><br>
";
}
?>

vt1816
02.11.2011, 10:26:14
Verwende $_POST statt $_GET - denn die Werte kommen doch aus einem Formular oder sind es Links? Prüfe mittels var_dump($_POST) die Übergabe der Werte.
$videoid ist doch eindeutig - oder? Wozu dann LIMIT 1?
Prüfe $ergebnis auf korrekte Rückgabe, nur dann darf/kann es weitergehen.