Hallo, ich habe eine Frage zu PHP,
da meine Forensoftware bald fertig ist und das das letzt Puzzleteil ist das ich nicht lösen kann frage ich euch.
Mein Problem ist die Beitragserstellung/Threaderstellung.
Wenn man einen Thread erstellt
sollte er als erster hineinschreiben, dann abrufen, und dann wieder schreiben, leider macht er daweil bei mir schreiben, schreiben, abrufen. Kann mir wer helfen?
Soll der in MySQL rein schreiben oder wo?
Ja Mysql
Hier nochmal:
MySQL schreiben
MySQLtabelle abrufen(genau die in die geschrieben wurde die id abrufen)
Und dann wieder in ne andere Tabelle schreiben.
Hä das raff ich ausnahmsweise mal überhaupt nicht
Gib mal Code Schnipsel.
Weil eigentlich ist das doch einfach oder irre ich micht?
INSERT
SELECT
INSERT
oO?
ja, und das funzt aber leider net
LOL da musst mich mal aufklären oO wie schon gesagt irgendwie fehlt mir code um dir das glauben zu können.
Eigentlich hast z.B.
$sql1 = "INSERT....";
$sql2 = "SELECT....";
$sql3 = "INSERT....";
mysql_query($sql1);
mysql_query($sql2);
mysql_query($sql3);
Also natürlich grob gehalten.
Und dann rattert er doch 1 nach dem anderen ab.
Nagut habe mir die Zeit genommen, es wzu kopiere:
[code]<?
INCLUDE(’…/config/mysql.inc.php’);
session_start();
IF (ISSET($_POST[‘userid’]) && ISSET($_POST[‘password’])) {
// Falls der Benutzer das Anmeldeformular abgesendet hat:
$userid = $_POST[‘userid’];
$password = $_POST[‘password’];
$db_conn = NEW mysqli('localhost', 'root', '', 'wlfs');
IF (mysqli_connect_errno()) {
ECHO 'Verbindungsaubau zur Datenbank fehlgeschlagen: ' . mysqli_connect_error();
EXIT();
}
$query = 'select * from mybb_users '
. "where username='$userid' "
. " and password=sha1('$password') ";
$result = $db_conn->query($query);
IF ($result->num_rows > 0) {
// Falls die Benutzereingaben in der Datenbank stehen,
// wird die ID des Benutzers in der Session registriert.
$_SESSION['5w3l2f4s1'] = $userid;
}
$db_conn->close();
}
FUNCTION zufalls_grafik($pfad) {
$verzeichnis = opendir($pfad);
WHILE($datei = readdir($verzeichnis)) {
IF(eregi(’.png’,$datei)) {
IF($datei != “.” && $dateu != “…”) {
$auswahl[] = $datei;
}
}
}
closedir($verzeichnis);
$zufall = mt_rand(0,count($auswahl)-1);
RETURN “”.$pfad."/".$auswahl[$zufall]."";
}
$test = zufalls_grafik("…/bilder/seiten/banner");
$usernameid = $_POST[‘usernameid’];
$forumid = $_POST[‘threadforumid’];
$name = $_POST[‘threaduntertitel1’];
$titel = $_POST[‘threadtitel1’];
$titel1 = $_POST[‘threadtitel1’];
$post = $_POST[‘spaw1’];
if (!get_magic_quotes_gpc()) {
$forumid = addslashes($forumid);
$usernameid = addslashes($usernameid);
$name = addslashes($name);
$titel = addslashes($titel);
$post = addslashes($post);
$id = addslashes($id);
}
@$db = new mysqli(‘localhost’, ‘root’, ‘’, ‘wlfs’);
//Verbindung überprüfen
if (mysqli_connect_errno()) {
printf(“Verbindung fehlgeschlagen: %s\n”, mysqli_connect_error());
exit();
}
//Datensatz-Inhalte festlegen
$sql_befehl = "
INSERT INTO threads (
id,
forumid,
name,
titel
) VALUES (
’’,
’" . $forumid ."’,
’" . $name ."’,
’" . $titel ."’
)";
if ($db->query($sql_befehl)) {
echo “Der Thread wurde erfolgreich gespeichert”;
} else {
echo “Datensatz Fehlgeschlagen”;
}
$db->close();
?>
<HTML xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
Wiener Linien Fan Site | Startseite
IF (ISSET($_SESSION[‘5w3l2f4s1’])) {
ECHO “$naviindexangemeldet”;
} ELSE {
ECHO “$naviindex”;
}
?>
"; } ELSE { ECHO "$logindata"; } ?>
also erstmal würd ich nicht immer sql_connect und close machen.
einmal connect und einmal close reicht.
Macht eigentlich jeder normale mensch so^^
Was mich auch wundert, dass du 2 mal (oder etwa noch öfter?) INCLUDE(’…/config/mysql.inc.php’); machst oO
Aber wenn ich verstanden habe erstellst du nen Thread, dann fragst nach der ID und dann erstellst den Post in der DB?
Also ich hätte das mit dem Thread id holen anders gemacht. Außerdem direkt nach dem eintragen.
Dann am besten
Damit wählt er auch ja den thread.
Dann noch query kram (nach query nehm ich immer row^^ z.B. wäre $row[0] die id
if (mysql_num_rows($query) > 0) {
while(mysql_fetch_row($query)) {
$threadid = $row[0];
}
}
Dann den posts insert kram mit der threadid. So dürfte es funzen.
Danke, sehr, werde ich dann gleich auprobieren wenn ich zuHause bin!
Nein es funzt trotzdem net
also da kann irgendwas nicht stimmen^^ hab leider kaum zeit, weil ich unbedingt meine HP fertig machen will
Deshalb warte mal auf ne antwort von jemand anders.
Moin,
mich wundert das nicht, weil $row gar nicht gesetzt wird.
while($row = mysql_num_rows($query)) //usw
MfG
myPages
Um solche Fehler zu entdecken, kann es auch nützlich sein, Notices zu verwenden.
Was sind notices?
Hinweisfehlermeldungen von PHP
Oh hab ich ganz vergessen^^ kommt vor
War schon so müde.
if (mysql_num_rows($query) > 0) {
while($row = mysql_fetch_row($query)) {
$threadid = $row[0];
}
}
so dürfte es richtig sein^^
Ja, aber was bewirkt das, kommt ja das gleiche raus!
Vorher hast du $row benutzt aber ich hatte vergessen es zu belegen mit dem mysql_fetch_row
nu ist es belegt.
Eigentlich dürfte es auch funktionieren oO