EDITED: mit neuem Code nach Hilfe von Sgt AJ.Wie kann eine Funktion mit Datenbankdaten in einer anderen Funktion aufgerufen werden?
Ok, also lerne ich die ganze Zeit, aber seit mein Programmierer die Programmierung für unsere Website eingestellt hat, muss ich PHP jetzt selbstständig lernen.
Und ich sehe die ganze Zeit die Codierung, wo mein Coder Funktionsaufrufe innerhalb anderer Funktionsaufrufe machte.
Also zuerst das Setup, wir haben eine Datei für ziemlich 95% aller Funktionen auf unserer Website. Diese Funktionsdatei hat im Grunde ungefähr 40-50 Funktionen.
Also frage ich, ob mir jemand erklären kann, wie das möglich ist, um eine Funktion in einem anderen zu nennen, die in der folgenden Instanz funktioniert, aber wenn ich versuche, es zu replizieren, funktioniert es nicht? zeigt keine Daten an, wenn ich versuche, die $user_info
zu echo?
Wie zum Beispiel diese Funktion unten: So Sgt AJ half mir, das Benutzeravatar-Problem zu lösen, so dass aus dieser Frage entfernt wird!
function showComments($v)
{
$mysqli = db_connect();
$v = mysqli_real_escape_string($mysqli,$v);
$sql = "SELECT * FROM `cl45-tbn_dir`.`comments` WHERE `v` = ? ORDER BY `id` ASC";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s",$v);
$stmt->execute();
$result = $stmt->get_result();
while ($myrow = $result->fetch_assoc()) {
if ($myrow['post_approved']==1){
$user_info = getUserInfo($myrow['poster_id']);
if ($user_info['user_avatar_type']==1) {
$avatar = "https://www.tubenations.com/forum/download/file.php?avatar=".$user_info['user_avatar'];
} else {
$avatar = "https://www.tubenations.com/forum/styles/Flato%20-%20LightBlue%20-%20Main%20Style/theme/images/no_avatar.gif";
}
echo '<div class="comment">
<div class="avatar">
<a href="https://www.tubenations.com/users.php?id='.$myrow['poster_id'].'">
<img src="'.$avatar.'" />
</div>
<div class="name"><a class ="myaccount'.$user_info['group_id'].'" href="https://www.tubenations.com/users.php?id='.$myrow['poster_id'].'">'.$user_info['username'].'</a></div>
<div class="date" title="report this post">'.date("d M Y",$myrow['post_time']).'<form action="" class="flag" method="post"><button type="submit" value="'.$myrow['id'].'" name="vote" id="votebutton" alt="vote"><img src="/images/flag.png" alt="report this post!" /></button></form></div>
<p>'.stripslashesFull(clean($myrow['post_text'])).'</p>
</div>';
}
}
$stmt->close();
$mysqli->close();
}
Wie Sie sehen können, gibt es eine Zeile, wo es eine andere Funktion getUserInfo
, $user_info = getUserInfo($myrow['poster_id']);
aufruft, die eine andere Funktion in dieser Datei ist, und das verbindet grundsätzlich zu unserem Forum Datenbank und erhält Daten.
Aber wenn ich versuche, diese Methode zu replizieren, indem Sie diese Art von Anruf in einem anderen verwenden, funktioniert es nicht.
Also im Grunde, was ich versuche, mit zu spielen versuchen, mit dieser unter Funktion
function getYouTubeInfo($page)
{
#$id = $_GET['id'];
print_r ($userdata['user_id']);
echo $myrow['user_id'];
echo $userdata['user_id'];
$db_link = mysqli_connect ('localhost', 'HIDDEN', 'HIDDEN', 'HIDDEN');
if (!$db_link)
{
die('following error occured: '.mysqli_error());
}
$query = "SELECT user_id, yt_channelTitle, channel_id FROM points WHERE channel_id IS NOT NULL AND yt_channelTitle IS NOT NULL ORDER BY channel_id DESC;";
if($result = mysqli_query($db_link, $query)){
echo "";
$i = -1;
$objectsPerPage = 14;
$show_records = FALSE;
while ($row = $result->fetch_assoc())
{
if (!isset($_SESSION['last_slide'])) { $_SESSION['last_slide'] = $row['channel_id']; }
if ($row['channel_id'] == $_SESSION['last_slide']) { $show_records = TRUE; }
if ($show_records)
{
$i = $i+1;
if ($i > $objectsPerPage) { $_SESSION['last_slide'] = $row['channel_id']; echo 'BREAK: ', $row['channel_id']; break; }
$page = abs(floor($i/$objectsPerPage));
$youtube_info = $row;
$userdata = getUserInfo($row['user_id']);
if ($userdata['user_avatar_type']==1) {
$avatar = "/forum/download/file.php?avatar=".$userdata['user_avatar'];
} else {
$avatar = "/images/no_image.png";
}
if (($i/$objectsPerPage)==$page)
{
if ($page !=0) {
echo "</div></div>";
}
echo '<div class="cslide-slide">
<div class="slideTitles">Youtube Users Slide '.$page.'</div>
<div class="sections grouped">';
}
echo '
<div class="cols span_1_of_2">
<div class="memberTitles"><a href="/user/'.$youtube_info['user_id'].'">'.$youtube_info['yt_channelTitle'].'</a>'.$i.';</div>
<div class="memberPicture"><img src="'.$avatar.'" title="Tube Nations Profile Picture" alt="Tube Nations Profile Picture"/></div>
<div class="memberTwitter"><div class="g-ytsubscribe" data-channelid="'.$youtube_info['channel_id'].'" data-layout="full" data-count="default" data-onytevent="onYtEvent"></div></div>
</div> ';
}
}
echo '</div></div>';
}
mysqli_free_result($result);
echo $_SESSION['last_slide'];
session_destroy();
mysqli_close($db_link);
}
Also im Grunde auf der Seite in Frage eine Funktion zur Anzeige X-Benutzer-Daten zu machen, youtube.php
, ich echo gerade diese getYouTubeInfo
Funktion.
Diese Funktion muss ich versuchen, die Benutzerprofilbilder zu erhalten, die in der Forumdatenbank sind, die von der getUserInfo($id)
stammt.
Auch auf Seite beachten, ich kann auch nicht herausfinden, wie die $i
und $objectsPerPage
Variablen neu ordnen und if-Anweisungen, damit ich dann die $page
in der Abfrage LIMIT $page;
weil zur Zeit der Seite Abstürze ohne Limit verwenden kann, also musste ich für jetzt auf 16 begrenzen.
Ich benutze ein jQuery-Slide-Skript zur Anzeige von X pro Folie, also wenn ich irgendwie herausfinden kann, wie man die Abfrage weiter unten nach den Variablen und if Anweisungen für die Seite stopft oder Hilfe bekommt, würde ich es begrüßen .
AKTUALISIERTE ANTWORT BEARBEITEN: Das Problem ist nun, dass X pro Folie/Seite angezeigt wird, aber es wird jetzt eine Lücke angezeigt, nachdem 8 Ergebnisse angezeigt werden, aber mit einer Lücke und dann auf der nächsten Folie Schaltfläche wird nicht angezeigt? Also sagte Sgt AJ, dass wir es irgendwie mit der Jquery verbinden müssen, also werde ich jetzt ein Tag für jquery hinzufügen. (Aber kann ich ein großes Dankeschön an Sgt AJ für seine Hilfe sagen, wirklich zu schätzen) :)
BTW, wollte ich gestern etwas dazu sagen: Die Zeile 'if (! $ Db_link) { die ('folgende Fehler aufgetreten:' .mysqli_error()); } 'ist sehr schlechte Programmierpraxis für eine Live-Site. Wenn bei der Anzeige der Seite ein Fehler auftritt, werden durch den Fehler potenziell gefährliche Informationen zu Ihrem Code und/oder Datenbankschema einem Benutzer angezeigt, der ihn nicht haben sollte. Sie sollten Benutzern einen allgemeinen Fehler zeigen und den tatsächlichen Fehler irgendwo aufzeichnen, wo Sie später nachschlagen können. –
ok ja, nur ein paar meiner Funktionen, die ich gemacht habe, sind auf diese Weise gemacht, Die meisten Funktionen in der Datei Funktionen sind alle in der Regel vorbereitete Anweisungen. –
Auch @Sgt AJ, bemerkte ich etwas seltsames, das geschah, wenn Sie den neuen Antwort-Post gelesen ich mit den Details gepostet :) –