CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
21.01.2010, 20:12:59
|
Anfänger
|
|
Registriert seit: Jan 2010
Alter: 62
Beiträge: 4
|
|
SQL Abfrage übergibt nur einen Wert
Hallo,
ich möchte für eine Schule einen kleinen Vokabeltrainer erstellen, verzweifle aber daran, dass ich bei der Abfrage der sql-Daten nur immer eine einzige Vokabel an ein array (=$vokabel) übergeben wird. Wenn ich die beiden arrays (rows[0] und rows[1]) mit echo ausgebe, kommen aber alle Vokabeln aufgelistet, die ich in sql hinterlegt habe. Ich habe die entsprechende Passage markiert. Kann mir jemand helfen, wo ich hier den Fehler mache?
Vielen Dank im voraus
PHP-Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Vokabeltrainer</title>
<style type="text/css">
body, table {
font-family: Verdana, Arial, Sans-Serif;
font-size: 12px;
}
div {
margin-bottom: 5px;
}
</style>
<?php
# Vokabelabfrage in: deutsch / englisch
$vokabelabfrage = "englisch";
include "dbconnect.php"; //Anmeldung zur datenbank
$sql = 'SELECT Deutsch, Englisch FROM unit1';
$erg = mysql_query ($sql);
[B][COLOR="Blue"]while ($rows=mysql_fetch_array($erg)) {
$vokabel = array("$rows[0]|$rows[1],");
}[/COLOR][/B]
shuffle($vokabel);
$vokabel_anzahl = count($vokabel);
?>
<script type="text/javascript">
// Variablen setzen
var vokabel_anzahl = <?php echo $vokabel_anzahl;?>, vokabel_nr = 0;
function neue_vokabel() {
if (vokabel_nr == vokabel_anzahl) { // Max. Vokabeln erreicht ->
document.Form.submit(); // Formular absenden
}
else {
// Vokabel und Eingabefeld sichtbar machen
document.getElementById("ID" + vokabel_nr).style.display = "block";
document.Form.vokabelnr.value = vokabel_nr; // Vokabelnummer einfügen
vokabel_nr++;
}
}
</script>
</head>
<body>
<h2>Vokabeltrainer</h2>
<?php
// Anzahl der Vokabeln ausgeben
echo "Der Vokabeltrainer hat <strong>$vokabel_anzahl</strong> Vokabeln.<br>
Die Übersetzung in <u>$vokabelabfrage</u> eintragen!<br><br>\n\n";
if (!$_POST) {
echo "<form name=\"Form\" action=\"" . $_SERVER["PHP_SELF"] . "\" method=\"post\">\n";
// Vokabelabfrage - Versteckte Vokabeln und Eingabefelder ausgeben
foreach ($vokabel as $zaehler => $element) {
list($deutsch, $englisch) = explode("|", $element);
echo "<div id=\"ID$zaehler\" style=\"display: none;\">" . ($zaehler + 1) . ". <em>" .
(($vokabelabfrage == "deutsch") ? $englisch : $deutsch) .
"</em> = <input type=\"text\" name=\"nr$zaehler\" size=\"30\" onMouseOver=\"this.focus();\"></div>\n";
}
// Versteckte Felder für Zufallsvokabeln und aktuelle Vokabelnummer
echo "<input type=\"hidden\" name=\"shuffle\" value=\"" . implode("+", $vokabel) . "\">\n";
echo "<input type=\"hidden\" name=\"vokabelnr\"> <br>\n";
// Submit-Button und Button für Neue Vokabel anzeigen
echo " <button type=\"submit\">Lösung anzeigen</button> -
<button type=\"button\" onClick=\"neue_vokabel();\">Neue Vokabel</button> <br><br>
</form>
<script type=\"text/javascript\">neue_vokabel();</script>";
}
if ($_POST) {
echo "» <a href=" . $_SERVER["PHP_SELF"] . ">Vokabeltrainer starten</a><br><br>\n\n";
// Vokabeln und Antworten in einer Tabelle ausgeben
echo "<table border=\"1\"><tr><th>Deutsch</th><th>Englisch</th><th>Antwort</th></tr>\n";
foreach ((explode("+", $_POST["shuffle"])) as $zaehler => $element) {
list($deutsch, $englisch) = explode("|", $element);
echo "<tr><td>$deutsch</td><td>$englisch</td><td>" . ((($_POST["nr". $zaehler] == "") ? "?" : $_POST["nr". $zaehler])) . "</td></tr>\n";
if ($zaehler == $_POST["vokabelnr"]) {
break;
}
}
echo "</table>";
}
?>
</body>
</html>
Geändert von vt1816 (21.01.2010 um 21:33:13 Uhr)
Grund: Verhaltensregeln im SELFPHP-Forum
|
21.01.2010, 20:29:39
|
Anfänger
|
|
Registriert seit: Aug 2008
Alter: 35
Beiträge: 124
|
|
AW: SQL Abfrage übergibt nur einen Wert
Danke fürs farbliche hervorheben der Stelle, benutze bitte dennoch die für Code vorgesehenen Tags [ PHP]....[ /PHP]
Zu deiner Frage: array_push sollte dir weiterhelfen können. oder auch über das direkte ansprechen eines Keys:
PHP-Code:
$array[element]="wert";
Am besten anzuzeigen mit
PHP-Code:
print_r($array);
Mfg
__________________
Allergisch auf: - "Ich brauch ein Script für..."
- "...dringend..."
- Anfrage-->Antwort-->Nie wieder melden
|
21.01.2010, 21:47:31
|
Anfänger
|
|
Registriert seit: Jan 2010
Alter: 62
Beiträge: 4
|
|
AW: SQL Abfrage übergibt nur einen Wert
Hallo Xor,
vielen Dank für den Hinweis mit der Hervorhebung und die -mich sehr positiv überraschende- schnelle Antwort. Aber leider komme ich weder mit der einen noch mit der anderen Methode wirklich weiter.
in dem array $vokabel müssen die Werte aus zwei sql-Tabellen (Deutsch, Englisch) wie folgt abgespeichert werden um sie nachfolgend auch richtig auszugeben und kontrollieren zu können:
"abbrechen|drop out",
"Abenteuer|adventure",
usw.
Ich begreife nur nicht, warum nur der erste Wert aus den beiden sql-Tabellen mit der Zeile:
$vokabel = array("$rows[0]|$rows[1],");
übergeben wird und die nachfolgenden Vokabeln nicht.
Wie bereits geschrieben, mit
echo ("$rows[0]|$rows[1],");
bekomme ich ja auch alle Formeln genau in der Art angezeigt, wie ich sie haben möchte.
Ich werde jetzt erst einmal das Projekt bis morgen ruhen lassen. Vielleicht haben Sie ja noch einen kleinen Hilfetip für mich oder mir kommt über Nacht doch noch die Lösung (was ich jedoch nicht glaube)
|
21.01.2010, 21:51:59
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: SQL Abfrage übergibt nur einen Wert
Zitat:
Zitat von Oberpfälzer
[...]
PHP-Code:
$vokabel = array("$rows[0]|$rows[1],");
|
Besser:
PHP-Code:
$vokabel[] = array("$rows[0]|$rows[1],");
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
21.01.2010, 21:58:31
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: SQL Abfrage übergibt nur einen Wert
hi
Zitat:
Zitat von Oberpfälzer
Hallo Xor,
Ich begreife nur nicht, warum nur der erste Wert aus den beiden sql-Tabellen mit der Zeile:
$vokabel = array("$rows[0]|$rows[1],");
übergeben wird und die nachfolgenden Vokabeln nicht.
Wie bereits geschrieben, mit
echo ("$rows[0]|$rows[1],");
bekomme ich ja auch alle Formeln genau in der Art angezeigt, wie ich sie haben möchte.
|
Wenn ich da richtig sehe ist dein problem das du nicht weisst wie man ein ARRAY befüllt. Dein ECHO funktioniert weil es jedesmal die Werte einfach ausspuckt und danach vergisst. Du überschreibst jedesmal den arraykey[0] so das du eigentlich als Wert immer den letzten Datensatz haben müsstest was dich stutzig hätte machen müssen ;)
[] fügt weitere keys automatisch hinten an.
[zahl] oder ["bst oder wort"] fügt einen weiteren ein oder überschreibt den vorherigen.
PHP-Code:
$vokabel[] = array("$rows[0]|$rows[1],");
Sollte dein problem lösen. Ergoogle ruhig mal arrays oder schau dir die Arraybsp auf php.net mal an.
mfg
Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
21.01.2010, 21:58:48
|
Anfänger
|
|
Registriert seit: Aug 2008
Alter: 35
Beiträge: 124
|
|
AW: SQL Abfrage übergibt nur einen Wert
Oder (wie in meinem vorigen Post schon angegeben)
PHP-Code:
array_push($vokabel,"$rows[0]|$rows[1],");
Doch warum der Beistrich nach $rows[1] und warum nicht selbst array_push angeschaut?
Mfg
__________________
Allergisch auf: - "Ich brauch ein Script für..."
- "...dringend..."
- Anfrage-->Antwort-->Nie wieder melden
|
21.01.2010, 22:02:12
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: SQL Abfrage übergibt nur einen Wert
Zitat:
Zitat von Xor
[...]
warum nicht selbst array_push angeschaut?
Mfg
|
... weil es doch so schön vorgebetet wird ;-)
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
21.01.2010, 22:02:56
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: SQL Abfrage übergibt nur einen Wert
Zitat:
Zitat von Ckaos
hi
Wenn ich da richtig sehe ist dein problem das du nicht weisst wie man ein ARRAY befüllt. Dein ECHO funktioniert weil es jedesmal die Werte einfach ausspuckt und danach vergisst. Du überschreibst jedesmal den arraykey[0] so das du eigentlich als Wert immer den letzten Datensatz haben müsstest was dich stutzig hätte machen müssen ;)
[] fügt weitere keys automatisch hinten an.
[zahl] oder ["bst oder wort"] fügt einen weiteren ein oder überschreibt den vorherigen.
PHP-Code:
$vokabel[] = array("$rows[0]|$rows[1],");
Sollte dein problem lösen. Ergoogle ruhig mal arrays oder schau dir die Arraybsp auf php.net mal an.
mfg
Ckaos
|
erstellt in 7min deswegen nicht die kurze ;) lösung von vt1816 gesehen
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
22.01.2010, 09:17:40
|
Anfänger
|
|
Registriert seit: Jan 2010
Alter: 62
Beiträge: 4
|
|
AW: SQL Abfrage übergibt nur einen Wert
Vielen Dank für die Hilfe.
zu der Bemerkung von vt1816. Ich habe mir den array_push angesehen und auch die key- Möglichkeit von Xor ausprobiert - leider aber ohne den von mir erhofften Erfolg. Entweder bekam ich trotzdem nur einen Satz aus der Tabelle oder vollkommen durcheinander.
Es ist nicht mein Anliegen, die Codes vorgebetet zu bekommen. Ich habe bereits mehrere Abende an diesem, meinem, Problem gearbeitet.
Richtig dagegen sieht es Chaos. Ja, ich habe auch festgestellt, dass ich ein Problem damit habe, wie arrays richtig gefüllt werden oder besser gesagt, wie sie das ausgeben, was ich will. Hier muss ich grundsätzlich noch einmal meine Lehrunterlagen zu Rate ziehen um diese Lücke bei mir zu schließen.
mfg Oberpfälzer
|
22.01.2010, 09:34:18
|
Anfänger
|
|
Registriert seit: Aug 2008
Alter: 35
Beiträge: 124
|
|
AW: SQL Abfrage übergibt nur einen Wert
Freut mich dass du den ersten Schritt, das erkennen der Wissenslücke, gemeistert hast. Wenn du sie jetzt auch wirklich schließt hat sich das ganze mehr gebracht als man von den meisten andren Threads behaupten kann...
Freut mich wirklich!
__________________
Allergisch auf: - "Ich brauch ein Script für..."
- "...dringend..."
- Anfrage-->Antwort-->Nie wieder melden
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 18:35:47 Uhr.
|