SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 21.01.2010, 20:12:59
Oberpfälzer Oberpfälzer ist offline
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 &Uuml;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) . ". &nbsp; <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 "&nbsp; &nbsp; <button type=\"submit\">L&ouml;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 
"&raquo; <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
Mit Zitat antworten
  #2  
Alt 21.01.2010, 20:29:39
Xor Xor ist offline
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
Mit Zitat antworten
  #3  
Alt 21.01.2010, 21:47:31
Oberpfälzer Oberpfälzer ist offline
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)
Mit Zitat antworten
  #4  
Alt 21.01.2010, 21:51:59
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: SQL Abfrage übergibt nur einen Wert

Zitat:
Zitat von Oberpfälzer Beitrag anzeigen
[...]

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!
Mit Zitat antworten
  #5  
Alt 21.01.2010, 21:58:31
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: SQL Abfrage übergibt nur einen Wert

hi

Zitat:
Zitat von Oberpfälzer Beitrag anzeigen
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!
Mit Zitat antworten
  #6  
Alt 21.01.2010, 21:58:48
Xor Xor ist offline
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
Mit Zitat antworten
  #7  
Alt 21.01.2010, 22:02:12
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: SQL Abfrage übergibt nur einen Wert

Zitat:
Zitat von Xor Beitrag anzeigen
[...]
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!
Mit Zitat antworten
  #8  
Alt 21.01.2010, 22:02:56
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: SQL Abfrage übergibt nur einen Wert

Zitat:
Zitat von Ckaos Beitrag anzeigen
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!
Mit Zitat antworten
  #9  
Alt 22.01.2010, 09:17:40
Oberpfälzer Oberpfälzer ist offline
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
Mit Zitat antworten
  #10  
Alt 22.01.2010, 09:34:18
Xor Xor ist offline
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
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Brauche Hilfe Partygirl MySQLi/PDO/(MySQL) 10 01.03.2011 08:18:11
SQL Abfrage mit PHP Variablen die leer sind WHERE plz = ? Loki555 MySQLi/PDO/(MySQL) 8 28.04.2009 14:18:33
Wert aus einer SQL abfrage entfernen! b-jay MySQLi/PDO/(MySQL) 7 27.09.2008 17:01:53
SQL Abfrage so überhaupt machbar ? dr.house MySQLi/PDO/(MySQL) 1 05.06.2008 14:20:10
Problem bei der SQL Abfrage kann SUM Wert nicht in Variable ablegen Maverickx010 PHP Grundlagen 2 17.08.2007 05:10:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:35:47 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt