Antworten auf deine Fragen:
Neues Thema erstellen

Insert MySql

Top_Gun

Aktives Mitglied

AW: Insert MySql

hm..ok. $_POST['$i'] is wohl komplett falsch des so zu übergeben??
Das wird so nicht gehen ;)
Aber überleg mal weiter, ganz verkehrte Richtung ist das nicht...

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?
Ich würde bei der Tipp-Tabelle noch eine Spalte "Punkte" oder so hinzufügen in der du dann einfach den Wert einträgst: "Richtig" = 3, "Tendenz" = 1, "Falsch" = 0
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Also habs jetzt nicht getestet aber vielleicht so?

PHP:
$anzahli=count($_POST['heim'][$i]);
So müsste ich doch die Anzahl der inhalte aus dem Formular haben, und könnte mit meiner Schleife so beginnen

PHP:
$i=0;
while($i<=$anzahli)
{
....
usw.
}
 

azraelb

Noch nicht viel geschrieben

AW: Insert MySql

Hallo, also dein Datenbankmodell war schon ziemlich erschreckend ;)

Deshalb habe ich dir mal als Beispiel ein mögliches (wenn auch noch nicht ganz perfektes Modell) erstellt (Die wichtigsten Attribute habe ich mal übernommen):




"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?"

Du könntest mit einer Boolean-Variablen arbeiten:

Vor dem if-Teil deklarierst du die Variable und setzt sie = true.
Im if-Teil gibst du nicht die Erfolgsmeldung aus und im else setzt du die Variable = false.
Nach der ganzen Bedingung fragst du ab, ob die Variable true oder false ist:
-> Bei true => Erfolgsmeldung
-> Bei false => Fehlermeldung

hoffe, ich konnte dir n bissl helfen,

Gruß AZ
 

Top_Gun

Aktives Mitglied

AW: Insert MySql

@azrael ich weiß nicht was an dem db modell erschreckend war... Leider kann ich mir hier deines nicht anschauen...
@red kann von hier leider schlecht coden dein ansatz ist richtig hat aber noch nen fehler... Ich meld mich sobald es geht...
 

EnricoS

Nicht mehr ganz neu hier

AW: Insert MySql

Ich weiß zwar nicht wo Du Deinen Quellcode zum Schluss einsetzt...

Ich möchte gerne meine niederschmetternden Senf dazu abgeben :)

Der Sinn und Zweck einer while - Schleife hast du prima zweckentfremdet. Warum versuchst du dich nicht einfach mal mit den paar Grundlagen die es gibt auseinanderzusetzen. Schleifen sind Grundelemente die nun echt nicht schwer sind.

Wegen drei Textfeldern PHP zu bemühen halte ich für völlig sinnlos. Und um ein Array auszuwerten nutz man die Schleife "foreach" und nicht while mit irgendwelchen Zählern. Und selbst wenn es unbedingt ein Zähler sein muss verwende wenigsten die richtige Schleife "for".

PHP:
<?php
if(isset($_POST['send']) && $_POST['send']=='Absenden') {
  $error=false;
  $heim=$_POST['heim'];
  foreach( $heim as $wert){
    if(trim($wert) == '') $error=true;
  }
  if($error == true) echo ('Bitte alle Felder ausfüllen!');
}
else {  ?>
  <form action="<?php print($PHP_SELF); ?>" method="post">
    <input type="text" name="heim[]" />
    <input type="text" name="heim[]" />
    <input type="text" name="heim[]" />
    <input type="submit" name="send" value="Absenden" />
  </form>
<?php } ?>
 

azraelb

Noch nicht viel geschrieben

AW: Insert MySql

@azrael ich weiß nicht was an dem db modell erschreckend war... Leider kann ich mir hier deines nicht anschauen...

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"

Naja ne Tabelle pro Tippspieler, doppelte Datenhaltung, da Attribute in verschiedenen Tabellen vorkommen (vielleicht interpretiere ich das auch falsch weil die Spalten gleich heißen), die Tabellen spiegeln teilweise keine realen Objekte wieder, die Datensätze sind wahrscheinlich auch nicht immer atomar...

Alles in allem findet man allein in den 2 geposteten Tabellen genug Sachen, die man eigentlich nicht machen sollte...


@Top_Gun: warum kannst du das Modell nicht ansehen?
 

netbandit

Aktives Mitglied

AW: Insert MySql

Beitrag nur zum Fehler. Ob und wie man es besser lösen kann, überlasse ich den "Profis"
PHP:
while($i<=2)
  {
    if(trim($_POST['heim'][$i]) == '')
    { 
      $error=true;
    $i++;  // Zähler an falscher Stelle  
    }
    // Würde hier, meiner Meinung nach, mehr Sinn machen
  }
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

@TopGun
Hab die Lösung (denke ich) so funktioniert es

PHP:
$anzahli=count($_POST['heim']);
if(isset($_POST['send']) && $_POST['send']=='Absenden')
{
  $i=0;
  while($i<=$anzahl[$anzahli])
  {
    if(trim($_POST['heim'][$i]) == '')
    { 
      $error=TRUE;     
    }
   $i++;
  }

Nur ne erklärung hab ich nicht - also net so wirklich
Warum musst ich denn jetzt schreiben "$anzahl[$anzahli]"
Ist $anzhal mein Ordner und $anzhali meine Registerkarte? und die Registerkarte enthält den Ortnder Post mit der Registerkarte $i?
 

saila

Moderatorle

AW: Insert MySql

Also ich hoffe mal das ihr wisst, was ihr hier macht.....

@redbull2906

Dein letztes Beispiel beinhaltet das Risiko einer Endlosschleife. Darüber hinaus wäre es mal angebracht, du würdest dich entsprechend zu den eingesetzten PHP Aktionen/Funktion informieren. Dadurch würden sich einige Fragen von dir selbst erklären.

Und etwas nachdenken würde auch nicht schaden. Wenn hier bereits darauf hingewiesen wurde, das z.B. isset() eingesetzt werden soll um zu prüfen, ob die Variable vorhanden ist, macht diese Zeile wohl keinen Sinn:
PHP:
$anzahli = count($_POST['heim']);

Gleiches gilt für den Einsatz von while oder for oder foreach usw..

Also - das ist nicht böse gemeint - häng dich mal in's Zeug und lese zumindest mal nach und am besten bei PHP: Hypertext Preprocessor
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Damit wir mal alle auf einen Nenner kommen - ich setzte das Script später als Tippabgabeseite ein - Spieltag wir aus einer DB generiert
Im Moment sieht mein Script wie folgt aus

PHP:
<?if(isset($_POST['Send']) && $_POST['Send']=='Absenden')
{
  $i=0;
  while($i<= ?????) ///hier sollte ich dann wohl die anzahl der input-felder als variable definieren??
  {
    if(trim($_POST['heim'][$i]) == '' && trim($_POST['gast'][$i])=='')
    {    
      $error=TRUE;        
    }
   $i++;
  }
  $i=0;
  while($i<= ?????) ///hier sollte ich dann wohl die anzahl der input-felder als variable definieren??
  {
   if(!is_numeric($_POST['heim'][$i]) && !is_numeric($_POST['gast'][$i]))
   {
     $error2=TRUE;
   }
  $i++;
  }
  if(isset($error))
      {
      echo 'Bitte alle Felder ausfüllen';
    }
      else if(isset($error2))
      {
        echo 'Bitte nur Zahlen eintragen';
      }
    if(!isset($error) && !isset($error2))
    {
//Daten eintragen
            $anzahl=count($_POST['heim']);
            for($a=0;$a<$anzahl;$a++)
            {
                $tipph=$_POST['heim'][$a];
                $tippg=$_POST['gast'][$a];
                $spielid=$_POST['id'][$a];
                $eintragen = "INSERT INTO user (spiel_id, spieltag, tipph, tippg) VALUES ('$spielid', '$spieltag', '$tipph','$tippg')";
                $update=mysql_query($eintragen);
            }
            if($update==true)
            {
                echo 'Daten wurden eingetragen';
            }
            else
            {
                echo 'Fehler beim updaten!';
            }
    }
}
else
{
?>
<form action="<? print $PHP_SELF ?>" method="post">
<?
echo '<table><tr><th>Heim</th><td></td><th>Gast</th><th colspan="2">Tipps</th></tr>';
    $i=0;
    while($row=mysql_fetch_array($ergebnis))
    {
    echo '<tr><td>'.$row["heim"].'</td><td>:</td><td>'.$row["gast"].'</td><td><input type="text" size="2" name="heim['.$i.']" /><input type="hidden" name="id['.$i.']" value="'.$row["spiel_id"].'" /></td>
    <td><input type="text" size="2" name="gast['.$i.']" /><input type="hidden" name="id['.$i.']" value="'.$row["spiel_id"].'" /></td></tr>';
    $i++;
    }
echo '</table>';
echo '<input type="submit" name="Send" value="Absenden" />';
echo '</form>';
}
?>
Aber er prüft immer noch nicht richtig ob alle Felder gefüllt und numerisch sind - ich bin schon am grübeln aber noch hab ich keine Lösung für mein Problem!
 

redbull2906

Nicht mehr ganz neu hier

AW: Insert MySql

Ok jetzt dürfte ich es haben - hätte sollen noch mal zwei minuten länger überlegen bevor ich poste - so gehts jetzt

PHP:
<?$anzahl=count($_POST['heim']);
if(isset($_POST['Send']) && $_POST['Send']=='Absenden')
{
  $i=0;
  while($i<$anzahl)
  {
    if(trim($_POST['heim'][$i]) == '' && trim($_POST['gast'][$i])=='')
    {    
      $error=TRUE;        
    }
   $i++;
  }
  $i=0;
  while($i<$anzahl)
  {
   if(!is_numeric($_POST['heim'][$i]) or !is_numeric($_POST['gast'][$i]))
   {
     $error2=TRUE;
   }
  $i++;
  }
  if(isset($error))
      {
      echo 'Bitte alle Felder ausfüllen';
    }
      else if(isset($error2))
      {
        echo 'Bitte nur Zahlen eintragen';
      }
    if(!isset($error) && !isset($error2))
    {
//Daten eintragen
            $anzahl=count($_POST['heim']);
            for($a=0;$a<$anzahl;$a++)
            {
                $tipph=$_POST['heim'][$a];
                $tippg=$_POST['gast'][$a];
                $spielid=$_POST['id'][$a];
                $eintragen = "INSERT INTO user (spiel_id, spieltag, tipph, tippg) VALUES ('$spielid', '$spieltag', '$tipph','$tippg')";
                $update=mysql_query($eintragen);
            }
            if($update==true)
            {
                echo 'Daten wurden eingetragen';
            }
            else
            {
                echo 'Fehler beim updaten!';
            }
    }
}
else
{
?>
<form action="<? print $PHP_SELF ?>" method="post">
<?
echo '<table><tr><th>Heim</th><td></td><th>Gast</th><th colspan="2">Tipps</th></tr>';
    $i=0;
    while($row=mysql_fetch_array($ergebnis))
    {
    echo '<tr><td>'.$row["heim"].'</td><td>:</td><td>'.$row["gast"].'</td><td><input type="text" size="2" name="heim['.$i.']" /><input type="hidden" name="id['.$i.']" value="'.$row["spiel_id"].'" /></td>
    <td><input type="text" size="2" name="gast['.$i.']" /><input type="hidden" name="id['.$i.']" value="'.$row["spiel_id"].'" /></td></tr>';
    $i++;
    }
echo '</table>';
echo '<input type="submit" name="Send" value="Absenden" />';
echo '</form>';
}
?>
 

saila

Moderatorle

AW: Insert MySql

Das mal als Hilfestellung auf die Schnelle:
PHP:
<?php
// inizialisieren
$anzahl = 0;

if( is_array( $_POST['heim'] ) && is_array( $_POST['gast'] ) ) {
    $anzahl = count( $_POST['heim'] );
}

if( isset( $_POST['Send'] ) && $_POST['Send'] == 'Absenden' && $anzahl ) {
    
    // initialisiere
    $error = array();
    // Postloop
    while(list( $key, $value ) = each($_POST['heim'] ) ) {
        // testausgabe um zu prüfen ob die entsprechende Var korrekten Inhalt hat.
        echo $_POST['heim'][$key] .' '. $_POST['gast'][$key] .'<br />';    

        if( empty( $_POST['heim'][$key] ) || trim( $_POST['heim'][$key] ) == '' OR 
            empty( $_POST['gast'][$key] ) || trim( $_POST['gast'][$key]) == '' ) {
            
                $error[1] = 1;
                break; // weitere verarbeitung unterbrechen.
                // hier entsprechende Aktion ausführen oder was auch immer....
                
        } else if( isset( $_POST['heim'][$key] ) && !(int)$_POST['heim'][$key] ) {
            
            $error[2] = 2;
            break; // weitere verarbeitung unterbrechen.
            
        } else if( isset( $_POST['gast'][$key] ) && !(int)$_POST['gast'][$key] ) {
            
            $error[3] = 3;
            break; // weitere verarbeitung unterbrechen.
            
        } else {
            // hier nun Datenverarbeiten sofern der Aufbau deiner Tippeingabe korrekt ist
            // und zu dieser Verarbeitung passt.
            // Oder die Daten in die DB eintragen, da ja kein Fehler vorhanden ist.
            // eignet sich natürlich nur für eine einzige Spieleingabe!! 
            // nicht verwendbar für Mehrfachtippabgabe
            // check auch mal die Funktion implode von PHP
            
            /* ... hier den db_query */
            // danach 
            header('Location: http://www.deineDomain.de/erfolgsseite.html' );
        }
    }
    
    if( isset( $error[1]) || isset( $error[2] ) || isset( $error[3] ) ) {
        // Diese Ausgaba kann auch in HTML erfolgen oder hier den 
        // passenden Text an die error-Variable anhängen bzw. Array erweitern
        // beispiel
        if( $error[1] ) { $error[1][] = 'Ohne Daten geht nix.'; }
        if( $error[2] ) { $error[2][] = 'Nur integer ist möglich'; }
        if( $error[3] ) { $error[3][] = 'Bei Gast geht auch nur integer'; }
    }
} 
?>

und dann ist mir noch aufgefallen, dass die Values aus input-type text nicht dem Array zugeordnet sind. Sprich das fehlen noch [$i]. Ansonsten bekomst du nie Daten geliefert.

Selbstverständlich ungetestet und ohne Garantie ;)
 

Top_Gun

Aktives Mitglied

AW: Insert MySql

Naja ne Tabelle pro Tippspieler, doppelte Datenhaltung
Davon waren wir doch schon längst weg...
Wenn man in deinem Beispiel die unteren Tabellen mit Spielern und Toren etc weglässt bist du bei einem ähnlichen Ergebnis wie wir, nur dass du noch einen Schritt weiter geganngen bist und sogar die Mannschaften in eine Tabelle gesteckt hast.
Klar ist das die bessere Methode und so macht man es eigentlich auch, aber ob ich am Anfang so perfekt arbeite... ;)

warum kannst du das Modell nicht ansehen?
Der Browser in meinem Handy hatte etwas gegen die Bildhostingseite und hat mir nicht ein Bild dort angezeigt...

Wegen drei Textfeldern PHP zu bemühen halte ich für völlig sinnlos.
Allein dieser Satz zeigt, dass du scheinbar nicht begriffen hast worum es hier geht und was am Ende dabei rauskommen soll.
Dies gilt scheinbar für den ein oder anderen der hier gepostet hat ebenfalls.
Wenn ihr schon euren Senf dazu geben wollt, dann sollte man sich vorher auch den ganzen Thread durchlesen.


@redbull: Also in deinem zuletzt geposteten Code, sind zwar hier und da noch einige Kanten und auch Fehler (vor allem das von Saila angesprochene überprüfen der $_POST-Variablen) alles in allem ist er aber brauchbar und ich bin der Meinung, dass das ne gute Arbeit war und du sicherlich mehr daraus machen kannst, wenn du ein bissl mehr Übung hast.
Ich hab jetzt weder deinen Code getestet, noch den von Saila. Wenn deiner funktioniert, benutze ihn ruhig, bessere aber vorher noch nach ;)
Kannst ja bei Saila abgucken, grundsätzlich weiß er was er tut...
Ich werd wohl erst am Montag wieder dazu kommen hier reinzuschauen und etwas aktiver zu sein...
 

saila

Moderatorle

AW: Insert MySql

@TopGun,

nein den Code kann er eigentl. nicht nehmen. Es besteht nach wie vor die Gefahr der Endlosschleife.

Und ich weis nie was ich tue - wundere mich immer über mich selbst.
 
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.635
Beiträge
1.538.476
Mitglieder
67.559
Neuestes Mitglied
hanuta
Oben