Jump to content

Wie greife ich von einem Formular auf phpmyadmin zu?

Empfohlene Beiträge

Hallo

Ich möchte ein Formular erstellen mit select. Ich möchte, dass der Kunde die Möglichkeit hat, eine Automarke auszuwählen und darauf hin dann den Typ.

Bin totaler Anfänger :/

Das ist zb mal ein kleiner Teil des Formulars. Da ich aber jetzt nicht jede Marke einzeln eintragen möchte, wollte ich wissen, ob ich in dem Formular direkt auf phpmyadmin zugreifen kann (in dem Fall auf "make", damit er mir dann automatisch alle Marken anzeigt?

<form action="Projekt_Marie1.php.php" method= "post">

<p><select name="m">													
<option value="Alfa Romeo" selected ="selected">IBM Corporation</option>
<option value="Audi">Audi</option>
<option value="BMW">BMW</option>
<option value="Chevrolet">Chevrolet</option>
<option value="Chrysler">Chrysler</option>
<option value="Citroen">Citroen</option>
<option value="Dacia">Dacia</option>
<option value="Chevrolet">F</option>
<option value="Chevrolet">Fujitsu</option>
<option value="Chevrolet">Fujitsu</option>
</select></p>

<p><input type="submit"> <input type="reset"></p>

</form>

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Du willst nicht auf phpMyAdmin zugreifen, sondern auf die Tabelle "Marke" in der entsprechenden Datenbank. Schau dir nochmal an, wie man mit php auf Datenbanken zugreift und wie man die einzelnen Datensätze auslesen kann. Wenn du das beherrschst, musst du dir eigentlich nur noch eine kleine Schleife basteln, die die Markennamen aus der Tabelle "Marke" als Auswahlpunkte ausgibt.

bearbeitet von PhilipFISI

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 3 Stunden schrieb checkaline:

Bin totaler Anfänger :/

vor 3 Stunden schrieb allesweg:

Nach 1,5 Jahren Umschulung solltest du zumindest wissen, worauf du zugreifen willst/müsstest.

Wenn du wirklich bereits 3/4 deiner Umschulung absolviert hast, dann würde ich diese Frage als klaren Hinweis sehen, dass du als Anwendunsgentwicklerin, bereits in den Grundlagen, schwerste Defizite aufweist und da DRINGEND dran arbeiten solltest. Dir scheint momentan nicht einmal der Unterschied zwischen einem Webbasierten Tool auf PHP-Basis und einer Datenbank geläufig zu sein.

Es gibt einige gute Bücher über PHP und MYSQL. Ich würde dir daher dazu raten, solch ein Buch einmal, inklusiver der Grundlagen, durchzugehen.

 

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Zitat

<form action="Projekt_Marie1.php.php" method= "post">

<p><select name="m">                                                    
<option value="Alfa Romeo" selected ="selected">IBM Corporation</option>
<option value="Audi">Audi</option>
<option value="BMW">BMW</option>
<option value="Chevrolet">Chevrolet</option>
<option value="Chrysler">Chrysler</option>
<option value="Citroen">Citroen</option>
<option value="Dacia">Dacia</option>
<option value="Chevrolet">F</option>
<option value="Chevrolet">Fujitsu</option>
<option value="Chevrolet">Fujitsu</option>
</select></p>

<p><input type="submit"> <input type="reset"></p>

</form>

Ohne dir zu nahe treten zu wollen, habe ich dir einfach mal ein paar Stellen markiert, dazu folgende Kritik:

  1. Für Dateien am besten englische Bezeichnungen vergeben. Software wird überwiegend englisch entwickelt. Es gibt ausnahmen, aber dementsprechend schlecht ist dann meist auch die Qualität. Am besten auch alles klein schreiben.
  2. Wieso heißt die Datei ".php.php"? 
  3. Zwischen = und " kommt kein Leerzeichen
  4. In ein Paragraph (<p>...</p>) kommen keine Blocklevel-Elemente (wie das Select oder das Input) sondern nur Textlevel-Elemente
  5. Der Option-Text und das Value-Attribute widersprechen sich. 
  6. Tags, die nicht geschlossen werden, werden mit einem / vor dem > geschlossen (Bsp.: <input type="..." />).
  7. Einen Reset-Button habe ich seit gefühlten 100 Jahren nicht mehr gesehen :P
  8. Tu dir selbst einen gefallen und rücke den Code ein, dadurch ist er viel lesbarer

 

vor 9 Stunden schrieb checkaline:

Das ist zb mal ein kleiner Teil des Formulars. Da ich aber jetzt nicht jede Marke einzeln eintragen möchte, wollte ich wissen, ob ich in dem Formular direkt auf phpmyadmin zugreifen kann

Vermutlich hast du noch nicht verstanden, wie das alles zusammenhängt. Du hast eine MySQL-Datenbank, die irgendwo im Hintergrund auf deinem System oder Server läuft (ich vermute einfach mal einen XAMPP-Stack). PhpMyAdmin ist nichts anderes als ein Programm, das auf diese Datenbank zugreift und dir die Datenbank schön ausgibt und dir Möglichkeiten bietet, diese zu verwalten. Mit PHP greifst du nun nicht auf PhpMyAdmin zu - denn dies ist ja keine Datenbank - sondern direkt auf die MySQL-Datenbank. Das funktioniert in 4 Schritten:

  1. Datenbankverbindung aufbauen
  2. Tabelle selektieren
  3. Daten abfragen (oder modifizieren)
  4. Datenbankverbindung abbauen

Dabei sollten dir folgende Docs helfen:

vor 9 Stunden schrieb checkaline:

Bin totaler Anfänger :/

Das ist absolut nicht schlimm. Wichtig ist es, dass du dich selbständig in das Thema reinlesen kannst, Dokumentationen lesen und verstehen kannst und dir somit bei Problemen selber helfen kannst. Das ist alles ein bisschen viel für den Anfang, aber es ist durchaus machbar. Evtl. solltest du dir ein gutes Buch zulegen. Wichtig ist auch, dass du dir angewöhnst, sauber zu programmieren. 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

Danke für eure Hilfe.

Ja ich bin fast am Ende meiner Umschulung und ja ich habe viele Defizite. Was soll ich tun. Versuchen weiter zu lernen oder alles hinschmeißen?

Habe selber gesehen grad, dass ich das Stück Programm noch gar nicht ausgebessert habe. Tut mir leid. Habe ein php Buch, welches wohl nicht so gut ist, denn dort ist es mit dem "<p>...</p> so beschrieben. Bin es gewohnt, deutsche variablen etc zu nehmen, weil wir es so gelernt haben in der Schule. Auch das mit dem Reset-Button ist im Buch so erklärt. 

 

Bin selbst schon fast am aufgeben, weil ich merke, dass ich viel mehr Zeit brauche, um das zu verstehen. Habe hier im Praktikum auch deutlich gemacht, dass ich Hilfe brauche. Mal sehen.

Ich habe die Datenbank geöffnet und die Spalte rausgelesen mit Select make From Fahrzeuge und in die Variable $sql gesteckt. 

Nun wollte ich das Formular öffnen, und danach eine foreach-Schleife machen 

foreach($sql AS $ $marke
{
	echo $marke;
}

 

Momentan sieht es so aus:

<!DOCTYPE html><html><head><meta charset="utf-8"></head>
<body>

<?php
	
$con = mysqli_connect("", "root", "rooter");
mysqli_select_db($con, "fahrzeuge");
$sql = "Select make FROM fahrzeuge";
mysqli_query($con, $sql);
	
		
<p>Bitte treffen Sie Ihre Auswahl:</p>

	<form action="projekt1.php" method= "post">
	<select name="m">	

	foreach($sql AS $marke)
		echo $marke . "<br>";
										
	<option value="$marke" selected ="selected">Marken</option>
	</select>

	<p><input type="submit"> <input type="reset"></p>
	</form>*/
		
mysqli_close($con);
?>
</body></html>

Bin mir auch nicht klar, was unter "value" rein soll. Ich muss ja unter option jetzt die Variable $marke reinwerfen, damit es dann auch angezeigt wird.

 

Danke euch.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 19 Minuten schrieb checkaline:

Ja ich bin fast am Ende meiner Umschulung und ja ich habe viele Defizite. Was soll ich tun. Versuchen weiter zu lernen oder alles hinschmeißen?

Das kannst du vermutlich nur für dich selbst entscheiden. Da ich immer noch auf Antwort warte, warum du dich für ne Umschulung zum FI entschieden hast, kann ich dazu nix sagen.

Schade. Hätte man vielleicht im Voraus schon helfen können.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 5 Minuten schrieb neinal:

Das kannst du vermutlich nur für dich selbst entscheiden. Da ich immer noch auf Antwort warte, warum du dich für ne Umschulung zum FI entschieden hast, kann ich dazu nix sagen.

Schade. Hätte man vielleicht im Voraus schon helfen können.

Ich musste ein Job nehmen, wo ich eben am PC sitze bzw allgemein sitze. Bandscheibenvorfall. Und Bürotante wollte ich nicht werden. Fand es sehr interessant. Finde es immer noch interessant, aber sehr schwer.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

"Ein Job im Büro" ist leider nicht unbedingt der beste Grund sich für eine FI Aus- oder Umschulung zu entscheiden. Aber was solls. Der Zug ist abgefahren.

Eigentlich würde ich jedem davon abraten nach der Zeit abzubrechen.

Aber. Du musst für dich entscheiden, wie es weiter gehen soll. Das ist ja jetzt nur ein Auszug. Ich weiß nicht, wie deine anderen Kenntnisse oder dein Verständnis für die Themen sind. Genauso weiß ich nicht, was du nach der Umschulung vor hast. Durchziehen um danach dann doch wieder arbeitslos zu sein, hat wohl auch nicht viel Sinn. Aber das kann ich nicht beantworten, ohne Infos.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich möchte das einfach gerne weiter lernen wollen, mein Wissen ausbauen und später drin arbeiten. Aber jetzt geht es erstmal um das eigentliche Problem. Möchte nicht zu sehr ausschweifen. Kannst mir gerne privat schreiben.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich habe jetzt mal anders angefangen. 

Ich habe jetzt eine einfache Ausgabe gemacht. Diese funktioniert erstmal. Mir zeigt es die Marken an und auch von jeder Marke nur einmal.

	
$con = mysqli_connect("", "root", "rooter");
mysqli_select_db($con, "fahrzeuge");
$sql = "Select* FROM fahrzeuge GROUP BY make";
$res = mysqli_query($con, $sql);
$num = mysqli_num_rows($res);
   if($num > 0) echo "Ergebnis:<br>";
   else         echo "Keine Ergebnisse<br>";
	
while ($dsatz = mysqli_fetch_assoc($res))
      echo $dsatz["make"] . "<br>";

Nun hängt es eben am Formular :/

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Lange her, dass ich PHP gemacht habe, aber: Eine einfache (unsaubere) Möglichkeit ist es, den HTML-Code mit in das echo zu packen (wie du's ja mit dem <br> auch schon gemacht hast). Also irgendwie sowas:

echo "<form action='somepage.php' method='post'>";
while($dsatz = ...){
	echo "<option value='".$dsatz["name"]."'>...
}

(Vorsicht: Ich bin in der Syntax zu PHP nicht wirklich fit, kann sein, dass das so nicht 1:1 geht. Prinzipiell aber schon.)

Wie gesagt: Das ist nicht schön, aber so bekommst du schonmal was auf den Bildschirm. Perspektivisch kannst du dich ja mal damit befassen, wie man sowas geschickter und leichter wartbar umsetzt.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Mir hat hier nun endlich jemand geholfen. Das erste Formular ist fertig:

 

<!DOCTYPE html><html><head><meta charset="utf-8"></head>
<body>

<?php
	
include("db.php");
$sql = "Select make FROM fahrzeuge GROUP BY make";
$res = mysqli_query(connect(), $sql);
$num = mysqli_num_rows($res);

mysqli_close($con);

   if($num > 0) echo "Ergebnis:<br>";
   else         echo "Keine Ergebnisse<br>";
	
while ($dsatz = mysqli_fetch_assoc($res))
{
	
	$make[] = $dsatz["make"];
}
?>
	  
	  
	
<p>Bitte treffen Sie Ihre Auswahl:</p>

<form action="projekt_model.php" method= "post">
<select name="marke">
<?php foreach($make as $single_make): ?>											
	<option value="<?php echo $single_make ?>" ><?php echo $single_make ?></option>
<?php endforeach; ?>
</select>

<p><input type="submit"> <input type="reset"></p>

</form>
</body></html>

 

Jetzt mache ich eine neue Datei, für das nächste Formular. Das funktioniert leider noch nicht. Da bin ich noch am tüfteln, warum das jetzt so ist. Hier die 2. Datei:

<!DOCTYPE html><html><head><meta charset="utf-8"></head>
<body>
<?php

//unset($res);

include("db.php");

$sql = "Select model FROM fahrzeuge  WHERE make = '" . $_POST["marke"] ."' GROUP BY model";
$res = mysqli_query(connect(), $sql);
$num = mysqli_num_rows($res);

mysqli_close($con);

   if($num > 0) echo "Ergebnis:<br>";
   else         echo "Keine Ergebnisse<br>";
	
while ($result = mysqli_fetch_assoc($res))
{
	
	$model[] = $result["model"];
}
print_r($model);
?>	
	
<form action="projekt_type.php" method="post">
<select name="model">
	<?php foreach($model as $single_model): ?>											
		<option value="<?php echo $single_model ?>" ><?php echo $single_model ?></option>
	<?php endforeach; ?>
</select>

<p><input type="submit"> <input type="reset"></p>
</form>
	
<?php } ?>
</body></html>

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

dein Code sollte etwa so aussehen:

<?php
$con = mysqli_connect("", "root", "rooter");
mysqli_select_db($con, "fahrzeuge");

$sql = "Select make FROM fahrzeuge";
$result = mysqli_query($con, $sql);
if (!$result) {
    throw new Exception('Fehler in der Abfrage: ' . $sql);
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>	
        <p>Bitte treffen Sie Ihre Auswahl:</p>
        <form action="projekt1.php" method= "post">
            <select name="m">
            <?php while($marke = mysqli_fetch_assoc($result)) { ?>	
                <option value="<?= $marke['marke'] ?>" ><?= $marke['marke'] ?></option>
            <?php } ?>
            </select>
            <p>
                <input type="submit">
                <input type="reset">
            </p>
        </form>
    </body>
</html>

Wichtige Punkte sind:

EVA-Prinzip

Eingabe, Verarbeitung, Ausgabe. In diesem Fall gibt es keine eigegebenen Daten die validiert werden müssen etc. Aber du musst die Daten verarbeiten die du bereits im System hast und darstellen möchtest.

Das heißt für diesen Fall: Stelle zu allererst sicher, dass dein System alles bereitstellen kannst was du brauchst bevor du irgend etwas an den Client ausgibst.

- Bau die Verbindung zur Datenbank auf

- Sende die Abfrage an die Datenbank

- Frag nach, ob die Abfrage erfolgreich war

Das ist in dem Beispiel sehr grob gehalten, eigentlich müsstest du nach dem mysqli_connect auch nochmal nachfragen ob du die Datenbank überhaupt erreichen konntest.. dann sollten Fehler anders behandelt werden als dem User einfach eine Exception hinzuwerfen, aber meine Tastatur ist aktuell nicht gut um so viel zu coden.

Wechsel zwischen PHP und HTML

Bei deinem Code sieht man, dass du HTML und PHP einfach durcheinander schreibst ohne die PHP-Tags passend zu öffnen und zu schließen.

Bei meinem Code habe ich am Anfang einen größeren PHP-Block für die Beschaffung der darzustellenden Daten. Danach öffne ich im HTML immer wieder die PHP-Tags um ein paar Konstrukte unterzubringen, an diesen Stellen wird das HTML-Template um die Daten aus PHP erweitert:

<select name="m">
<?php while($marke = mysqli_fetch_assoc($result)) { ?>	
    <option value="<?= $marke['marke'] ?>" ><?= $marke['marke'] ?></option>
<?php } ?>
</select>

<?= $dsfsdf ?> ist die Kurzform für echo. Man könnte an der Stelle auch <?php echo $dsfsdf ?> schreiben.

Kenn deine Variablen

$sql enthält die Abfrage die du an die Datenbank sendest. Das Ergebnis dieser Abfrage fängst du nirgendwo auf, es landet im Nichts.

Später versuchst du dann über $sql zu iterieren.

Ich nutze dein $sql auch für die Abfrage und lasse das Ergebnis auf $result schreiben. Wäre die Abfrage syntaktisch falsch würde $result false sein, darauf prüfe ich und gebe entsprechend eine Exception aus die eine kurze Beschreibung des Fehlers "fehlerhafte Abfrage" und die Abfrage selbst enthält.

$result enthält übrigens nicht die Werte aus der Datenbank sondern ist nur eine Ressource über die du die Daten abholen kannst, dafür nutze ich später mysqli_fetch_assoc() um zeilenweise die Ergebnisse in Form eines assoziativen Arrays auszulesen.

Die Zeilen werden in der Schleife auf $marke geschrieben. Marke enthält den key 'make' den du in der Abfrage als Spalte angegeben hast.

 

EDIT zum zweiten Formular

include("db.php");

$sql = "Select model FROM fahrzeuge  WHERE make = '" . $_POST["marke"] ."' GROUP BY model";
$res = mysqli_query(connect(), $sql);

Das connect() als Parameter ist magic. Nutze lieber wie im ersten Formular eine Variable um die Verbindung aufzubewahren. Stell dir vor du würdest noch mehrere Abfragen absenden, dann würdest du jedes mal die bestehende Verbindung neu herstellen.

Die Abfrage ist eine Einladung. Nutz Prepared Statements um Usereingaben an die Datenbank zu senden.

Das GROUP BY in der Abfrage ist, auf den ersten Blick, seltsam. Hast du die gleichen Modelle mehrfach in der Tabelle?

Auch hier: Datenbankverbindung nicht erst mitten im Template aufbauen, mach sowas am Anfang um rechtzeitig auf Fehler reagieren zu können.

 

Noch eine persönliche Anmerkung:

Es ist super, dass du nicht die mysql-API nutzt. Aber mysqli ist immer noch ziemlich unbequem und an manchen Stellen unnötig umfangreich.

Wenn du die Zeit hast versuch dich in PDO einzuarbeiten, du müsstest dich dann an die Objekt-Syntax gewöhnen aber die Funktionsaufrufe sind bedeutend intuitiver. Zudem unterstützt es auch noch andere Datenbanksysteme, das heißt falls du z.B. mal PostgreSQL statt MySQL nutzt musst du dich nicht in eine neue API einarbeiten.

 

vor 14 Stunden schrieb pr0gg3r:

In ein Paragraph (<p>...</p>) kommen keine Blocklevel-Elemente (wie das Select oder das Input) sondern nur Textlevel-Elemente

select und input sind keine Block-Elemente.

bearbeitet von PVoss

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich danke euch. Das ist erstmal echt viel für mich und arbeite mich durch eure Texte mal durch. 

Extra Dateien: Er meinte ist für mich übersichtlicher als alles auf ein Haufen.

 

Und ja die Automarken gibt es mehrfach in der Datenbank, deshalb die Abfrage.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Die stehen doppelt weil zb Audi gibt es mit verschiedenen Baujahren dann mit verschiedenen typen usw

 

Ich habe mal noch eine wichtige Frage.

Ich habe ein if/else gemacht. Läuft an sich gut, aber in der Datenbank sind Felder zb so angegeben: Bus (SUV)

Wenn ich das ins if in die Klammer  so eintrage, gibt es mir keine Ausgabe. Liegt das an den Daten in Klammern?

 

if($size == Groß)
{	
	echo "Die Kosten für dieses Fahrzeug betragen 3500.00 €.";
}
else if($size == Klein)
{
	echo "Die Kosten für dieses Fahrzeug betragen 1500.00 €.";
}
else if($size == Mittel)
{
	echo "Die Kosten für dieses Fahrzeug betragen 2499.00 €.";
}
else if($size == Bus)
{
	echo "Die Kosten für dieses Fahrzeug betragen 3999.00 €.";
}
else if($size == Groß(SUV))
{
	echo "Die Kosten für dieses Fahrzeug betragen 4000.00 €.";
}

Er nimmt alles an wie zb die Auswahl klein, oder groß, aber nicht die mit (SUV) wo de Klammern drum sind :(

bearbeitet von checkaline

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hey,

du schreibst, dass die Felder zum Beispiel "Bus (SUV)" heißen. Fragst aber im Code nach "Bus" oder "Groß(SUV)" ab.

Kann es sein, dass du da einen Denkfehler hast? Oder hast du hier im Text was falsch erklärt?

 

Bin mir nicht sicher. Aber ich kenne es so, dass man Texte (Wie in deinem Fall) in Anführungszeichen setzen muss. Weil das ja der Inhalt der Variable ist, oder? Oder heißt die Variable so?

bearbeitet von neinal

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 4 Minuten schrieb checkaline:

Die stehen doppelt weil zb Audi gibt es mit verschiedenen Baujahren dann mit verschiedenen typen usw

Wenn man es richtig machen würde, hätte man eine Tabelle für die Marken und eine Tabelle für die Typen. Die Typen-Tabelle würde dann auf die Marken-Tabelle verweisen.

vor 6 Minuten schrieb checkaline:

Wenn ich das ins if in die Klammer  so eintrage, gibt es mir keine Ausgabe. Liegt das an den Daten in Klammern?

Was ist $size für ein Datentyp? Stecken da die Begriffe, wie "Mittel", "Bus", drinnen? Ist es also ein String?
Wenn ja, dann musst du die Begriffe auch in Hochkommata setzen. Also:

$size == 'Groß'

usw.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Musst du die Werte nicht in Anführungszeichen setzen? PHP ist da offenbar sehr nachsichtig und interpretiert die Dinger drüber tatsächlich als Werte. Bei xyz(...) wird er aber wohl versuchen, eine Funktion aufzurufen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Auch in Anführungsstrichen gehts leider nicht. 

Also :

Ich habe einmal Fahrzeuge ->Spalte: size. Die habe ich aus der Datenbank ausgelesen und in $size gesteckt.

Nun möchte ich vergleichen. Wenn $size zb. = Bus ist, dann gebe das und das aus.

Vorher durchläuft es noch andere Formulare, weil der Benutzer eine Marke, ein Typ usw auswählen muss.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden


×