[ERLEDIGT] Brauche Hilfe beim Formular und Tabelle

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Stupid
Mitglied
Beiträge: 35
Registriert: 17.10.2006 13:23

Beitrag von Stupid »

Code: Alles auswählen

$sql = "SELECT datum, name, grund 
FROM " . phpBB_kicklist;
$sql = "INSERT INTO phpBB_kicklist (datum, name, grund) 
VALUES ('".$_POST[datum]."', '".$_POST[name]."', '".$_POST[grund]."')";
$result = mysql_query($sql); 
echo "$result";
ist das richtig?

wenn nicht, könnte mir bitte jemand diesen Code schreiben? Ich möchte, dass er das, was oben ins Formular eingetragen wird, unten in die Tabelle schreibt. im mom bekomm ich immer ne Security-Meldung vom CrackerTracker, wenn ich da was ins Formular eintrage und absende :cry: *verzweifelt guck
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Syntaktisch ist es fast richtig. Fast deshalb, weil es heissen sollte

Code: Alles auswählen

('".$_POST['datum']."', '".$_POST['name']."', '".$_POST['grund']."')
Desweiteren würde ich Dir hier empfehlen anstatt phpBB_, was ja sicherlich das Tabellenpräfix sein soll, $table_prefix zu verwenden... ist universeller.

Jetzt hast Du zwar Deine SQL Queries soweit geschrieben, aber leider die erste gleich wieder überschrieben, denn beide Variablen heissen $sql.
Entweder füllst Du die $sql's in ein Array, wie es im Updatescript gemacht wird. Oder Du sendest nach jeden neuen SQL die Anfrage an die DB und wertest sie gleich aus.

Such Dir eine Möglichkeit aus.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Stupid
Mitglied
Beiträge: 35
Registriert: 17.10.2006 13:23

Beitrag von Stupid »

Code: Alles auswählen

$sql = array(
"SELECT datum, name, grund
FROM " . phpBB_kicklist; 
"INSERT INTO phpBB_kicklist (datum, name, grund) 
VALUES ('".$_POST['datum']."', '".$_POST['name']."', '".$_POST['grund']."')"
);
$result = mysql_query($sql); 
echo "$result";
meinst du das so? Oder muss das insert into wieder weg?

wegen dem $table_prefix....ich hab ja nu das gemacht:
CREATE TABLE `phpBB_kicklist` (
`datum` VARCHAR( 10 ) NOT NULL ,
`name` VARCHAR( 20 ) NOT NULL ,
`grund` TEXT NOT NULL
) ;


das müsste ich dann auch nochmal ändern, oder?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Das musst Du nicht ändern... Aber wenn Du das Script vllt. für andere zur Verfügung stellen möchtest, wäre es natürlich besser, weil dann der entsprechende Präfix benutzt wird.

Zu Deinem Code:
Irgendwie programmierst Du zu "starr". :)
Jetzt hast Du zwar ein indiziertes Array gebaut; aber das ist alles, wie soll ich es sagen, ... zu fest.
Und das Array mittels dieses Befehls abzuarbeiten wird nicht klappen.

Code: Alles auswählen

$result = mysql_query($sql);
$sql ist wie gesagt ein Array (bei Dir).
Was ist, wenn $result ein Array ist? dann wird ECHO nicht funktionieren.
Schau mal in der db_update nach. So sollte es mit einem Array laufen.

Allerdings brauchen wir hier kein Array.... also Du brauchst es nicht, denn die Abfragen sollen ja nicht alle am Stück abgearbeitet werden. Sondern jede für sich in Abhängigkeit von übergebenen Parametern.
Das Script soll doch folgendes machen -->
  • 1. Trage einen oder mehrere User in die Kicklist ein.
    2. Zeige die Kicklist insgesamt oder nach Auswahlkriterium an.
    3. Lösche den/die markierte(n) User aus der Liste.
Da macht sich ein Array nicht so gut.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Stupid
Mitglied
Beiträge: 35
Registriert: 17.10.2006 13:23

Beitrag von Stupid »

*seufz*

kannst du mir den Code evtl mal fertig machen? Vielleicht kapier ich dann eher, was gemeint ist und wie man es umsetzt. Ich hab sowas vorher noch nie gemacht....für mich ist das alles Neuland :oops:

3. Lösche den/die markierte(n) User aus der Liste.
aus der Liste soll der nix löschen....die Funktion hab ich nicht mit eingebaut....das delete oben im Formular leert nur die Eingabefelder...also entweder Eingabe abschicken oder Eingabe löschen....aber aus der Liste selbst soll nix gelöscht werden
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Axo :D
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Stupid
Mitglied
Beiträge: 35
Registriert: 17.10.2006 13:23

Beitrag von Stupid »

ok...ich versteh es als nein. :( Naja...danke dir trotzdem für deine Hilfe

würde sich evl jemand dazu bereit erklären, mir den Teil des Codes zu schreiben, damit er das, was ich oben im Formular eintrage, unten in die Tabelle schreibt?

Ich hab bisher die kicklist.php geschrieben

Code: Alles auswählen

<?php 
define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 

$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 

$page_title = 'Kickliste'; 
include($phpbb_root_path . 'includes/page_header.'.$phpEx); 
?> 

<html> 
<head></head> 
<body> 
<form method="POST" action="kicklist.php" target="_self"> 
<table width="90%" cellspacing="1" cellpadding="4" border="0" align="center" class="forumline">   <tr> 
     <th class="thHead" colspan="2">Kickliste:</th> 
   </tr> 
   <tr> 
      <td class="row1">Datum:</td> 
      <td class="row2"><input type="text" maxlength="255" size="50" name="datum"/></td> 
   </tr> 
   <tr> 
      <td class="row1">Name:</td> 
      <td class="row2"><input type="text" maxlenght="255" size="50" name="name"></td> 
   </tr> 
   <tr> 
      <td class="row1" valign=top>Grund:</td> 
      <td class="row2"><textarea name="grund" rows="15" cols="47"></textarea></td> 
   </tr> 
   <tr> 
      <td class="catBottom" colspan="2" align="center"><input type="submit" name="submit" value="Eintragen!" />&nbsp;&nbsp;<input type="reset" value="Löschen" /> 
      </td> 
   </tr> 
          
</table> 
</form> 
<br> 
<table width="90%" cellspacing="1" cellpadding="4" border="0" align="center" class="forumline">   <tr> 
     <th class="thHead" colspan="3">&nbsp;</th> 
   </tr> 
   <tr> 
      <td class="row1" width="15%">Datum</td> 
      <td class="row1" width="35%">Name</td> 
      <td class="row1" width="50%">Grund</td> 
   </tr> 
   <tr> 
   <td class="row1" width="15%"><?php echo $_POST['datum'];?></td> 
    <td class="row1" width="35%"><?php echo $_POST['name'];?></td> 
    <td class="row1" width="50%"><?php echo $_POST['grund'];?></td> 
  </tr> 
  <tr> 
      <td class="catBottom" colspan="3" align="center">&nbsp;</td> 
   </tr>  
</table>  
</body> 
</html> 

<?php 

include($phpbb_root_path . 'includes/page_tail.'.$phpEx); 
?>
...und mittels diesem hier eine Tabelle in der Datenbank angelegt

Code: Alles auswählen

CREATE TABLE `phpBB_kicklist` ( 
`datum` VARCHAR( 10 ) NOT NULL , 
`name` VARCHAR( 20 ) NOT NULL , 
`grund` TEXT NOT NULL 
) ;
nun muss ich ja noch was in die kicklist.php schreiben, damit er das was ich eingebe in der Datenbank speichert und sich das dann wieder aus der Datenbank holen kann, damit es in der Tabelle angezeigt wird *glaub* Das Feld "Name" hat nichts mit den Usern aus dem Forum zu tun. Es sind Namen, die im Forum nicht registriert sind, sondern nur auf dem UT-Server spielen

ich weiss leider nur nicht wie und mit Miriams Erklärung komm ich leider nicht weiter.

Miriam, trotzdem vielen Dank für deine Mühe, mir das verständlich zu machen, aber ich versteh es wirklich nicht =)

soweit bin ich gekommen, wobei Miriam sich so anhörte, als sei es noch falsch:

Code: Alles auswählen

$sql = array( 
"SELECT datum, name, grund 
FROM " . phpBB_kicklist; 
"INSERT INTO phpBB_kicklist (datum, name, grund) 
VALUES ('".$_POST['datum']."', '".$_POST['name']."', '".$_POST['grund']."')" 
);
ich wäre für Eure Hilfe echt dankbar *verzweifelt bin
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Axo sollte heissen, dass ich verstanden habe, was das Script machen soll. Nichts weiter. :)

Ich habe mir mal erlaubt, mich am Sonntag hinzusetzen und Dein Script umzubauen.

Das Ergebnis findet Du hier.
Speichere es Dir als kicklist.php ab und probier' mal.
Vllt solltest Du Dir noch ein paar Gedanken über unbefugten Zugriff auf Dein Script machen
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Stupid
Mitglied
Beiträge: 35
Registriert: 17.10.2006 13:23

Beitrag von Stupid »

boah Miriam, du bist ein Schatz ....danke dir ...wirklich... *um den Hals fall :grin:

jetzt ist noch das Problem, dass ich immer nach dem absenden nen Security Alert vom CrackerTracker bekomme und dadurch das Script geblockt wird *seufz
CBACK CrackerTracker has detected a potential attack on this site with a worm or exploit script so the Security System stopped the script.
.....was kann ich dagegen machen? Muss ich noch in anderen Dateien was eintragen?

.::EDIT::.

Problem gelöst!!!

und zwar bin ich in die ctracker/engines/ct_security.php gegangen, hab folgendes gesucht:

Code: Alles auswählen

// Some fields in $HTTP_POST_VARS don't get checked to prevent wrong detection 

   $unchecked_fields   = array('username', 'password', 'subject', 'message',
und hab da 'datum', 'name', 'grund', dazugeschrieben:

Code: Alles auswählen

// Some fields in $HTTP_POST_VARS don't get checked to prevent wrong detection
	$unchecked_fields   = array('username', 'password', 'subject', 'message', 'datum', 'name', 'grund',
das heisst, dass er diese Sachen nicht überprüfen soll

Miriam, dir nochmal ein RIESEN DANKESCHÖN.....echt lieb von dir :grin:
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Hm, was steht denn in den Logs?

Ansonsten würde ich zu diesem speziellen Problem bei CBack im Forum nachfragen.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Antworten

Zurück zu „Coding & Technik“