Zur Navigation

Fehler im Affenformular [2]

11 andehrl

sorry für die blöde frage. die class muss natürlich hierher:

<select name="abfahrtsort" class="<?php echo $class['abfahrtsort'] ?>">

vielen, vielen dank für deine hilfe :-)

21.03.2011 21:45

12 andehrl

ich hab jetzt doch noch ein problem: beim laden der seite hat die class =normal keine wirkung. stellt das stript beim verschicken einen fehler fest. wird das entsprechende feld mit class=error angezeigt, das fehlerfreie feld wird dann mit class=normal angezeigt. die definierten klassen wirken also erst wenn das formular abgeschickt wird. natürlich sollte class=normal aber schon nach dem ersten hochladen der seite das feld gestalten. wie mache ich das?

das script schaut jetzt so aus:


<?php

if(isset($_POST['send']))
{
 
 $error = array();
 
 $abfahrtsort = (string)$_POST['abfahrtsort'];
 $zielort = (string)$_POST['zielort'];
 
 $class['abfahrtsort'] = 'normal';
 $class['zielort'] = 'normal';
 
 if ($_POST['abfahrtsort'] == 'Abfahrtsort') {
    $error['abfahrtsort_false'] = 'Abfahrtsort';
	$class['abfahrtsort'] = 'error';
}
 
  if ($_POST['zielort'] == 'Zielort') {
    $error['zielort_false'] = 'Zielort';
	$class['zielort'] = 'error';
}
 
 
 if(!$error)
 {
  
  header("Location: absoluter_pfad/log_form.php");
 }
}

?>

<?php

if(isset($_POST['send']) && count($error) > 0)
{
 echo 'Sie haben folgende Pflichfelder nicht ausgefüllt! ';
 
 foreach($error as $msg)
 {
  echo ' : '.$msg.'';
 }
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
<style type="text/css">
<!--
@import url("schriftangaben1111111111.css");
.error {
	border: 1px solid #F00;
	color: #000;
	width: 120px;
}
.normal {
	width: 120px;
}
-->
</style>
</head>

<body>
<form action="<?php echo htmlentities($_SERVER['SCRIPT_NAME']) ?>" method="post">
  <p>
    <select name="abfahrtsort" class="<?php echo $class['abfahrtsort'] ?>">
      <option value="Abfahrtsort" selected <?php if($abfahrtsort =="Abfahrtsort") echo 'selected="selected"'; ?>>Abfahrtsort</option>
              <option value="Aachen"<?php if($abfahrtsort =="Aachen") echo 'selected="selected"'; ?>>Aachen</option>
              <option value="Aalen"<?php if($abfahrtsort =="Aalen") echo 'selected="selected"'; ?>>Aalen</option>
              <option value="Achern"<?php if($abfahrtsort =="Achern") echo 'selected="selected"'; ?>>Achern</option>
              <option value="Ahlen"<?php if($abfahrtsort =="Ahlen") echo 'selected="selected"'; ?>>Ahlen</option>
              <option value="Albstadt"<?php if($abfahrtsort =="Albstadt") echo 'selected="selected"'; ?>>Albstadt</option>
              <option value="Alsfeld"<?php if($abfahrtsort =="Alsfeld") echo 'selected="selected"'; ?>>Alsfeld</option>
              <option value="Altenburg"<?php if($abfahrtsort =="Altenburg") echo 'selected="selected"'; ?>>Altenburg</option>

...

22.03.2011 18:32 | geändert: 22.03.2011 18:58

13 Jörg Kruse

Du definierst "$class['abfahrtsort'] = 'normal';" innerhalb von "if (isset($_POST['send'])) { }" - also wird es auch nur nach dem Absenden angezeigt

22.03.2011 18:59

14 andehrl

ok, hab es nach oben geschoben. jetzt geht es :-)




in einem anderen beitrag hast du folgendes geschrieben:

Wenn die Liste nur aus den Namen besteht und in einem Array erfasst ist, kannst du die option Tags in einer foreach Schleife dynamisch erstellen, also so in etwa:

foreach ($cities as $city) {
    echo '<option value="' . htmlspecialchars($city) . '" ' . (($sel == $city ) ? 'selected="selected"' : '') . '>' . htmlspecialchars($city) . '</option>';
}
Das Array $cities enthält hierbei die Städtenamen


die frage die ich hierbei habe ist ersten, wie das array $cities ausschaut?

also zb.

$cities=(Abfahrtsort, Aachen, Aalen, ...)

oder wie muss das assehen.

und zweitens ob der code dann statt:

<select name="abfahrtsort" class="<?php echo $class['abfahrtsort'] ?>">
      <option value="Abfahrtsort" selected <?php if($abfahrtsort =="Abfahrtsort") echo 'selected="selected"'; ?>>Abfahrtsort</option>

einfach so ersetzt wird:

<select name="abfahrtsort" class="<?php echo $class['abfahrtsort'] ?>">
      foreach ($cities as $city) {
    echo '<option value="' . htmlspecialchars($city) . '" ' . (($sel == $city ) ? 'selected="selected"' : '') . '>' . htmlspecialchars($city) . '</option>';
}

wie würde ich dann eine vorselection für das feld auswählen?

22.03.2011 19:37

15 andehrl

die foreach Schleife muss wohl erst mal warten. ich habe das affenformular in mein script eingesetzt. bei einem fehler wird der entsprechende fehler wie gewünscht angezeigt. wähle ich aber eine stadt aus und wirft das affenformular keine fehlermelungen aus, funktioniert die weiterleitung nicht.

die seite lädt sich wieder neu und zeigt oberhalb diese fehlermeldung an:

Warning: Cannot modify header information - headers already sent by (output started at /is/htdocs/wp10548565_XUUKREW8G9/www/umzuggelegenheit/Kopie von 2a-Mit-Umzug-Angebote-Einfache-Suche.php:88) in /is/htdocs/wp10548565_XUUKREW8G9/www/umzuggelegenheit/Kopie von 2a-Mit-Umzug-Angebote-Einfache-Suche.php on line 117

mein code schaut nun so aus: zeile 117 ist der header. habs fett markiert.
<?php require_once('Connections/Eingabe.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case 'text':
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_Eingabe, $Eingabe);
$query_R1 = "SELECT Eingabe.id, Eingabe.abfahrtsort, Eingabe.zielort, Eingabe.tag, Eingabe.monat, Eingabe.jahr, Eingabe.stunde, Eingabe.`minute`, Eingabe.hinfahrtladeflaeche, Eingabe.hilfeeinausladen, Eingabe.rueckfahrt, Eingabe.rueckfahrtladeflaeche, Eingabe.beschreibung, Eingabe.preis, Eingabe.marke, Eingabe.model, Eingabe.laderaumhoehe, Eingabe.laderaumbreite, Eingabe.laderaumlaenge, Eingabe.laderaumvolumen, Eingabe.treibstoff, Eingabe.getriebe, Eingabe.tempo, Eingabe.nutzername, Eingabe.passwort, Eingabe.mail, Eingabe.handy, Eingabe.tel FROM Eingabe 
WHERE ";
$colname_R1 = "KEIN EINTRAG";
if (isset($_POST['abfahrtsort']) && $_POST['abfahrtsort'] != 'Abfahrtsort') {
    $query_R1 .= " abfahrtsort = " . GetSQLValueString($colname_R1, 'text') . " AND ";
}
$colname1_R1 = "KEIN EINTRAG";
if (isset($_POST['zielort']) && $_POST['zielort'] != 'Zielort') {
   $query_R1 .= " zielort  = " . GetSQLValueString($colname1_R1, 'text') . " AND ";
}
$colname2_R1 = "NULL";
if (isset($_POST['tag']) && $_POST['tag'] != '-') {
    $query_R1 .= " tag = " . GetSQLValueString($colname2_R1, 'int') . " AND ";
}
$colname4_R1 = "NULL";
if (isset($_POST['jahr']) && $_POST['jahr'] != '-') {
    $query_R1 .= " jahr = " . GetSQLValueString($colname4_R1, 'int') . " AND ";
}
$colname3_R1 = "NULL";
if (isset($_POST['monat']) && $_POST['monat'] != '-') {
    $query_R1 .= " monat = " . GetSQLValueString($colname3_R1, 'int') . " AND ";
}
$colname5_R1 = "NULL";
if (isset($_POST['stunde']) && $_POST['stunde'] != '-') {
    $query_R1 .= " stunde = " . GetSQLValueString($colname5_R1, 'int') . " AND ";
}
$colname6_R1 = "NULL";
if (isset($_POST['minute']) && $_POST['minute'] != '-') {
    $query_R1 .= " minute = " . GetSQLValueString($colname5_R1, 'int') . " AND ";
}
$colname7_R1 = "NULL";
if (isset($_POST['hinfahrtladeflaeche']) && $_POST['hinfahrtladeflaeche'] != 'Angaben zur Ladefläche') {
    $query_R1 .= " hinfahrtladeflaeche = " . GetSQLValueString($colname7_R1, 'text') . " AND ";
}
if (isset($_POST['hilfeeinausladen']) && $_POST['hilfeeinausladen'] != '-') {
    $query_R1 .= " (hilfeeinausladen = " . GetSQLValueString($_POST['hilfeeinausladen'], 'text') . " OR hilfeeinausladen Like '-') AND ";
}
if (isset($_POST['rueckfahrt']) && $_POST['rueckfahrt'] != '-') {
    $query_R1 .= " (rueckfahrt = " . GetSQLValueString($_POST['rueckfahrt'], 'text') . " OR rueckfahrt Like '-') AND ";
}
if (isset($_POST['rueckfahrtladeflaeche']) && $_POST['rueckfahrtladeflaeche'] != 'K.A. zur Ladefläche') {
    $query_R1 .= " (rueckfahrtladeflaeche = " . GetSQLValueString($_POST['rueckfahrtladeflaeche'], 'text') . " OR rueckfahrtladeflaeche Like 'K.A. zur Ladefläche') AND ";
}
$query_R1 .= "1 ORDER BY Eingabe.monat, Eingabe.tag, Eingabe.stunde, Eingabe.`minute`";
$R1 = mysql_query($query_R1, $Eingabe) or die(mysql_error());
$row_R1 = mysql_fetch_assoc($R1);
$totalRows_R1 = mysql_num_rows($R1);$colname_R1 = "KEIN EINTRAG";
if (isset($_POST['abfahrtsort'])) {
  $colname_R1 = $_POST['abfahrtsort'];
}

?>

<?php

 $class['abfahrtsort'] = 'StaedtenamenKopie';
 $class['zielort'] = 'StaedtenamenKopie';

if(isset($_POST['send']))
{
 
 $error = array();
 
 $abfahrtsort = (string)$_POST['abfahrtsort'];
 $zielort = (string)$_POST['zielort'];
 

 
 if ($_POST['abfahrtsort'] == 'Abfahrtsort') {
    $error['abfahrtsort_false'] = '';
	$class['abfahrtsort'] = 'error';
}
 
  if ($_POST['zielort'] == 'Zielort') {
    $error['zielort_false'] = '';
	$class['zielort'] = 'error';
}
 
 
 if(!$error)
 {
  
  header("Location: http://www.mit-umzug-gelegenheit.de/2b-Mit-Umzug-Angebote-Einfach-Ergebnis.php");
 }
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

...

23.03.2011 00:00

16 Jörg Kruse

$cities=(Abfahrtsort, Aachen, Aalen, ...)

Erstens fehlt hier das Schlüsselwort "array" und zweitens müssens Strings wie hier die Städtenamen in Anführungszeichen eingebettet sein

Zu ersterem siehe auch:

http://php.net/manual/de/language.types.array.php

Die Funktion header() muss vor der ersten HTML-Ausgabe angewandt werden. An dieser Stelle gibst du eine Leerzeile aus:

?>

<?php

Siehe hierzu auch:

http://php.net/manual/de/function.header.php

23.03.2011 00:11 | geändert: 23.03.2011 00:13

17 andehrl

jetzt werde ich zwar weitergeleitet, aber bei der ergebnisausgabe werde die bedingungen (fett) nicht berücksichtigt.sämliche städte, die in der datenbank hinterlegt sind werden mir angezeigt.


<?php require_once('Connections/Eingabe.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case 'text':
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_Eingabe, $Eingabe);
$query_R1 = "SELECT Eingabe.id, Eingabe.abfahrtsort, Eingabe.zielort, Eingabe.tag, Eingabe.monat, Eingabe.jahr, Eingabe.stunde, Eingabe.`minute`, Eingabe.hinfahrtladeflaeche, Eingabe.hilfeeinausladen, Eingabe.rueckfahrt, Eingabe.rueckfahrtladeflaeche, Eingabe.beschreibung, Eingabe.preis, Eingabe.marke, Eingabe.model, Eingabe.laderaumhoehe, Eingabe.laderaumbreite, Eingabe.laderaumlaenge, Eingabe.laderaumvolumen, Eingabe.treibstoff, Eingabe.getriebe, Eingabe.tempo, Eingabe.nutzername, Eingabe.passwort, Eingabe.mail, Eingabe.handy, Eingabe.tel FROM Eingabe 
WHERE ";
$colname_R1 = "KEIN EINTRAG";
if (isset($_POST['abfahrtsort']) && $_POST['abfahrtsort'] != 'Abfahrtsort') {
    $query_R1 .= " abfahrtsort = " . GetSQLValueString($colname_R1, 'text') . " AND ";
}
$colname1_R1 = "KEIN EINTRAG";
if (isset($_POST['zielort']) && $_POST['zielort'] != 'Zielort') {
   $query_R1 .= " zielort  = " . GetSQLValueString($colname1_R1, 'text') . " AND ";
}
$colname2_R1 = "NULL";
if (isset($_POST['tag']) && $_POST['tag'] != '-') {
    $query_R1 .= " tag = " . GetSQLValueString($colname2_R1, 'int') . " AND ";
}
$colname4_R1 = "NULL";
if (isset($_POST['jahr']) && $_POST['jahr'] != '-') {
    $query_R1 .= " jahr = " . GetSQLValueString($colname4_R1, 'int') . " AND ";
}
$colname3_R1 = "NULL";
if (isset($_POST['monat']) && $_POST['monat'] != '-') {
    $query_R1 .= " monat = " . GetSQLValueString($colname3_R1, 'int') . " AND ";
}
$colname5_R1 = "NULL";
if (isset($_POST['stunde']) && $_POST['stunde'] != '-') {
    $query_R1 .= " stunde = " . GetSQLValueString($colname5_R1, 'int') . " AND ";
}
$colname6_R1 = "NULL";
if (isset($_POST['minute']) && $_POST['minute'] != '-') {
    $query_R1 .= " minute = " . GetSQLValueString($colname5_R1, 'int') . " AND ";
}
$colname7_R1 = "NULL";
if (isset($_POST['hinfahrtladeflaeche']) && $_POST['hinfahrtladeflaeche'] != 'Angaben zur Ladefläche') {
    $query_R1 .= " hinfahrtladeflaeche = " . GetSQLValueString($colname7_R1, 'text') . " AND ";
}
if (isset($_POST['hilfeeinausladen']) && $_POST['hilfeeinausladen'] != '-') {
    $query_R1 .= " (hilfeeinausladen = " . GetSQLValueString($_POST['hilfeeinausladen'], 'text') . " OR hilfeeinausladen Like '-') AND ";
}
if (isset($_POST['rueckfahrt']) && $_POST['rueckfahrt'] != '-') {
    $query_R1 .= " (rueckfahrt = " . GetSQLValueString($_POST['rueckfahrt'], 'text') . " OR rueckfahrt Like '-') AND ";
}
if (isset($_POST['rueckfahrtladeflaeche']) && $_POST['rueckfahrtladeflaeche'] != 'K.A. zur Ladefläche') {
    $query_R1 .= " (rueckfahrtladeflaeche = " . GetSQLValueString($_POST['rueckfahrtladeflaeche'], 'text') . " OR rueckfahrtladeflaeche Like 'K.A. zur Ladefläche') AND ";
}
$query_R1 .= "1 ORDER BY Eingabe.monat, Eingabe.tag, Eingabe.stunde, Eingabe.`minute`";
$R1 = mysql_query($query_R1, $Eingabe) or die(mysql_error());
$row_R1 = mysql_fetch_assoc($R1);
$totalRows_R1 = mysql_num_rows($R1);$colname_R1 = "KEIN EINTRAG";
if (isset($_POST['abfahrtsort'])) {
  $colname_R1 = $_POST['abfahrtsort'];
}

?>
<?php

 $class['abfahrtsort'] = 'StaedtenamenKopie';
 $class['zielort'] = 'StaedtenamenKopie';

if(isset($_POST['send']))
{
 
 $error = array();
 
 $abfahrtsort = (string)$_POST['abfahrtsort'];
 $zielort = (string)$_POST['zielort'];
 

 
 if ($_POST['abfahrtsort'] == 'Abfahrtsort') {
    $error['abfahrtsort_false'] = '';
	$class['abfahrtsort'] = 'error';
}
 
  if ($_POST['zielort'] == 'Zielort') {
    $error['zielort_false'] = '';
	$class['zielort'] = 'error';
}
 
 
 if(!$error)
 {
    header("Location: http://www.mit-umzug-gelegenheit.de/2b-Mit-Umzug-Angebote-Einfach-Ergebnis.php");
 }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

...

23.03.2011 00:31

18 Jörg Kruse

Bei einer Weiterleitung gehen die POST Daten verloren. Warum willst du da überhaupt weiterleiten?

24.03.2011 07:46

19 andehrl

Zitat von Jörg
Bei einer Weiterleitung gehen die POST Daten verloren. Warum willst du da überhaupt weiterleiten?

ich habe das script so verstanden, dass in der form-action festgelegt wird, dass das affenformular sich bei einem fehler selbst aufruft und dass im header festgelegt wird wohin das formular weitergeleitet wird wenn keine fehler auftreten.

der nutzer kann auf meiner seite eine suche abschicken und dafür best. kriterien festlegen. die ergebnisseite auf die die suchseite weitergeleitet wird soll dann die nach den kriterien entsprechende resultate anzeigen.

ich habe noch ein anderes affenformular gefunden, dass mir ein wenig komplexer schien. ich habe in diesem script keine header-anweisung gefunden, was mich irritiert hat.

verstehe ich hier vieleicht etwas falsch? und wie kann ich die post-daten nach der prüfung und abschicken des formulars erhalten?

24.03.2011 14:28

20 Jörg Kruse

ich habe das script so verstanden, dass in der form-action festgelegt wird, dass das affenformular sich bei einem fehler selbst aufruft und dass im header festgelegt wird wohin das formular weitergeleitet wird wenn keine fehler auftreten.

Eien Weiterleitung macht aber nur Sinn, wenn du vorher etwas in die Datenbank abspeicherst, was du nach der Weiterleitung gegebenenfalls auch wieder aus der Datenbank abfragen könntest. Wenn du Inhalte entsprechend dem, was in $_POST übermittelt wird, ausgeben möchtest, dann geht das nur, wenn du nicht weiterleitest.

24.03.2011 20:59 | geändert: 24.03.2011 21:00