Guten Abend,
ich bin gerade dabei PHP zu lernen, und habe jetzt mal versucht einen Code für Umfragen zu schreiben.
Jetzt stehe ich vor einem kleinen Problem, und zwar will ich aus einem Eingabefeld den Namen für die neue Umfrage abfragen, und dann eine neue Tabelle nach dem eingegebenem benennen.
Klappt eigentlich auch, nur das ich dann den Fehler, bzw den Hinweis
Notice: Array to string conversion in C:\xampp\htdocs\Umfragen\classes\db_class.php on line 18
bekomme.
Es wird dann sogar eine neue Tabelle angelegt mit den Spalten die ich haben wollte, nur das der Name der Tabelle nicht Beispiel sondern 'Beispiel' ist. Das bekomme ich einfach nicht weg. Ich vermute mal das hat was mit dem Hinweis zu tun.
Jetzt erstmal zu dem Code vom Layout:
Und die Eingaben kommen dann hier in der Datei an:
Und das hier ist die Code mit den Funktionen auf die zugegriffen wird:
Und achja ab dem Punkt wo der Hinweis kommt, läuft das auch nicht mehr weiter. Also das die eingegebenen Daten in die neue Tabelle übertragen werden.
Ich hoffe das mir jemand weiterhelfen, und vor allem das ich was neues dazu lernen kann!
Würde mich auch über Verbesserungsvorschläge freuen, was man besser machen kann. Bin mir sicher das man vieles das ich geschrieben habe besser machen, oder wenn es falsch ist sogar richtig machen kann
Bin mir noch etwas unsicher wann ich ich was, und wie ich es anwenden kann.
Danke im Voraus für hilfreiche Antworten!
ich bin gerade dabei PHP zu lernen, und habe jetzt mal versucht einen Code für Umfragen zu schreiben.
Jetzt stehe ich vor einem kleinen Problem, und zwar will ich aus einem Eingabefeld den Namen für die neue Umfrage abfragen, und dann eine neue Tabelle nach dem eingegebenem benennen.
Klappt eigentlich auch, nur das ich dann den Fehler, bzw den Hinweis
Notice: Array to string conversion in C:\xampp\htdocs\Umfragen\classes\db_class.php on line 18
bekomme.
Es wird dann sogar eine neue Tabelle angelegt mit den Spalten die ich haben wollte, nur das der Name der Tabelle nicht Beispiel sondern 'Beispiel' ist. Das bekomme ich einfach nicht weg. Ich vermute mal das hat was mit dem Hinweis zu tun.
Jetzt erstmal zu dem Code vom Layout:
PHP:
<?php
$showformeingabe = true;
require_once("proc/neue_umfrage.php");
if($showformeingabe) {
?>
<form action="" method="post">
Wie viele Eingabefelder (Reihen) brauchen sie?
<br />
<input type="text" name="rows" />
<br />
<input type="submit" value="Tabelle erstellen" name="submit" />
</form>
<?php } ?>
Und die Eingaben kommen dann hier in der Datei an:
PHP:
<?php
$umfrage = new umfragen;
$reihe = null;
if(isset($_POST['submit'])) {
$anzahl = $_POST['rows'];
$reihe = 1;
echo '<form action="" method="post">';
echo "Name der Umfrage:<br>";
echo '<input type="text" name="umfragename"><br><br>';
echo "<p>Objekte Anzahl</p><br>";
while($anzahl > 0) {
if($anzahl == 0) {
break;
}
echo '<input type="text" name="objekt' . $reihe . '"> <input type="text" size="5" name="anzahl' . $reihe . '"><br>';
$anzahl -= 1;
$reihe += 1;
}
echo '<input type="submit" name="erstellen" value="Umfrage erstellen">';
echo '</form>';
$showformeingabe = false;
}
if(isset($_POST['erstellen'])) {
$ergebnis = null;
$umfragename = $_POST['umfragename'];
$umfrage->db->set_umfrage($_POST['umfragename']);
$row = 1;
while($row < $reihe) {
$objekt = $_POST['objekt' . $row];
$fanzahl = $_POST['anzahl' . $row];
if(!strlen($objekt or $fanzahl) == 0) {
$ergebnis = ($umfrage->db->insert_neue_umfrage($umfragename, $objekt, $fanzahl));
}
if($row == $reihe) {
break;
}
$row += 1;
}
if($ergebnis) {
echo "Tabelle erfolgreich angelegt.";
} else {
echo "Es ist ein Fehler aufgetreten.";
}
}
?>
Und das hier ist die Code mit den Funktionen auf die zugegriffen wird:
PHP:
<?php
/**
* db_class short summary.
*
* db_class description.
*
* @version 1.0
* @author Mike
*/
class db_class extends PDO
{
public function set_umfrage($umfragename) {
$umfragename1 = $umfragename;
$statement = $this->prepare("CREATE TABLE `umfragen`.`:umfragename` ( `id` INT NOT NULL AUTO_INCREMENT , `objekt` TEXT NOT NULL , `ersteller` BOOLEAN NULL , `anzahl` INT NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;");
$statement->bindParam("umfragename", $umfragename1, PDO::PARAM_STR);
$statement->execute();
echo ($statement->errorInfo());
return $statement->fetch();
}
public function insert_neue_umfrage ($umfragename, $objekte, $anzahl) {
$statement = $this->prepare("INSERT INTO :umfragename (objekt anzahl, ersteller) VALUES (:objekte, :anzahl, 1)");
$statement->execute(array('umfragename' => $umfragename, 'objekte' => $objekte, 'anzahl' => $anzahl));
echo ($statement->errorInfo());
return $statement->fetch();
}
public function get_umfrage($umfragename) {
$statement = $this->prepare("SELECT * FROM :umfragename");
$statement->bindParam('umfragename', $umfragename, PDO::PARAM_STR);
echo ($statement->errorInfo());
return $statement->fetch();
}
public function check_umfrage($umfragename) {
$statement = $this->prepare("SELECT id FROM :umfragename WHERE id = 1");
$statement->execute(array('umfragename' => $umfragename));
echo ($statement->errorInfo());
return $statement->fetch();
}
}
?>
Und achja ab dem Punkt wo der Hinweis kommt, läuft das auch nicht mehr weiter. Also das die eingegebenen Daten in die neue Tabelle übertragen werden.
Ich hoffe das mir jemand weiterhelfen, und vor allem das ich was neues dazu lernen kann!

Würde mich auch über Verbesserungsvorschläge freuen, was man besser machen kann. Bin mir sicher das man vieles das ich geschrieben habe besser machen, oder wenn es falsch ist sogar richtig machen kann

Bin mir noch etwas unsicher wann ich ich was, und wie ich es anwenden kann.
Danke im Voraus für hilfreiche Antworten!
