Antworten auf deine Fragen:
Neues Thema erstellen

Insert MySql

Top_Gun

Aktives Mitglied

AW: Insert MySql

Ja! Und das ist auch richtig so ^^


Also da du nicht zurück zu deinem ersten Entwurf möchtest machen wir damit weiter:

Ein Formular ist normalerweise so aufgebaut, dass du verschiedene Daten via POST übergibst zB Name, Telefonnummer, Körbchengröße
Diese kannst du dann (je nachdem wie das Inputfeld hieß) aus dem POST-Array auslesen: $_POST['Name'] ($_POST ist der Ordner, Name die Registerkarte)

In deinem Fall, lässt du zwei Inputfelder erstellen, die beide den gleichen Namen haben. Somit versuchst du in den Ordner zweimal eine Registerkarte einzuheften die den gleichen Namen trägt. Im echten Leben mag das funktionieren, auch wenn es sinnfrei wäre. PHP aber erlaubt so etwas nicht. Wenn hier ein und der selbe Name verwendet wird, überschreibst du sozusagen die alte Registerkarte.
Deswegen kommt es auch zu dem von dir beschriebenen Effekt.


Wenn du dein Formular nicht aufbauen möchtest wie jeder andere, musst du mit einem zweidimensionalen Array arbeiten. Stelle dir vor, du könntest in einem Ordner einen weiteren Ordner einheften in dem du dann wieder Registerkarten drin hast. Das ganze würde dann so aussehen:
PHP:
while($i< 2)
{
echo '<input type="text" name="heim'.$i.'" />';
$i++;
}
Du hast dann also deinen Ordner $_POST mit der Registerkarte heim. Diese Registerkarte ist aber keine einfache Karte sondern ein Ordner in dem die Registerkarte $i zu finden ist:
PHP:
$_POST['heim'][$i]
PS: für alle die sich fragen was es mit den Ordnern und Registerkarten auf sich hat: Ich hatte dies als Beispiel genommen um via PN einige Erklärungen zu machen, daher verwende ich es jetzt weiter...

EDIT: Ein zweidimensionales Array ist also ein Array in einem Array. Das lässt sich sogar noch weiter treiben und noch weitere Arrays mit hinzupacken. Im allgemeinen spricht man hier von mehrdimensionalen Arrays.
 
Zuletzt bearbeitet:

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Meine Prüfung würde dann so aussehen?

PHP:
if(isset($_POST['heim'][$i]) && trim($_POST['heim'][$i]) != '')
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Steh schon wieder aufem Schlauch

Habe ich denn nicht die $i bereits definiert? bei der while-schleife? und zwar mit 0 und dann um 1 erhöt?
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Das heißt auch die Bedingung mit einer Schleife versehen?
z.B. so

PHP:
$i=0;
while($i<=2)
{
if(isset($_POST['heim'][$i]) && trim($_POST['heim'][$i]) != '')$i++;}

Sorry wenn des so "dumme" fragen sind - bin halt noch ein blutiger anfänger!
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Ich nu wieder :D
Mein Formualr sieht wie folgt aus - allerdings hab ich jetzt in Zeile 11 ein unerlaubtes Else - wat hab ich noch falsch?

PHP:
<?
if($_POST['send'])
{
 $i=0;
 while($i<= 2)
 {
 if(isset($_POST['heim'][$i]) && trim($_POST['heim'][$i]) != '')$i++;}
 {
 echo 'weiter gehts';
 }
 else
 {
 echo ' STOP!';
 }
}
else
{
?>
<form action="<? print $PHP_SELF ?>" method="post">
<?
$i=0;
while($i<= 2)
{
echo '<input type="text" name="heim'.$i.'" />';
$i++;
}
echo '<input type="submit" name="send" value="Absenden" />';
echo '</form>';
}
?>
 

EnricoS

Nicht mehr ganz neu hier

AW: Insert MySql

Rücke Deinen Quellcode noch ein bisschen besser ein. Dann wirst du deine Fehler besser erkennen können. In den meisten Fällen ist ein Zeichen (){}; zuviel oder in deinem Fall zu wenig gesetzt.

PHP:
<?php
if(isset($_POST['send']) && $_POST['send']=='Absenden')
{
  $i=0;
  while($i<= 2)
  {
    if(isset($_POST['heim'][$i]) && trim($_POST['heim'][$i]) != '')
    {
      $i++;
      echo 'weiter gehts';
    }
    else
    {
      echo ' STOP!';
    }
  }
}
else
{
  ?>
  <form action="<?php print($PHP_SELF); ?>" method="post">
  <?php
  $i=0;
  while($i<= 2)
  {
    echo '<input type="text" name="heim'.$i.'" />';
    $i++;
  }
  echo '<input type="submit" name="send" value="Absenden" />';
  echo '</form>';
}
?>

Gruß
Enrico
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Geb ich das Script so ein habe ich als ausgabe STOP und das endlos egal ob ich was eingebe oder nicht - also das kann auch net mein Fehler gewesen sein
 

Top_Gun

Aktives Mitglied

AW: Insert MySql

Teilweise deine Schuld, teilweise meine...

Bei den Inputfelder muss der Name nicht
PHP:
name="heim'.$i.'"
sein sondern
PHP:
name="heim['.$i.']"
damit es tatsächlich ein Array wird...

Und wenn du in einer Schleife eine if-Abfrage hast, dann musst du den counter auch im else Teil hochzählen lassen (oder den Counter außerhalb der if-Abfrage hochzälen lassen...).
PHP:
<?php
if(isset($_POST['send']) && $_POST['send']=='Absenden')
{
  $i=0;
  while($i<= 2)
  {
    if(isset($_POST['heim'][$i]) && trim($_POST['heim'][$i]) != '')
    {
      echo 'weiter gehts';
    }
    else
    {
      echo ' STOP!';
    }
    $i++;
  }
}
else
{
  ?>
  <form action="<?php print($PHP_SELF); ?>" method="post">
  <?php
  $i=0;
  while($i<= 2)
  {
    echo '<input type="text" name="heim['.$i.']" />';
    $i++;
  }
  echo '<input type="submit" name="send" value="Absenden" />';
  echo '</form>';
}
?>
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Ah, nun ham wir des danke.

Das ich beim Formular die $i so schreiben muss ['.$i.'] hatte ich gestern auch schon mal versucht da ja aber noch andere Fehler drin waren haben und das dann logischerweise nicht funktioniert hat hatte ich es wieder rausgenommen.

Eine Frage dazu hab ich aber noch - durch die schleife gibt er mir ja die Meldung "weiter gehts" oder STOP" mehrfach aus - kann ich das auf nur einmal ausgeben beschränken?
 

Top_Gun

Aktives Mitglied

AW: Insert MySql

jain... Wenn du keine Schleife hättest, oder wenn du in der Schleife lediglich variablen setzen würdest die du hinterher nochmals prüfen müsstest...

In einem Formular nimmt man eine solche Methode aber eigentlich nicht, da du hier kein mehrdimensionales Array hast sondern eigentlich nur ein fest definierstes Array mit bekannten Elementen, so dass du sie hinterher auch direkt abfragen kannst ohne eine Schleife zu benutzen...


EDIT: Wenn du einmal Probleme mit einem Array hast, kannst du dir mit
PHP:
print_r($array);
das komplette Array mit Elementen und Inhalten ausgeben lassen.
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Naja, mein egentlicher gedanke ist folgender:

Ich möchte bzgl. meinem Bundesliga-Tippspiel aus einer DB den jeweiligen spieltag auslesen - hinter jeder Partie sind dann immer zwei inputfelder (Tipp Heimmannschaft - Tipp Gastmannschft) wo der Tippspieler seine Tipps halt einträgt.
Durch die Schleife bekomm ich dann soviel inputfelder wie es partien am spieltag gibt. Da wollte ich das so lösen - aber wenn net jedes feld gefüllt ist soll er das halt melden und erst die tipps in die db updaten wenn alles felder gefüllt sind.

Sollte ich dies anders realisieren?
 

Top_Gun

Aktives Mitglied

AW: Insert MySql

Du willst es also so aufbauen:

Heimmanschaft[1] ---- Gastmannschaft[1]
Heimmanschaft[2] ---- Gastmannschaft[2]
Heimmanschaft[3] ---- Gastmannschaft[3]
Heimmanschaft[4] ---- Gastmannschaft[4]

Woher weißt du denn nun welche Gastmannschaft welche ist? Ist Gastmannschaft[1] Hannover 96 und gegen wen spielen die eigentlich? Oder war es doch Gastmannschaft[2]?

Aber bevor wir uns jetzt nähere Gedanken dazu machen wie es aussehen könnte, zeig uns doch mal wie dein Datenbankmodell aussieht. Wo und wie werden denn die Tipps gespeichert? Vielleicht kann man anhand der Datenbankstruktur ne gute Lösung finden...
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Hab eine Tabelle namens "Spieltag" dort sind die spalten "Spiel_id" "Spieltag" "Heimmann" "Gastmann" "Tore_H" "Tore_G" hinterlegt.

Für die einzelnen Tippspieler gibt es je eine eigene Tabelle. Spalte "Spiel_id" "Spieltag" "Tipp_h" "Tipp_g" "Punkte"

Über ein hidden feld übergeb ich die Spiel_id mit und hab somit eine - so denke ich - eindeutige identifikation.

Im grunde läuft des auch soweit - nur halt die Abfrage ob alle Form-Felder bei der tippabgabe gefüllt sind die fehlt(e) mir noch
 

Top_Gun

Aktives Mitglied

AW: Insert MySql

Ich weiß nicht warum du pro Tippspieler eine eigene Tabelle hast, aber sonst sieht der Aufbau vernünftig aus... aber ich würde aus der Tipp-Tabelle den Spieltag herausnehmen, da du den über die Spiel_id aus der Spieltag-Tabelle heraus bekommst...

Hmm ok, du könntest dein Formular also tatsächlich so aufbauen wie du dir das ursprünglich gedacht hast (ist in dem Fall vielleicht sogar sinnvoll), allerdings musst du irgendwie herausfinden wie groß $i ist.
(und bei dem hiddenfield Spiel_id musst du auch mit $i arbeiten)

Und dann fragst du bei der Auswertung nicht ab ob sie gesetzt ist oder ob != '' sondern halt das gegenteil. Wenn ja, dann könnte eine error-Variable TRUE werden. Else brauchst du an der Stelle dann gar nicht.
Nach der Schleife fragst du dann ab, ob die error-Variable TRUE ist, wenn ja, dann sind nicht alle ausgefüllt, wenn nein, dann sind alle ausgefüllt...
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Ja das mit der Spieler-Tabelle gefällt mir eigentlich so auch net - mir wäre es lieber hätt alles in einer. Aber wie könnt ich das denn machen? Gut hab ja die spiel id drin - hm...aufbau in etwa so "Spiel_id" "Tipper" "Tipph" "tippg" ???

error-Variable? is des ein fixer PHP wert oder meinste das so das ich die quasi frei erstellen kann?
Wie würde des mim error lauten bzw. wie baut man so ne error variable?

etwa so

PHP:
if(!isset($_POST['heim'][$i]) && $_POST['heim'][$i]=='')
{
$error == TRUE
}

Um herauszufinden wie groß $i ist - kann ich doch
PHP:
count($i)
einsetzten, oder nicht?
 
Zuletzt bearbeitet:

Top_Gun

Aktives Mitglied

AW: Insert MySql

Ja das mit der Spieler-Tabelle gefällt mir eigentlich so auch net - mir wäre es lieber hätt alles in einer. Aber wie könnt ich das denn machen? Gut hab ja die spiel id drin - hm...aufbau in etwa so "Spiel_id" "Tipper" "Tipph" "tippg" ???
Ja, so in der Art.
Ich würde: "Spiel_id" "Tipper_id" "Tipph" "Tippg"
und dazu ne dritte Tabelle in der du Daten zum Tipper sammeln kannst: "Tipper_id" "Benutzername" "Email"

error-Variable? meinste das so das ich die quasi frei erstellen kann?
Wie würde des mim error lauten bzw. wie baut man so ne error variable?

etwa so

PHP:
if(!isset($_POST['heim'][$i]) && $_POST['heim'][$i]=='')
{
$error == TRUE
}
Ja, genau...

Um herauszufinden wie groß $i ist - kann ich doch
PHP:
count($i)
einsetzten, oder nicht?
Nein. Du musst dir klar machen, dass du (obwohl es die selbe Seite ist) dich wegen der if-Abfrage auf zwei eigenen Seiten bewegst. In dem Moment in der die Auswertung läuft, weiß das Script nicht mehr wie groß $i ist.
Du musst das also von Script a (Formular) zu Script b (Auswertung) bekommen...
Wann willst du das also counten?
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

hm..ok. $_POST['$i'] is wohl komplett falsch des so zu übergeben??


Was mir noch einfällt - ich will ja auch noch "richtig getippt, Tendenz, falsch getippt und punkte" pro spiel bei der spieler liste haben, meinste sollte da einfach die spalten "Richtig" "Tendenz" usw. einfügen? geht das denn überhaupt?
 
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

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

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