Antworten auf deine Fragen:
Neues Thema erstellen

checkboxinhalte auf datenback schreiben

dragingthelake

Noch nicht viel geschrieben

Fehler sieht so aus:

Parse error: syntax error, unexpected T_IF in /data/apache/users/kilu.de/test1990/www/index.php on line 19

und das ganze skript sieht jetzt so aus:

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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>

<?php

$dbHost = "localhost";
$dbUser = "test1990@1";
$dbPass = "passwort"; 
$dbName = "test1990@1-test2";
$connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!");
$selectDB = @mysql_select_db($dbName, $connect) or die("Konnte die Datenbank <b>$dbName</b> nicht auswählen!");


mysql_stat($connect)

if(isset($_POST['Alter'])){$alt=1}else{$jung=1}
if($alt==1){$sql="INSERT  INTO  `test1990@1-test2`.`alter` (`idx` ,`alt` ,`jung`)VALUES ( NULL ,  '1',  '0');"; }else{
$sql="INSERT  INTO  `test1990@1-test2`.`alter` (`idx` ,`alt` ,`jung`)VALUES ( NULL ,  '0',  '1');";}

mysql_query($sql,$connect) or die("Fehler in der Verarbeitung");


mysql_stat($connect)
?>

</head>

<body>

<form id="test" name="test" method="post" action="index.php">
  <fieldset>
        <legend>Bitte Fragen beantworten</legend>
    <fieldset>
            <legend>Wie alt sind sie?</legend>
<label><input type="radio" name="Alter" value="jung" /> 5-10</label>
            <label><input type="radio" name="Alter" value="alt" /> 11-20</label>
      </fieldset>
    <input type="submit" name="formaction" value="Abschicken" />
  </fieldset>
</form>

</body>
</html>
und immer noch fehler...

niemand mehr eine Idee was Ich falsch mache?
 
Zuletzt bearbeitet von einem Moderator:

FredFuchs94

Allrounder...

AW: checkboxinhalte auf datenback schreiben

Da es ja eine Abschlussarbeit ist würde ich das mit der grafischen Ausgabe noch hinzufügen. Vielleicht gibt das ja nen paar Extrapünktchen.

Und das ist garnicht mal so schwer. Du machst einfach ein Bild was nachher in horizontal gestreckter Weise gut aussieht.
Dann machst du das in etwa so:

1. Auslesen aus der Datenbank jeder einzelnen Antwort wie oben auch.
Dann schauen wieviele Leute dafür abgestimmt haben und das durch die gesamte Zahl an Stimmen teilen.
Das rechnest du z.B. mal 100 und gibst den Wert dann als Breite für das Bild an das den Ladebalken darstellen soll.

Hat bei mir bis jetzt immer zureichend funktioniert. Man kann das natürlich noch mit nem Balken der den Rest auffüllt verfeinern, aber muss man nicht.


Zu deinem Fehler:
Du vergisst hinter dem "mysql_stat($connect)" immer das Semikolon.
 

j0shua

Scripter

AW: checkboxinhalte auf datenback schreiben

Hi

zusätzlich muss ich noch sagen, dass deine Verarbeitung nicht funktionieren kann.
Hast du das Ganze mal getestet ob deine if Anweisungen funktionieren?

Ich frage mich zum Beispiel woran du genau festmachst ob du $alt oder $jung auf = 1 setzt?

PHP:
if(isset($_POST['Alter'])){$alt=1}else{$jung=1}

Das mit der Grafischen Ausgabe finde ich gut.

Weisst du schon, wie du die Leute dazu bewegen willst dieses Formular zu bearbeiten?
Willst du einen Link per email verschicken oder möchtest du dich mit einem Rechner irgendwo hinstellen wo die Leute vorbei kommen?

Ich würde für den Fall, dass du es verschickst noch mit einbauen, dass das Formular nur ausgegeben wird wenn Alter noch nicht gesetzt ist.
Wenn Alter gesetzt ist und die Übertragung in die Datenbank geklappt hat, würde ich nur eine Meldung Ausgeben, dass die Daten übernommen wurden.
Solltest dir beim Verschicken auch noch was einbauen, dass die Leute nicht pro Person 1000 x klicken können.
Wäre schade für die Arbeit wenn es einige nicht all zu ernst nehmen.
 

netbandit

Aktives Mitglied

AW: checkboxinhalte auf datenback schreiben

Ein Versuch; Lösch mal die bisherige Tabelle aus der MySQL-DB und versuch mal folgendes:

PHP:
<?php
error_reporting(E_ALL);
$dbHost = "localhost";
$dbUser = "test1990@1";
$dbPass = "passwort";
$dbName = "test1990@1-test2";
$radio="";
$connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!");
$selectDB = @mysql_select_db($dbName, $connect) or die("Konnte die Datenbank nicht auswählen!");

// Diese Anweisungen bitte nur ein mal ausführen (Tabelle anlegen und die ersten beiden Datensätze einfügen) Start...
$sql="CREATE TABLE `" . $dbName . "`.`alter` (`id` INT NOT NULL AUTO_INCREMENT , `wert` VARCHAR( 10 ) NOT NULL , `zaehler` INT NOT NULL DEFAULT '0', PRIMARY KEY ( `id` )) ENGINE = MYISAM ";
mysql_query($sql,$connect) or die(mysql_error());
$sql="INSERT INTO `" . $dbName . "`.`alter` (`alter`.`wert`) VALUES ('5-10'), ('11-20')";
mysql_query($sql,$connect) or die(mysql_error());
// ... Ende. Und dann aus dieser Datei löschen!

if(isset($_POST['alter']))
    {
    $sql="UPDATE `" . $dbName . "`.`alter` SET `alter`.`zaehler`=`alter`.`zaehler`+1 WHERE `alter`.`id`='" . mysql_real_escape_string($_POST['alter']) . "'";
    mysql_query($sql,$connect) or die(mysql_error());
}

$sql="SELECT * FROM `" . $dbName . "`.`alter`";
$result=mysql_query($sql,$connect) or die(mysql_error());
$rows=mysql_num_rows($result);
if($rows>=1)
    {
    for($i=0;$i<$rows;$i++)
        {
        $row=mysql_fetch_array($result);
        $radio.="<label><input type=\"radio\" name=\"alter\" value=\"" . $row['id'] . "\" />" . $row['wert'] . " (" . $row['zaehler'] . ")</label>";
    }
}

?>

<!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>

</head>

<body>

<form id="test" name="test" method="post" action="index.php">
    <fieldset>
        <legend>Bitte Fragen beantworten</legend>
        <fieldset>
        <legend>Wie alt sind sie?</legend>
<?
echo $radio;
?>
        </fieldset>
        <input type="submit" name="formaction" value="Abschicken" />
    </fieldset>
</form>
</body>
</html>
Das was innerhalb der Kommentare steht bitte nur ein mal ausführen, danach die Zeilen, am besten inkl. Kommentare, aus der Datei löschen. Habe um das zuletzt von Dir Veröffentlichte drum herum gebaut. Nicht unbedingt perfekt aber nach nur 1 Tasse Kaffee sollte es zumindest funktionieren. Hoffe Du steigst da noch durch. :D
 

crx_ed9

Noch nicht viel geschrieben

AW: checkboxinhalte auf datenback schreiben

Ein Versuch; Lösch mal die bisherige Tabelle aus der MySQL-DB und versuch mal folgendes:

PHP:
<?php
error_reporting(E_ALL);
$dbHost = "localhost";
$dbUser = "test1990@1";
$dbPass = "passwort";
$dbName = "test1990@1-test2";
$radio="";
$connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!");
$selectDB = @mysql_select_db($dbName, $connect) or die("Konnte die Datenbank nicht auswählen!");

// Diese Anweisungen bitte nur ein mal ausführen (Tabelle anlegen und die ersten beiden Datensätze einfügen) Start...
$sql="CREATE TABLE `" . $dbName . "`.`alter` (`id` INT NOT NULL AUTO_INCREMENT , `wert` VARCHAR( 10 ) NOT NULL , `zaehler` INT NOT NULL DEFAULT '0', PRIMARY KEY ( `id` )) ENGINE = MYISAM ";
mysql_query($sql,$connect) or die(mysql_error());
$sql="INSERT INTO `" . $dbName . "`.`alter` (`alter`.`wert`) VALUES ('5-10'), ('11-20')";
mysql_query($sql,$connect) or die(mysql_error());
// ... Ende. Und dann aus dieser Datei löschen!

if(isset($_POST['alter']))
    {
    $sql="UPDATE `" . $dbName . "`.`alter` SET `alter`.`zaehler`=`alter`.`zaehler`+1 WHERE `alter`.`id`='" . mysql_real_escape_string($_POST['alter']) . "'";
    mysql_query($sql,$connect) or die(mysql_error());
}

$sql="SELECT * FROM ` $dbName`.`alter`";
$result=mysql_query($sql,$connect) or die(mysql_error());
$rows=mysql_num_rows($result);
if($rows>=1)
    {
    for($i=0;$i<$rows;$i++)
        {
        $row=mysql_fetch_array($result);
        $radio.="<label><input type=\"radio\" name=\"alter\" value=\"" . $row['id'] . "\" />" . $row['wert'] . " (" . $row['zaehler'] . ")</label>";
    }
}

?>

<!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>

</head>

<body>

<form id="test" name="test" method="post" action="index.php">
    <fieldset>
        <legend>Bitte Fragen beantworten</legend>
        <fieldset>
        <legend>Wie alt sind sie?</legend>
<?
echo $radio;
?>
        </fieldset>
        <input type="submit" name="formaction" value="Abschicken" />
    </fieldset>
</form>
</body>
</html>
Das was innerhalb der Kommentare steht bitte nur ein mal ausführen, danach die Zeilen, am besten inkl. Kommentare, aus der Datei löschen. Habe um das zuletzt von Dir Veröffentlichte drum herum gebaut. Nicht unbedingt perfekt aber nach nur 1 Tasse Kaffee sollte es zumindest funktionieren. Hoffe Du steigst da noch durch. :D

kann nicht funktionieren ^^

so dark hier bin ich wieder in alter frische,

ja du vergisst stetig den Zeilenabschluss.
offensichtlich ist die die Scriptsprache noch fremd ;) macht aber nichts...

Also prüfe immer ob du nach deinen Operationen die Zeilenabschließt mit einem Semikolon ; .So hast du laut fehlermeldung die Zeilen nicht abgeschlossen, sprich nach $alt=1 fehlt das Semi, und

@net

damit hat er aber nur einen Wert in der DB stehen denn das update verhindert die neueintragung. Somit ist eine Auswertung nicht gegeben

P.S.

Es ist eine Schulaufgabe, und daher sollte er auch ebbes Lernen dabei, deswegen habe ich ihm kein vollständiges Script vorgelegt.
 

netbandit

Aktives Mitglied

AW: checkboxinhalte auf datenback schreiben

Falsch, es muss nicht jedes mal eine neue Zeile eingetragen werden. Schau Dir das UPDATE doch mal genauer an. Hab es getestet, funktioniert. :)
 

FredFuchs94

Allrounder...

AW: checkboxinhalte auf datenback schreiben

Meiner Meinung und Erfahrung nach ist es aber besser für jede Abstimmung nen neuen Eintrag anzulegen. Dann kannst du die IP oder den Host abspeicher. So kannst du z.B. verhindern, das der Abstimmer nicht einfach die Seite nach dem abschicken des Forumlars die Seite aktualisiert.

Jedoch weiß ich garnicht wie weit das Projekt gehen soll? Oder soll es wirklich nur der Basisteil der Abgabe seiner Stimme und die einfache Textausgabe der Auswertung sein? Denn dann sind wir hier grade iwie n bissl OT :D.

Vielleicht sollte sich der Threadersteller mal eindeutig zu Wort melden.
 

netbandit

Aktives Mitglied

AW: checkboxinhalte auf datenback schreiben

Nicht kompliziert genug, wollt ihr noch eine IP- und evtl. noch eine Reload-Ssperre haben?

Statt die DB zuzumüllen mit x-hunderten oder -tausenden Einträgen, sind es bei meinem Vorschlag nur noch zwei Zeilen. Wat will man mehr? ;)
 

dragingthelake

Noch nicht viel geschrieben

so hab mal das Skript von netbandit ausprobiert und funktioniert einwandfrei...
jedoch habe ich noch ziemliche Schwierigkeiten das Skript zu verstehen...

@FredFuchs94: diese Umfrage ist nicht allein die Abschlussarbeit (wäre auch ein wenig zu einfach) aber sie ist Teil meiner Arbeit die ich über das Thema "Überbevölkerung" schreibe... deshalb ist die grafische Auswertung für mich nicht unbedingt von Notwendigkeit...
aber trozdem danke...

nochmal @FredFuchs94:

ich will eigentlich nur einige simple Fragen auflisten, bei denen man 2 - 3 Antworten anklicken kann und dass es die Anzahl gegebener Antworten dann in der Datenback aufzählt....
 
Zuletzt bearbeitet von einem Moderator:

FredFuchs94

Allrounder...

AW: checkboxinhalte auf datenback schreiben

Dann wäre es gut zu wissen wie genau du die Umfrage einsetzt? Willst du sie auf mehrere "Abstimmer" verbreiten oder soll sie einfach nur "zum Anschauen" dienen.

Denn wenn es nur das anschauen ist, dann reichen die 2 Einträge, sprich im einen wird die zahl der Antworten für Antwort A hochgezählt und in der Anderen die für die Antwort B. Jeweils dann halt noch für Antwort C etc.

Aber wenn nicht tausende von Leuten abstimmen, dann kannst du auch jede Abstimmung als einzelnen Eintrag abspeichern. Da hast du dann meiner Meinung nach bessere Auswertungsmöglichkeiten.

Aber solch ein Script ist nicht schwer. Hatte so etwas mal bei meiner alten Community. Dort konnte man selber per Interface Umfragen mit beliebig vielen Antworten erstellen.
Wenn du magst kann ich dir das nachher mal raussuchen.

Aber wenn du es einfach halten willst, mach es so:
N=Anzahl der Antworten

1. Formular mit N Checkboxen und einem "Absendenbutton".
2. Die Eingabe wird ausgewertet und in der Datenbank abgespeichert.
3. Es wird zur Seite für die Auswertung weitergeleitet. Dort listest du auf welche Möglichkeiten es alles gab und gibst dann daneben einfach die Anzahl der Personen an die für diese Antwort gestimmt haben.

Das Formular müsste in etwa so aussehen:

HTML:
<form action='abspeicher.php' method='post'>
<input type=radio name=antwort value='a' checked>ANTWORT A<br>
<input type=radio name=antwort value='b'>ANTWORT B<br>
<input type=submit value='Abstimmen' name=submit></form>
Ich habe hier bei dem ersten Radiobutton absichtlich für Antwort A checked reingepackt, damit der Abstimmer nicht einfach nichts auswählen kann.

Dann die "abspeichern.php"
PHP:
<?php
//schreiben der per http-post übergebenen antwort
$antwort=$_POST['antwort'];
$zeit=time();
$ip=$_SERVER["REMOTE_ADDR"];
//abspeichern der antwort mit zeitpunkt und ip in der datenbank
mysql_query("INSERT INTO umfrage_db_name (antwort, datum, ip) VALUES ('".$antwort."', '".$zeit."'. '".$ip."')");
echo "Sie haben erfolgreich abgestimmt.
//weiterleitung auf die auswertung.php
Dann noch die "auswertung.php"
PHP:
$alle_antworten_a=mysql_num_rows(mysql_query("SELECT antwort FROM umfrage_db_name WHERE antwort='a'"));
$alle_antworten_b=mysql_num_rows(mysql_query("SELECT antwort FROM umfrage_db_name WHERE antwort='b'"));
echo "Es stimmen ".$alle_antworten_a." Personen für Antwort A ab und ".$alle_antworten_b." Personen für Antwort B.";
Das ist natürlich nur so "das Grobe". Für umfrage_db_name musst du noch den Namen der Datenbank einsetzen wo du das alles speichern willst.
Die Datenbankverbindung kennst du ja schon wie das geht. Die Tabelle kannst du einfach im PHPMYADMIN deines MySQLs anlegen.
 
Zuletzt bearbeitet:

dragingthelake

Noch nicht viel geschrieben

AW: checkboxinhalte auf datenback schreiben

joa geht so...
habe immer noch probleme bei mehreren fragen...
aber bin fleissig am üben... hoffe es klappt bald...

danke für die nachfrage...

gruss
 

FredFuchs94

Allrounder...

AW: checkboxinhalte auf datenback schreiben

Wenn du noch Fragen hast beantworte ich die gerne. Kannst mich auch gerne bei PN anschreiben.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.066
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben