Website für Themenwahl erstellen

Noch keine Zeit gehabt, wird heute wohl auch nichts mehr.
Die hier gepostete Version ist etwas alt, daher lad ich es noch mal hoch.

@little_skunk Poste mal bitte die URL + Benutzername und Passwort, kann mich nicht mehr erinnern^^

:fp

Habe gerade entdeckt, dass der Befehl ja zweimal die Spalte idSchueler liefert, einmal aus der Tabelle schueler und einmal aus auswahl - ich kann da wohl nur auf idSchueler von auswahl zugreifen, und Schüler ohne Thema sind da ja nicht drin. Ich brauche aber auch die idSchueler der Schüler ohne Thema
Hier noch mal die Abfrage:
PHP:
SELECT * FROM schueler
INNER JOIN lehrer
ON schueler.Klassenlehrer = lehrer.idLehrer
LEFT JOIN auswahl
ON auswahl.idSchueler = schueler.idSchueler
LEFT JOIN themen
ON auswahl.idThema = themen.idThema
ORDER BY schueler.SName ASC;

PHP:
SELECT schueler.idSchueler as abc, auswahl.idSchueler as def FROM ...

In deinem PHP Code hättest du dann 2 Spalten. Eine heißt abc und beinhaltet die ID des schülers und die 2. heißt def und beinhaltet die gleiche ID kann aber auch Null sein wegen dem Left Join. Solltest dann natürlich vernünftige Spaltennamen nehmen und nicht abc und def :)
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Danke an Kasn und little_skunk :) Jetzt geht's und Kasns Tipp werde ich integrieren.
 
Ich habe gerade etwa 30% des Codes kommentiert [Eckige Augen] und nun wieder ein kleines Problem:
Da die Klasse im Thema als "112" gespeichert ist, die Klasse jedoch als 11/2 ausgegeben werden soll, weiß ich nicht, wie ich einen String aufteile, der keine Trennzeichen o. ä. hat (explode() geht ja nicht ohne Trennzeichen).
Meine Suche auf php.net war leider bis jetzt erfolglos.

#Edit: Ach ja, neben mir liegt das PHP Kochbuch rum und da ist mir sofort substr ins Auge gefallen
-> Problem gelöst.
 
Zuletzt bearbeitet:
Hab gerade entdeckt, wie man die Variablen variabel gestaltet :-)D) was auch klappt.

Nur läuft die folgende Schleife viermal durch (was sie auch soll) und wird dreimal ausgeführt -> ich habe aber nur 2 Fächer eingegeben, sprich ${idFach.$i} müsste nur bis $i=2 <> "" sein und so auch nur zweimal in die Tabelle eingetragen werden.
PHP:
<?php
	for($i = 1; $i <= 4; $i++) {
	echo '<td>Fach'.$i.':<br>';
	echo '<select name="idFach'.$i.'">';
	echo '<option value="">------</option>';
	$SQLString = "SELECT faecher.idFach, faecher.Kurzbez FROM faecher";
	$SQLString .= " ORDER BY Kurzbez ASC;";
	$Ergebnis = mysql_query($SQLString,$verbindung);
	if ($Ergebnis)
	{
		$Datensatz = mysql_fetch_array($Ergebnis);
		while ($Datensatz)
		{
			echo '<option value="' . $Datensatz["idFach"] . '">' . $Datensatz["Kurzbez"] . '</option>';
			$Datensatz = mysql_fetch_array($Ergebnis);
		}
	}
	else
	{
		echo mysql_error();
		echo "Fehler, Fächer-Drop-Ddown Menü";
	}
	?>
	</select>
	</td>
	<?php
}
?>
PHP:
//für $idFach1,2,3,4
for($i = 1; $i <= 4;$i++) {
	${idFach.$i} = $_POST["idFach$i"];
	$idFach = ${idFach.$i};

	if($idFach <> "") {
		$SQLFaecher = "INSERT INTO faecherkombination (idfaechkomb,idLehrer,idFach)	
VALUES ('$idLehrer$idFach','$idLehrer','$idFach');";
		$Ergebnis = mysql_query($SQLFaecher,$verbindung);
		echo $i;
	}
}
 
Zuletzt bearbeitet:
besser wäre die Formulargestaltung mit Array:

PHP:
// HTML
<input type="checkbox" name="fach[]" value="<idVomFach>" />
// PHP
for ($i = 0; $i < count($_POST['fach']); $i++) {
    $fach = (int) $_POST['fach'][$i];
    // rest
}
 
PHP:
BETWEEN 'O' AND 'Z'

Wie bekomme ich jetzt auch die mit O und Z? Weil es heißt ja zwischen O und Z...
 
between bezieht O und Z mit ein.

Code:
mysql> select "o" between "o" and "z";
+-------------------------+
| "o" between "o" and "z" |
+-------------------------+
|                       1 | 
+-------------------------+
1 row in set (0.00 sec)

mysql> select "p" between "o" and "z";
+-------------------------+
| "p" between "o" and "z" |
+-------------------------+
|                       1 | 
+-------------------------+
1 row in set (0.00 sec)

mysql> select "n" between "o" and "z";
+-------------------------+
| "n" between "o" and "z" |
+-------------------------+
|                       0 | 
+-------------------------+
1 row in set (0.00 sec)

mysql> select "z" between "o" and "z";
+-------------------------+
| "z" between "o" and "z" |
+-------------------------+
|                       1 | 
+-------------------------+
1 row in set (0.00 sec)
 
Dann liegt das Problem an anderer Stelle.

PHP:
	SELECT * FROM lehrer
WHERE LName BETWEEN 'o' AND 'z'
OR LName BETWEEN 'O' AND 'Z'
ORDER BY LName ASC";

Liefert mir leider nicht den Lehrer, dessen Name mit Z oder O beginnt.
 
Code:
SELECT * FROM lehrer
WHERE SUBSTRING(LName,1,1) = 'o'
OR SUBSTRING(LName,1,1) = 'z'
ORDER BY LName ASC";

Spontan - gibt evtl. noch eine elegantere Lösung...
 
was steht denn in LName drin? ein kompletter name oder lediglich der Anfangsbuchstabe?

Versuch mal sicherheitshalber folgendes:

PHP:
SELECT * FROM lehrer WHERE 
SUBSTRING(LName,1,1) BETWEEN 'o' AND 'z' OR
SUBSTRING(LName,1,1) BETWEEN 'O' AND 'Z' 
ORDER BY LName ASC;
 
Ein kompletter Name steht in LName.
@Nascar & hotracer: Danke. Geht jetzt :)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh