Zum Inhalt springen
Der Picknicker

allgemeine Programmierfragen

Empfohlene Beiträge

Noch ne Frage:

Ein Newseintragescript soll das sein, allerdings macht er nix, wenn man auf den Button klickt. Warum nicht?

 if(isset($_POST['submit']) AND "News eintragen" == $_POST['submit']) {

 	$sql= "INSERT INTO ehemaligen_news

 		(headline,text,date,zeig)

 		   VALUES

 		('".$_POST['headline']."',

 		 '".$_POST['text']."',

 		 NOW(),

 		 '1')";

 	mysql_query($sql) OR die(mysql_error());

 	echo "News wurde eingetragen.<br>";

 	}

 echo "Hier können sie eine neue News schreiben";

 

 echo "<form action=\"index.php?section=admin&site=news\" name=\"news\" method=\"post\">"; <- Wird also an selbe Seite gesendet

 echo "<table><tr><td>Überschrift: </td>";

 echo "<td><input type=\"text\" name=\"headline\"></td></tr>";

 echo "<tr><td>Datum/Zeit</td>";

 echo "<td> Wird automatisch eingefügt </td></tr>";

 echo "<tr><td>Inhalt: </td>";

 echo "<td><textarea name=\"text\" rows=\"5\" cols=\"50\"></textarea></td></tr></table></form>";

 echo "<input type=\"submit\" name=\"submit\" value=\"News eintragen\"></form><br>";

 echo "<a href=\"index.php?section=admin\">Zurück</a>";

Bearbeitet von Oberon
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Formular wird nicht abgesendet, da du bereits das Formular mit einem </form> vor dem Absenden-Button schließt.

In dieser Zeile:

echo "<td><textarea name=\"text\" rows=\"5\" cols=\"50\"></textarea></td></tr></table></form>";

Allerdings ist dein Code auch unsauber und hat Sicherheitslücken. Mal ein Beispiel, wie ich das Ganze schreiben würde:

<?php

// ...



if (isset($_POST['submit']) && (int)$_POST['formid'] == 1) {

  

  // Benutzereingaben maskieren - evtl. verfeinern auf magic_quotes_gpc etc.

  array_walk($_POST, create_function('&$sItem, $mKey', '$sItem = mysql_real_escape_string($sItem);'));

  

  $sql = 'INSERT INTO

`ehemaligen_news`

(`headline`,

`text`,

`date`,

`zeig`)

VALUES

("'.$_POST['headline'].'",

"'.$_POST['text'].'",

NOW(),

1)';

  

  mysql_query($sql);

  

  if (mysql_affected_rows() < 1)

	echo 'News wurde nicht eingetragen.<br />'."\n";

  else

	echo 'News wurde eingetragen.<br />'."\n";

  

}

	

echo <<<HTML

Hier können sie eine neue News schreiben

<form action="{$_SERVER['SCRIPT_NAME']}?section=admins&site=news" name="news" method="post">

<!-- ... -->

<input type="submit" name="submit" value="News eintragen" />

<input type="hidden" name="formid" value="1" />

</form>

<!-- ... -->

HTML;



// ...

?>

MfG

Monoman

Link zu diesem Kommentar
Auf anderen Seiten teilen

Och mann ey. Immer diese doofen Fehler.

Und ehrlich gesagt verstehe ich nicht so ganz, was das array_walk da macht.

E: Und wie gesagt: Ich bin noch blutjunger Anfänger.

Bearbeitet von Oberon
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ich hätte mal ne Java-Frage.

Ich bastel grade für die Schule einen Pong-Klon. Später soll das Applet noch verschiedene Zusatzfunktionen bieten wie verschiedene Schwierigkeitsgrade der KI, klassischer 2-Spieler Modus, variable Spielgeschwindigkeit und einen Umschalter zwischen Retro-Pong in grün-schwarzer Optik mit alten Sounds und einer modernen Variante mit schönerer Grafik und moderneren Sounds.

Naja wie auch immer; momentan bin ich noch ziemlich am Anfang. Bis jetzt bewegt sich der Ball hin und her und Prallt an den Cursorn sowie am oberen und unteren Bildrand ab. Den rechten Cursor kann man schon bewegen, der linke wird mit einer unglaublich komplexen KI nach dem Motto y_cursor=y_ball gesteruert^^

So. Jetzt wollte ich schonmal eine Pause-Funktion einbauen. Wenn man auf die entsprechende Taste drückt, wird folgendes ausgeführt:

System.out.println("Ende gedrückt");

			if(bSpiel) bSpiel=false;

			if(!bSpiel)	bSpiel=true;
Das "Ende gedrückt" wird, wie man sieht, in der Konsole ausgegeben und ist nur zum überprüfen, ob der Tastendruck überhaupt "geklappt" hat. Problem: So wie es momentan steht, gibt die Konsole zwar brav das "Ende gedrückt" aus, im Applet Viewer passiert aber gar nichts. Wenn ich eine dieser beiden Varianten benutze:
if(bSpiel) bSpiel=false;

			else if(!bSpiel)bSpiel=true;
if(bSpiel) bSpiel=false;

			else bSpiel=true;

Dann hält das Spiel zwar an, wenn Ende gedrückt wird, beim erneuten Drücken wird aber wieder nur "Ende gedrückt" ausgegeben, sonst passiert nichts.

Irgend eine Idee, woran das liegen könnte?

Ich kann bei Bedarf auch gerne mal den kompletten Code posten :)

mfg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich bin zwar kein Java-Mensch, aber vllt. mal ausgeben lassen, ob auch beide Seiten der Verzweigung jeweils aufgerufen werden mit bspw.

// ...



if (bSpiel) {

  

  System.out.println("if-block: " + bSpiel.toString());

  bSpiel = false;

  

} else {

  

  System.out.println("else-block: " + bSpiel.toString());

  bSpiel = true;

  

}



// ...

Ich weiß jetzt allerdings nicht, ob das syntaktisch so korrekt ist. ^_^

Vllt. wird die Variable auch irgendwo anders im Programm während der Laufzeit noch mal überschrieben, das würde ich mal überprüfen.

MfG

Monoman

Link zu diesem Kommentar
Auf anderen Seiten teilen

Werden sie, die Konsole sagt:

Ende gedrückt

if-block: true

Ende gedrückt

else-block: false

Ende gedrückt

if-block: true

Ende gedrückt

else-block: false

Wenn man 4 mal drückt.

Der Boolean wird von Fräulein Else also auch auf true gesetzt.

Komische Sache...

mfg

e: Habs mittlerweile geschafft, an dem if/else lag es aber nicht :)

Bearbeitet von Dr. Dünnpfiff
Link zu diesem Kommentar
Auf anderen Seiten teilen

Habe ein kleines Problemchen.

Ich hab ein Select aus einem Script, bei dem der Benutzer seinen Leistungskurs angeben soll, mit diversen Einträgen:

<td><select name=\"lk2\" id=\"lk2\">

	<option value=\"Mathe\">Mathe</option>

	<option value=\"Deutsch\">Deutsch</option>

	<option value=\"Englisch\">Englisch</option>

	<option value=\"Franz&ouml;sisch\">Franz&ouml;sisch</option>

	<option value=\"Geschichte\">Geschichte</option>

	<option value=\"Biologie\">Biologie</option>

	<option value=\"Physik\">Physik</option>

	<option value=\"Chemie\">Chemie</option>

	<option value=\"Informatik\">Informatik</option>

	<option value=\"Geografie\">Geografie</option>

	<option value=\"Kunst\">Kunst</option>

	<option value=\"Musik\">Musik</option>

	<option value=\"Politik\">Politik</option>

	</select><br></td></tr>

Der Wert wird dann in die Datenbank gespeichert.

Wenn dieses Script nun ausgeführt wird und nochmal geladen wird, wird der erste Eintrag des Selects angezeigt. Ich hätte es aber gern so, dass der momentan in der Datenbank gespeicherte Wert selected sein soll. Wie krieg ich das hin?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könntest du deine Tabellendefinition hier evtl. posten?

In welcher Sprache ist denn deine Anwendung geschrieben?

MfG

Monoman

Link zu diesem Kommentar
Auf anderen Seiten teilen

Im Prinzip musst du dann den Wert aus der DB holen, die Optionen überprüfen lassen und

dann in den Tag ein selected, muss dann ungefähr so ausschauen :<option value=\"bla\" selected>bla</option>

siehe hier : Selfhtml.org

Link zu diesem Kommentar
Auf anderen Seiten teilen

@XXen: Das wie ich es prinzipiell machen muss weiß ich, das wie ich es mit der HTML-Syntax mache auch.

Das was ich gerne wissen würde, wie es genau aussehen muss.

@Monoman:

Die komplette Tabelle sieht so aus:

echo "<table><tr><td>Was machen Sie jetzt (Arbeit/Studium)?: </td>";

echo "<td><input type=\"text\" name=\"tatigkeit\" id=\"tatigkeit\" value=\"".$user['tatigkeit1']."\"><br></td></tr>";

echo "<tr><td>Ihr Abiturjahrgang: </td>";

echo "<td><input type=\"text\" name=\"jahrgang\" id=\"jahrgang\" value=\"".$user['abijahr1']."\"><br></td></tr>";

echo "<tr><td>Leistungskurs 1 (Hauptfach): </td>";

echo "<td><select name=\"lk1\" id=\"lk1\">

	<option value=\"Mathe\">Mathe</option>

	<option value=\"Deutsch\">Deutsch</option>

	<option value=\"Englisch\">Englisch</option>

	<option value=\"Französisch\">Französisch</option>

	<option value=\"Geschichte\">Geschichte</option>

	<option value=\"Biologie\">Biologie</option>

	<option value=\"Physik\">Physik</option>

	<option value=\"Chemie\">Chemie</option>

	<option value=\"Informatik\">Informatik</option>

	<option value=\"Geografie\" >Geografie</option>

	<option value=\"Kunst\">Kunst</option>

	<option value=\"Musik\">Musik</option>

	<option value=\"Politik\">Politik</option>

	</select><br></td></tr>";

echo "<tr><td>Hat ihnen der Leistungskurs 1 im Studium/bei der Arbeit geholfen?</td>";

echo "<td><textarea name=\"meinung1\" id=\"meinung1\" cols=\"50\" rows=\"5\">".$user['gutschlecht1']."</textarea><br></td></tr>";

echo "<tr><td>Leistungskurs 2 (weiteres Fach): </td>";

echo "<td><select name=\"lk2\" id=\"lk2\">

	<option value=\"Mathe\">Mathe</option>

	<option value=\"Deutsch\">Deutsch</option>

	<option value=\"Englisch\">Englisch</option>

	<option value=\"Französisch\">Französisch</option>

	<option value=\"Geschichte\">Geschichte</option>

	<option value=\"Biologie\">Biologie</option>

	<option value=\"Physik\">Physik</option>

	<option value=\"Chemie\">Chemie</option>

	<option value=\"Informatik\">Informatik</option>

	<option value=\"Geografie\">Geografie</option>

	<option value=\"Kunst\">Kunst</option>

	<option value=\"Musik\">Musik</option>

	<option value=\"Politik\">Politik</option>

	</select><br></td></tr>";

echo "<tr><td>Hat ihnen der Leistungskurs 2 im Studium/bei der Arbeit geholfen?</td>";

echo "<td><textarea name=\"meinung2\" id=\"meinung2\" cols=\"50\" rows=\"5\">".$user['gutschlecht2']."</textarea><br></td></tr></table>";

Geschrieben ist es in PHP.

Da wird zwar ziemlich viel unsauber geschrieben sein, aber ich würde dich bitten, dass jetzt erstmal außenvor zu lassen ^^"

Aussehen tut die Seite dann so:

post-15867-1192391559_thumb.jpg

Und wie man sehen kann ist das Problem eben, dass die Dropdown-Menüs bei Neuladen der Seite eben wieder auf die erste option fallen. Und das wird für den Benutzer dann sicherlich sehr nervig.

Deswegen soll er beim ersten Dropdown die option, deren value gleich $user['lk1'] ist selecten und beim 2. Dropdown dann eben analog.

Nur weiß ich nicht, wie ich auf den value der option zugreifen soll.

Bearbeitet von Oberon
Link zu diesem Kommentar
Auf anderen Seiten teilen

Möglicherweise (ist schon spät und ich hab keine Lust es jetzt direkt zu testen) kannst du das ganze über ein assoziatives Array machen.

$rem_select = array ( 

	 'Mathe' => '',

	 'Deutsch' => '',

	 'Englisch' => '' 

//usw.... 

	   );

$rem_select[$user['lk1']] = 'selected';

echo "<td><select name=\"lk1\" id=\"lk1\">

	<option value=\"Mathe\"  ".$rem_select['Mathe'].">Mathe</option>  /*Beispiel zum einfuegen, bei den Restlichen Einträgen analog */

	<option value=\"Deutsch\">Deutsch</option>

	<option value=\"Englisch\">Englisch</option>

	<option value=\"Französisch\">Französisch</option>

	<option value=\"Geschichte\">Geschichte</option>

	<option value=\"Biologie\">Biologie</option>

	<option value=\"Physik\">Physik</option>

	<option value=\"Chemie\">Chemie</option>

	<option value=\"Informatik\">Informatik</option>

	<option value=\"Geografie\" >Geografie</option>

	<option value=\"Kunst\">Kunst</option>

	<option value=\"Musik\">Musik</option>

	<option value=\"Politik\">Politik</option>

	</select><br></td></tr>";

ist zwar keine schöne Lösung, und ich weiss nicht, ob die Schachtelung des Arrays so zulässig ist, aber rein theoretisch müsste es gehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo :unsure:

Ich hab mal wieder ein kleines Problem, bitte nicht hauen ^^"

Ich habe ein Skript login.php, bei dem man erst ein Passwort eingeben muss, damit man auf eine liste weitergeleitet wird. Ich weiß selbst, dass das Ding total unsicher ist, weil man die Liste mit dem Direktlink auch ohne Passwort einsehen kann.

Ist in dem Fall aber nicht so wichtig.

Ich hab das so gemacht, aber das geht nicht. Ich weiß nicht warum Oo

Er macht nach einem Klick auf Liste einsehen ganz einfach garnichts, außer das er die login.php neu lädt. Aber die Verzweigung geht er glaub ich garnicht durch.

<?

if (isset($_POST['submit']) AND "Liste einsehen" == $_POST['submit'])

	{

	switch ($_POST['pw'])

	{

	case 'hallo': include "liste.php";

				break;

		default: echo "<div style=\"padding: 2px;background: #FF8080;border: 1px solid black\">Sie haben ein falsches Passwort eingegeben.</div>";	

			 break;

		}

		}

echo "Bitte das Passwort eingeben, um die Liste einzusehen.";

echo "<form name=\"pass\" action=\"login.php\">";

echo "<table>";

echo "<tr>";

echo "<td>Passwort: </td><td><input type=\"password\" id=\"pw\" name=\"pw\" value=\"\"></td>";

echo "</tr>";

echo "</table><br>";

echo "<input type=\"submit\" name=\"submit\" id=\"submit\" value=\"Liste einsehen\">";

echo "</form>";

?>

Geht das überhaupt so, oder hab ich irgendwas übersehen, was PHP so nicht macht? :unsure:

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich kann dir jetzt auch nicht genau sagen, woran es liegen könnte.

Auf alle Fälle unten noch beim Formular Header METHOD = \"POST\" einfügen,

möglicherweise versuchen die übergebenen Variablen per $_REQUEST[] zu holen und diese erst auf lokale Variablen übertragen, bevor man damit eine Funktion füttert.

var_dump() ist im übrigen auch eine feine Funktion, um zu schauen, wo es hängen könnte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Komisch Oo

var_dump($_POST['pw']; sagt NULL.

Wenn ich

$pw = $REQUEST['pw'];

echo $pw;

mache, gibt er mir zwar die Variable richtig aus, wenn ich ihm dann aber im Switch

switch ($pw)

{

Anweisungen

}

sage, macht er genausowenig wie vorher.

Aus irgendeinem Grund übergibt er die Formularsachen nicht.

Dadurch ergibt die Bedingung in der Verzweigung falsch. Wenn ich die Anweisungen in den Else-Teil der Verzweigung haue, klappt es.

Aber warum übergibt er die POST-Sachen nicht? Ich mein eigentlich übergibt er sie ja, sie sind ja in der URL zu sehen. Aber warum kann ich nicht drauf zugreifen?

Bearbeitet von Oberon
Link zu diesem Kommentar
Auf anderen Seiten teilen

bei POST siehst du sie nicht in der URL, wenn sie in der URL sind laufen sie über $_GET.

Allerdings sind $_POST[] und $_GET[] auf manchen Servern deaktiviert und $_REQUEST[] holt die Daten aus allem verfügbaren, ob das nun Sessions, Post-Daten oder Cookies sind.

vielleicht ist der switch bei dir nur falsch aufgebaut

hier gibts hilfe selfphp.de

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden


  • Wer ist Online   0 Benutzer

    • Keine registrierten Benutzer online.
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.