frage:
-
Hi StudentJojo,
hast Du die Variable als mit
global $Variablenname;
in der Funktion bekannt gemacht? Ansonsten wird sie lokal in der Funktion neu deklariert.
Alternativ kannst Du auch
$_SESSION["Variablenname"]
verwenden (PHP-Version>=4.1.0)
[ Dieser Beitrag wurde am 25.06.2003 um 07:14 Uhr von Locke editiert. ]
-
ich wollte es ja mit $_SESSION MACHEN, ging nicht. die 1. funktion baut mir das formular, die zweite soll auf basis der vom formular übergebenen daten was rechnen, dazu braucht sie aber ein abfrageergebnis der 1. funktion. dieses hatte ich eben in ne session variable gemacht, aber die war dann in der 2. funktion leer. in der 1. funktion war sie komischerweise korekt...
-
Etwas Code waehre sicherlich ganz hilfreich um das Prob loesen zu koennen
-
btw. auf die Daten aus dem Formular solltest du über $_GET, $_POST oder $_REQUEST zugreifen
-
hat sich alles geklärt. hätte da aber noch eine performance frage:
Stimmt es, das mysql_num_rows() eine Serverkiller werden könnte, damit meine ich, dass er total überlastet werden könnte?
Als ich das gehört habe, konnte ich es nicht so recht glauben, denn was soll daran so aufwendig sein, von nem Array die reihen zu zählen?!
Für ne kleine Erklärung wäre ich sehr dankbar...
-
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