frage:
-
Nochwas, was ist schlauer:
datum einmal creieren, und in session variable speichern, oder auf jeder seite neu creieren?
$datum=getdate(); $_SESSION['date']=$datum[year]."-".$datum[mon]."-".$datum[mday];
-
Ich denke das spielt von der Perforance her keine allzugroße Rolle. Aber einfacher geht's z.B. mit date('Y-m-d');
-
Ok, danke, aber weisst du auch was über das mysql_num_rows() ?
Achso, das Datum kann ich doch nicht so machen, da ich es in der Form 2003-06-29 brauche...[ Dieser Beitrag wurde am 27.06.2003 um 10:23 Uhr von StudentJojo editiert. ]
-
Original erstellt von StudentJojo:
Ok, danke, aber weisst du auch was über das mysql_num_rows() ?
Achso, das Datum kann ich doch nicht so machen, da ich es in der Form 2003-06-29 brauche...ich weiss nichts darueber das mysql_num_rows() lahm sein soll, man ruft es sowieso nur einmal pro result auf, insofern kann es nicht so viel kosten...
mittels date() kannst du jedes format bekommen das du willst!
-
stimmt!!
warum kann ich ne datenbankabfrage nicht in ner session variable speichern:
query);
_SESSION['result']=result;und wenw ichs wieder aufrufen will:
_SESSION['result'];
print mysql_result($result, 0, "name");Warning: mysql_result(): supplied argument is not a valid MySQL result resource
Ich kann keine neue Abfrage machen, da zwischenzeitlich meine Datenbank verändert sein könnte, und dann hab ich nicht mehr genau die selbe abfrage...
-
Ich denke mal, dass das DB_Result-Handle keine Scriptübergreifende Gültigkeit hat -> wenn du genau die selbe Abfrage brauchst (warum überhaupt?) musst du wohl alles einlesen und das dann abspeichern. Wird aber wohl bei größeren Datenmengen sehr, sehr lahm werden und ist daher nicht zu empfehlen.
-
Wenn ich z.B. die user Verwalte, mache ich das, indem ich alle in eine Tabelle auslese, und daneben eine checkbox zum freischalten und löschen mache.
wenn ich jetzt nun auf ausführen klicke, dann wird eine funktion aufgerufen, die ersteinmal die datenbank abfrage noch einmal macht, und dann wird der jeweilige datensatz i gelöscht.
wenn nun jemand zwischenzeitlich sich anmeldet, dann passt das jeweilige i in der checkbox nicht mehr mit dem dazugehörigen datensatz überein, und es wird jemand falsche gelöscht...
-
Original erstellt von StudentJojo:
wenn ich jetzt nun auf ausführen klicke, dann wird eine funktion aufgerufen, die ersteinmal die datenbank abfrage noch einmal macht, und dann wird der jeweilige datensatz i gelöscht.Wozu machst du vor dem Löschen eine DB-Abfrage
Original erstellt von StudentJojo:
wenn nun jemand zwischenzeitlich sich anmeldet, dann passt das jeweilige i in der checkbox nicht mehr mit dem dazugehörigen datensatz überein, und es wird jemand falsche gelöscht.Durch das anmelden eines neuen Users ändern sich doch nicht User-IDs der bisherigen. Oder ist i deine Position des Datensatzes im Ergebnis-Array? Damit solltest du eh nicht arbeiten
-
if ($_GET['funktion']==1) { $forum=mysql_connect($_SESSION['server'], $_SESSION['dbname'], $_SESSION['dbpasswort']) or die ("Leider konnte keine Verbindung zum Datenserver hergestellt werden."); mysql_select_db("forum"); $query="select login, vorname, nachname, wohnort from user where freigeschaltet=0 order by 'login'"; $result=mysql_query($query); $rows=mysql_num_rows($result); $_SESSION['rows']=$rows; mysql_close(); print "<form action='sql.php?funktion=4' method='post'>". "<div align='center'<br><br><br><table border='1' width='80%' bordercolor='#000000'summary='' align='center'>". "<tr>". "<td align='center'><font color='#0033ff'><b>Login-Name</b></font></td>". "<td width='16%' align='center'><font color='#0033ff'><b>Vorname</b></font></td>". "<td width='16%' align='center'><font color='#0033ff'><b>Nachname</b></font></td>". "<td width='16%' align='center'><font color='#0033ff'><b>Wohnort</b></font></td>". "<td width='16%' align='center'><font color='#0033ff'><b>Freischalten</b></font></td>". "<td width='16%' align='center'><font color='#0033ff'><b>Löschen</b></font></td>". "</tr>"; for ($i=0; $i<$rows; $i++) { print "<tr>". "<td align='center'>".mysql_result($result, $i,"login")."</a>"."</td>". "<td align='center'>".mysql_result($result, $i,"vorname")."</td>". "<td align='center'>".mysql_result($result, $i,"nachname")."</td>". "<td align='center'>".mysql_result($result, $i,"wohnort")."</td>". "<td align='center'><input type='checkbox' name='freischalten[$i]' value='1'></td>". "<td align='center'><input type='checkbox' name='loeschen[$i]' value='1'></td>". "</tr>"; } print "</table>". "<br><br><br><input type='submit' value='ausführen'>". "</div>". "</form><br><br>". "<div align='center'><a href='sql.php?funktion=0'>zurück</a></div>"; } if ($_GET['funktion']==4) { $forum=mysql_connect($_SESSION['server'], $_SESSION['dbname'], $_SESSION['dbpasswort']) or die ("Leider konnte keine Verbindung zum Datenserver hergestellt werden."); mysql_select_db("forum"); $query="select login, vorname, nachname, wohnort from user where freigeschaltet=0 order by 'login'"; $result=mysql_query($query); for ($i=0; $i<$_SESSION['rows']; $i++) { if ($freischalten[$i]==1) { $login=mysql_result($result, $i, "login"); mysql_query("update user set freigeschaltet=1 where login='$login'"); print "<br><br><div align='center'>".$login." wurde freigeschaltet!</div>"; } if ($loeschen[$i]==1) { $login=mysql_result($result, $i, "login"); mysql_query("delete from user where login='$login'"); print "<br><br><div align='center'>".$login." wurde gelöscht!</div>"; } } mysql_close(); print "<br><br><div align='center'><a href='sql.php?funktion=1'>zurück</a></div>"; }
So schauts aus, deswegen brauch ich auch erst eine db-abfrage
-
Ich würde dir das anders empfehlen:
result, i,"login"); <input type='checkbox' name='loeschen[]' value='$login'>
Und dann machst du einfach für die beiden Arrays ein foreach und löscht bzw. aktualisierst entsprechend. Deine Methode wird wohl nicht immer berechenbar arbeiten, wenn überhaupt.
-
Meine Methode klappt zwar auch, aber deine find ich schlauer