php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.12.2008, 11:34  
22hase
Gast
 
Beiträge: n/a
Standard

dennoch sind felder wie preis, tax,buchbar usw auch noch arrays
und die möchten doch auch durch ne for schleife oder?

ich lasse mich gern bessern belehren
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.12.2008, 11:38  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

nee eben nich...

du musst dir das wie einen Datensatz vorstellen (siehe deine gerade gemachte Tabelle in #

wenn es das erste Feld des Datensatzes gibt, dann muss es alle anderen in dem Datensatz (der Zeile) auch geben und die haben die gleiche Nr:

airport1[0] | airport2[0] | airport3[0] | airport4[0] | zielairport[0] | preis[0]
airport1[1] | airport2[1] | airport3[1] | airport4[1] | zielairport[1] | preis[1]
airport1[2] | airport2[2] | airport3[2] | airport4[2] | zielairport[2] | preis[2]
airport1[3] | airport2[3] | airport3[3] | airport4[3] | zielairport[3] | preis[3]
cycap ist offline  
Alt 19.12.2008, 12:36  
22hase
Gast
 
Beiträge: n/a
Standard

ok hab das mal so probiert wie du. aber bissl abgeändert so wie ich besser klar komme.

PHP-Code:
if(isset($_POST['eintrag']))
{
  for(
$x=1;$x<=4;$x++)
  { 
    foreach(
$_POST['airport$x'] as $code => $val)
    {
      
$qry "SELECT ID FROM airports WHERE Code = '".$_POST['airport$x'][$code]."'" or die(mysql_error());
      
$erg mysql_query($qry);
      while(
$a mysql_fetch_object($erg))
      {
      
        
$eintrag "INSERT INTO tabelle (IDs$x)VALUES ('".$a->ID."')";
    if(!
mysql_query($eintrag)) 
    { 
     exit(
mysql_error()); 
    } 
   else  
    { 
     echo 
'<strong><font color="#FF0000">Angebote erfolgreich gespeichert!<br></font></strong>'
    } 
      }
    }
  }

mh.komisch ist nur das wenn wenn ich mir nach for-schleife (anfang) ein echo mache nur so zum teste kommt das ne...es kommen auch keine fehler meldung oder was anderes...

die felder müssen aber weiterhin airport1[] usw heißen, richtig?
 
Alt 19.12.2008, 12:46  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Andere Herangehensweise:

PHP-Code:
<html>
  <head>
    <title>...</title>
  </head>
  <body>
    <form action="?" method="post">
      <table border="1">
        <tr><th>1</th><th>2</th><th>3</th><th>4</th></tr>
        <tr>
          <td align="center"><input type="text" name="ds[0][airport1]" size="3"></td>
          <td align="center"><input type="text" name="ds[0][airport2]" size="3"></td>
          <td align="center"><input type="text" name="ds[0][airport3]" size="3"></td>
          <td align="center"><input type="text" name="ds[0][airport4]" size="3"></td>
        </tr>
        <tr>
          <td align="center"><input type="text" name="ds[1][airport1]" size="3"></td>
          <td align="center"><input type="text" name="ds[1][airport2]" size="3"></td>
          <td align="center"><input type="text" name="ds[1][airport3]" size="3"></td>
          <td align="center"><input type="text" name="ds[1][airport4]" size="3"></td>
        </tr>
        <tr>
          <td align="center"><input type="text" name="ds[2][airport1]" size="3"></td>
          <td align="center"><input type="text" name="ds[2][airport2]" size="3"></td>
          <td align="center"><input type="text" name="ds[2][airport3]" size="3"></td>
          <td align="center"><input type="text" name="ds[2][airport4]" size="3"></td>
        </tr>
        <tr>
          <td colspan="4"><input type="submit" /></td>
        </tr>
      </table>
    </form>
<?php
if ( isset($_POST['ds']) && is_array($_POST['ds']) ) {
  foreach(
$_POST['ds'] as $ds) {
    echo 
$ds['airport1'], ', '$ds['airport2'], ', '$ds['airport3'], ', '$ds['airport4'], "<br />\n";
  }
}
?>
  </body>
</html>
(zum Ausprobieren)
David ist offline  
Alt 19.12.2008, 13:01  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

sorry, mein Fehler, das $x wird natürlich in einfachen Anführungszeichen nicht geparst, da musst du doppelte nehmen, also

PHP-Code:
foreach($_POST["airport$x"] as $code => $val
und

PHP-Code:
$qry "SELECT ID FROM airports WHERE Code = '".$_POST["airport$x"][$code]."'" or die(mysql_error()); 
cycap ist offline  
Alt 19.12.2008, 13:26  
22hase
Gast
 
Beiträge: n/a
Standard

ah ok, hätte mir auch auffallen können

joa so jetzt sperichert es das ganz so hier

aber ergibt bis jetzt noch das selbe problem wie ich mit der anderen lösung hatte und zwar

Tabelle sieht so aus:

ID1 | ID2 | ID3 | ID4 ...

im normals sollte es ja so speichern

ID1 | ID2 | ID3 | ID4 ...
1 | 2 | 3 | 4 ...

aber es speichert so

ID1 | ID2 | ID3 | ID4 ...
1 | 0 | 0 | 0 |
0 | 2 | 0 | 0 |
0 | 0 | 3 | 0 |
0 | 0 | 0 | 4 |

also statt jede ID in einer zeile zu speichern, speichert er jede ID in einen neue zeile, zwar in die richtige spalte aber eben neue zeile das hatte ich erst ja auch schon
0 |
 
Alt 19.12.2008, 13:29  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Dann musst du dir die IDs in der while-schleife nur merken und später ein INSERT INTO tabelle (ID1,ID2,ID3,ID4) etc. machen... ist doch eigentlich ganz logisch...

EDIT:
dann würde ich die Schleifen aber umdrehen, also erst die foreach und dann die for, wie ich ja in #10 gesagt hab, kannst du ja das $x in der foreach-Schleife auch einfach durch ne 1 ersetezn

Geändert von cycap (19.12.2008 um 13:33 Uhr).
cycap ist offline  
Alt 19.12.2008, 14:18  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Teste mal
Code:
"INSERT INTO tabelle (ID1,ID2,ID3,ID4) VALUES (
     SELECT ID FROM airports WHERE Code = '".$_POST["airport1"][$code]."',
     SELECT ID FROM airports WHERE Code = '".$_POST["airport2"][$code]."',
     SELECT ID FROM airports WHERE Code = '".$_POST["airport3"][$code]."',
     SELECT ID FROM airports WHERE Code = '".$_POST["airport4"][$code]."')"
__________________
Phoscur ist offline  
Alt 19.12.2008, 14:20  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

@Phlegma: das gleiche hab ich ihm hier auch schon gesagt: http://www.php.de/datenbanken/49905-...tml#post387471 (Datenbank- Formularproblem)

Allerdings müssen die Subquerys glaube ich in Klammern oder? Kann auch sein das ich mich da jetzt irre...
cycap ist offline  
Alt 19.12.2008, 14:44  
22hase
Gast
 
Beiträge: n/a
Standard

hab did jetzt so

PHP-Code:
if(isset($_POST['eintrag']))
{
  for(
$x=1;$x<=4;$x++)
  { 
    foreach(
$_POST["airport$x"] as $code => $val)
    {       
      
$eintrag "
 
     INSERT INTO tabelle (ID1,ID2,D3,ID4) VALUES (
     (SELECT ID FROM airports WHERE Code = '"
.$_POST["airport1"][$code]."'),
     (SELECT ID FROM airports WHERE Code = '"
.$_POST["airport2"][$code]."'),
     (SELECT ID FROM airports WHERE Code = '"
.$_POST["airport3"][$code]."'),
     (SELECT ID FROM airports WHERE Code = '"
.$_POST["airport4"][$code]."'))"  ;  
     if(!
mysql_query($eintrag)) 
    { 
     exit(
mysql_error()); 
    } 
   else  
    { 
     echo 
'<strong><font color="#FF0000">Angebote erfolgreich gespeichert!<br></font></strong>'
    } 
 
    }
  } 


hab das jetzt so..und es trägt auch richtig ein...aber wieso kommt da diese fehlermeldung

Column 'ID1' cannot be null

ist das if (fehler ausgebe) was falsch dran?

und normaler weiße wenn ich sonst über formular in die db geschrieben habe blieben die felder wo ich nix reingeschrieben habe logischer weise leer. hier muss aber immer alle 4 felder ausfüllen.

did hat ich auch noch ne
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Script mehrfach ausführen .David. PHP Tipps 2008 11 21.01.2010 18:51
[Erledigt] Mehrfach vorkommender Wert in Ausgabeschleife nur einmal darstellen nopileos PHP Tipps 2008 16 13.08.2008 08:00
[Erledigt] Count mit Where und mehrfach OR Flix Datenbanken 5 21.06.2008 23:02
Mehrfach Join lazydog Datenbanken 2 08.05.2008 16:09
Mehrfach Mysql Count() Quagga PHP Tipps 2007 6 01.02.2007 18:10
Mehrfach where in der ABfrage? Kori Datenbanken 4 16.01.2007 16:46
mehrfach ordnen faultier Datenbanken 2 23.08.2005 13:32
mehrfach oder in der Abfrage PHP Tipps 2005-2 2 15.08.2005 23:13
gleichen code mit untersch. Var. mehrfach includen PHP Tipps 2005-2 8 10.07.2005 18:33
[Erledigt] SQL mehrfach Datenbanken 8 27.04.2005 18:19
Formular auslesen mit PHP -> Variable mehrfach aúsgeben DDogg PHP Tipps 2005 2 21.04.2005 13:16
Formular mehrfach auslesen PHP Tipps 2005 17 27.01.2005 15:04
MySQL mehrfach abfrage PHP Tipps 2004-2 3 22.11.2004 14:23
Skript mit langer Ausführungszeit => mehrfach ausgeführt PHP-Fortgeschrittene 10 12.10.2004 20:22

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mehrmals mysql_fetch_object in for-schleife, html formular mehrmals aufrufen for schleife, php variable mit schleife mehrfac, for schleife php jeder zweite eintrag, while schleife php mehrfach, mit php html-zeile mehrfach

Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum