php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.01.2012, 19:21  
meikel
Gast
 
Beiträge: n/a
Standard

<jux>
Zitat:
Zitat von Falki14 Beitrag anzeigen
Nein natürlich nicht.
Obacht. Det isn dielektrischer Moderator. Wat der sacht, mußte machen... <ggg>
</jux>
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 15.01.2012, 19:10  
Neuer Benutzer
 
Registriert seit: 07.01.2012
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Falki14 befindet sich auf einem aufstrebenden Ast
Standard

Tut mir Leid, aber ich komme im Moment wirklich einfach auf keine Lösung. Ich habe es jetzt mit einem 2 Array Probiert wo die neuen Checked Werte reingeladen werden und dann mit dem alten array verglichen werden abder das funktioniert leider auch nicht. Ich frage ja nicht nach um euch auf die Palme zu bringen, ich verstehe es wirklich nicht!

Mit freundlichen Grüßen

Falki14
Falki14 ist offline   Mit Zitat antworten
Alt 15.01.2012, 19:20  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Falki14 Beitrag anzeigen
Tut mir Leid, aber ich komme im Moment wirklich einfach auf keine Lösung.
Dann ändere das (von Dir dürftig geschilderte) Konzept bzw. den Algorithmus.

Hoffentlich mußte da nicht ein ggf. schon mieses Konzept aufbohren, weil Dein Chef gesagt hat "Ich wünsch mir was".

Also:
was soll damit erreicht werden? SOLL und IST
wie sieht die Tabellenstrucktur aus? Datentyp und Beschreibung
ein wenig HTML, wie das Formular in etwa aussieht

Und lies Dir im Handbuch durch, was Sessions sind und was man damit anstellen kann. Könnte in Deinem Falle ein SQL Query einsparen.
  Mit Zitat antworten
Alt 15.01.2012, 20:01  
Neuer Benutzer
 
Registriert seit: 07.01.2012
Beiträge: 10
PHP-Kenntnisse:
Anfänger
Falki14 befindet sich auf einem aufstrebenden Ast
Standard

Ok dann liefer ich mal die benötigten Daten:

Die Edit.php soll ganz einfach nur die bereits vorhanden Werte aus der Datenbank umändern. Mein Problem ist im mMoment folgendes, die Checkboxes werden aus der Datenbank geladen und auch richtig dargestellt und makiert (unchecked oder checked). Diese Werte nimmt er aus der Tabelle gast_leistungen (Detailtabelle) und leistungen (Mastertabelle). Jedoch wenn man einen checked Wert unchecked macht und ihn somit also aus der Datenbank löschen möchte beim absenden funktioniert dieses nicht. Jedoch noch nicht vorhandende angekjlickte CHeckboxen lassen sich problemlos hinzufügen. SOmit ist mein Problem also jeglich, dass ich die Checkboxen nicht deaktivieren kann und abspcihern kann in der Datenbank.
Die edit.php:

PHP-Code:
<?php
echo '<!DOCTYPE xhtml PUBLIC "-//W3C//DTDB XHTML 1.0 Strict// EN" "http://www.w3.org/TR/xhtml/
  DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Check-In</title>
</head>
'
;
echo 
'
<body>
'
;

if(isset(
$_POST['submit']))
{
    
$gid=$_GET['gid'];
$name=$_POST['name'];
$vname=$_POST['vorname'];
$plz=$_POST['postleitzahl'];
$ort=$_POST['ort'];
$Personanzahl=$_POST['personanzahl'];
$zid=$_POST['zimmer'];
    
$ankunft=explode'.'$_POST['ankunft'] );
    
$abreise=explode'.'$_POST['abreise'] );
    
    
$ankunfttime=mktime000$ankunft[1], $ankunft[0], $ankunft[2] );
    
$abreisetime=mktime000$abreise[1], $abreise[0], $abreise[2] );
    
// Config wird geladen
include('config/config.php');
db_connection();
$eintrag1 "UPDATE gast SET Name='$name', Vorname='$vname', Postleitzahl='$plz', Ort='$ort', Personanzahl='$Personanzahl', Ankunft='$ankunfttime', Abreise='$abreisetime', ZID='$zid' WHERE GID='$gid'";
mysql_query($eintrag1) or die (mysql_error());

$gast_l="SELECT * FROM gast_leistungen WHERE GID = ".$gid."";
        
$db_erg2 mysql_query$gast_l);
        if ( ! 
$db_erg2 )
        {    
          die(
'Ungültige Abfrage: ' mysql_error());
        }

            
$zlidp=array();
    
while (
$zeile2 mysql_fetch_array$db_erg2))
        {
        
array_push($zlidp$zeile2['ZLID']);
            
        }
            

foreach(
$_POST['zusatzleistung'] as $value)
{
    
    
$zlidpa=array();
        
array_push($zlidpa$value);
    if (
in_array($zlidpa$zlidp)) {
        
        }
    else  {
        
$eintrag2="DELETE FROM gast_leistungen WHERE ZLID='$value' AND GID='$gid'";
mysql_query($eintrag2) or die (mysql_error());

}
    
$eintrag2="INSERT INTO gast_leistungen(ZLID, GID)
VALUES ('"
.$value."', '".$gid."')";
mysql_query($eintrag2) or die (mysql_error());            

        
}


$ausgabe="<center>Erfolgreich geupdatet.</center>";
echo 
$ausgabe;
}
else {
    
// Config wird geladen
include('config/config.php');
$gid=$_GET['gid'];
db_connection();
$query="SELECT * FROM gast WHERE GID = ".$gid."";
$result=mysql_query($query) or die(mysql_error());
$reihe mysql_fetch_array($resultMYSQL_ASSOC) or die (mysql_error());    



$name=$reihe['Name'];
$vname=$reihe['Vorname'];
$plz=$reihe['Postleitzahl'];
$ort=$reihe['Ort'];
$Personanzahl=$reihe['Personanzahl'];
$Ankunft=date('d.m.y',$reihe['Ankunft']);
$Abreise=date('d.m.y',$reihe['Abreise']);
$zid=$reihe['ZID'];




print(
"<form method=post action=edit.php?gid=");
         print(
htmlspecialchars($gid));
          print(
">");
        
?>
<?php
    
echo '
    <table border=0 width="650">
        <tr>
        <td width="20%">
        Name:<p>
        </td>
        <td width="20%">
        <input type="text" name="name" size="40" '
;?> value="<?php echo $name?><?php echo' >
        </td>
        </tr>
        <tr>
        <td width="20%">
        Vorname:<p>
        </td>
        <td width="50%">
        <input type="text" name="vorname" size="40" '
;?> value="<?php echo $vname?><?php echo'>
        </td>
        </tr>
        <tr>
        <td width="20%">
        Postleitzahl:<p>
        </td>
        <td width="20%">
        <input type="text" name="postleitzahl" size="40" '
;?> value="<?php echo $plz?><?php echo'>
        </td>
        </tr>
        <tr>
        <td width="20%">
        Ort:<p>
        </td>
        <td width="20%">
        <input type="text" name="ort" size="40" '
;?> value="<?php echo $ort?><?php echo'>
        </td>
        </tr>
        </tr>
        <tr>
        <td width="20%">
        Personanzahl:<p>
        </td>
        <td width="20%">
        <input type="text" name="personanzahl" size="40" '
;?> value="<?php echo $Personanzahl?><?php echo'>
        </td>
        </tr>
        </tr>
        <tr>
        <td width="20%">
        Ankunft:<p>
        </td>
        <td width="20%">
        <input type="text" name="ankunft" size="40" '
;?> value="<?php echo $Ankunft?><?php echo'>
        </td>
        </tr>
        </tr>
        <tr>
        <td width="20%">
        Abreise:<p>
        </td>
        <td width="20%">
        <input type="text" name="abreise" size="40" '
;?> value="<?php echo $Abreise?><?php echo'>
        </td>
        </tr>
        <tr>
        <td height=20px>
        </td>
        </tr>
        <tr>
        <td colspan=2 align="center">
        <h3>Art des Zimmers</h3>
        </td>
        </tr>
        <tr>
        <td height=20px> 
        </td>
        </tr>
        <tr>
        <td colspan=2 align="center">
        '
;
    
        

db_connection();

        
$vipangebote="select * from zimmer"

        
$db_erg mysql_query$vipangebote );
        if ( ! 
$db_erg )
        {    
          die(
'Ungültige Abfrage: ' mysql_error());
        }


        while (
$zeile mysql_fetch_array$db_ergMYSQL_ASSOC))
        {
        if (
$zeile['ZID']==$zid)
        {
        echo 
'<input type="radio" checked="checked" name="zimmer" value='$zeile['ZID'] .'>'$zeile['Name'].' '$zeile['Gebuer'].' €/Tag <br>';    
        }
else 
    {
        echo 
'<input type="radio" name="zimmer" value='$zeile['ZID'] .'>'$zeile['Name'].' '$zeile['Gebuer'].' €/Tag <br>';    
    }
        }
            
    
        echo 
'
        </td>
        </tr>
        <td colspan=2 align="center">
        <h3>Zusatzleistungen</h3>
        </td>
        </tr>
        <tr>
        <td height=20px> 
        </td>
        </tr>
        <tr>
        <td colspan=2 align="center">
        '
;
    
        

db_connection();

$gast_l="SELECT * FROM gast_leistungen WHERE GID = ".$gid."";
        
$db_erg2 mysql_query$gast_l);
        if ( ! 
$db_erg2 )
        {    
          die(
'Ungültige Abfrage: ' mysql_error());
        }

            
$zlidp=array();
    
while (
$zeile2 mysql_fetch_array$db_erg2))
        {
        
array_push($zlidp$zeile2['ZLID']);
            
        }

            
$leistung="SELECT ZLID, Name, Gebuer FROM leistungen"

        
$db_erg mysql_query$leistung );
        if ( ! 
$db_erg )
        {    
          die(
'Ungültige Abfrage: ' mysql_error());
        }

    
    
        while (
$zeile mysql_fetch_assoc$db_erg))
        {
        
        if (
in_array($zeile['ZLID'], $zlidp)) {
                echo 
'<input type="checkbox" checked="checked" name="zusatzleistung[]" value='$zeile['ZLID'] .'>'$zeile['Name'].' '$zeile['Gebuer'].' € <br>';    

        
        else {
            echo 
'<input type="checkbox"  name="zusatzleistung[]" value='$zeile['ZLID'] .'>'$zeile['Name'].' '$zeile['Gebuer'].' € <br>';    
        }
        
        
        
            
            }
        echo 
'
        </td>
        </tr>
        <tr>
        <td colspan=2 align="center">
        <br>
        <p>
        <input type="submit" value="Absenden" name="submit">
        </form>
        </td>
        </tr>
        </table>
'
;
}
echo 
'
</body>
'
;
?>
Dann die Datenbank:
Code:
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `Gäste`
--

CREATE TABLE IF NOT EXISTS `gast` (
  `GID` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `Name` varchar(25),
  `Vorname` varchar(30),
  `Postleitzahl` varchar(25),
  `Ort` varchar(50),
  `Personanzahl` int(4),
  `Ankunft` varchar(50),
  `Abreise` varchar(50),
  `ZID` int(11) UNSIGNED NOT NULL,
  PRIMARY KEY (`GID`)
);

-- --------------------------------------------------------

-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `Zimmer`
--

CREATE TABLE IF NOT EXISTS `zimmer` (
  `ZID` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `Name` varchar(25),
  `Gebuer` int(4),
  PRIMARY KEY (`ZID`)
);

-- --------------------------------------------------------

-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `Zusatzleistungen`
--

CREATE TABLE IF NOT EXISTS `leistungen` (
  `ZLID` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `Name` varchar(25),
  `Gebuer` int(4),
  PRIMARY KEY (`ZLID`)
);

-- --------------------------------------------------------

-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `Gast_Leistung`
--

CREATE TABLE IF NOT EXISTS `gast_leistungen` (
  `ZLID` int(11) UNSIGNED NOT NULL,
  `GID` int(11) UNSIGNED NOT NULL
);

-- --------------------------------------------------------

ALTER TABLE gast 
add foreign key (ZID) REFERENCES zimmer (ZID) ON DELETE cascade ON UPDATE cascade;

ALTER TABLE gast_leistungen 
add foreign key (GID) REFERENCES gast (GID) ON DELETE cascade ON UPDATE cascade;

ALTER TABLE gast_leistungen 
add foreign key (ZLID) REFERENCES leistungen (ZLID) ON DELETE cascade ON UPDATE cascade;

Ich hoffe diese Informationen waren hilfreicher.

Mit freundlichen Grüßen

Falki14

Geändert von Falki14 (15.01.2012 um 20:14 Uhr).
Falki14 ist offline   Mit Zitat antworten
Alt 15.01.2012, 20:51  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.630
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Wenn du dein Formular absendest bekommst du alle Werte die ausgewählt wurden. D.h. alle die nicht ausgewählt wurden, sollen es auch nicht mehr sein.

Das du im Moment alle Ausgewählten einträgst, was spricht dagegen vorher alle auf nicht ausgewählt zu setzen? Durch die Vorbelegung des Formulars kommen ja eh wieder alle Ausgewählten zurück, also geht dir nichts verloren.
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 15.01.2012, 21:39  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Falki14 Beitrag anzeigen
Ok dann liefer ich mal die benötigten Daten:
Sieht schon besser aus.

Da mach ich mich ma zum Parser und stelle ein paar dumme Fragen:
Zitat:
Mein Problem ist im mMoment folgendes, die Checkboxes werden aus der Datenbank geladen und auch richtig dargestellt und makiert (unchecked oder checked). Diese Werte nimmt er aus der Tabelle gast_leistungen (Detailtabelle) und leistungen (Mastertabelle).
Also in 'leistungen' is die Speisekarte und 'gast_leistungen' die Bestellung beim Kellner.

Frage
Code:
CREATE TABLE IF NOT EXISTS `leistungen` (
  `ZLID` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `Name` varchar(25),
  `Gebuer` int(4),
  PRIMARY KEY (`ZLID`)
);
Name ist dann wohl kein Name sondern eher die Beschreibung der Zusatzleistung?

Code:
CREATE TABLE IF NOT EXISTS `gast_leistungen` (
  `ZLID` int(11) UNSIGNED NOT NULL,
  `GID` int(11) UNSIGNED NOT NULL
);
Schön normalisiert, bedingt aber bei der Ausgabe einen JOIN, um an die Beschreibungen und an die Werte zu kommen.

Grundsätzlich würde ich sowas nur einmal abfragen und das Ergebnis in die Session packen.

Plan B wäre, den statischen Kram, der nur ab und zu mal geändert wird, als Datenarray in ein File zu speichern. var_export() ist da ne große Hilfe.

Beispiel:
PHP-Code:
# PHP >= 5.3.3
$db = new mysqli(DBHOST, DBUSER, DBPASS, DBNAME);
$res = $db->query('SELECT ZLID, Name, Gebuehr FROM leistungen');
$rows = array();
while (false !== ($rows[] = $res->fetch_assoc());
$filename = __dir__ . '/datafile.php';
file_pit_contents($filename, '<?php
$ZLID 
'. var_export($rows) . ';
?>';
Zitat:
Jedoch wenn man einen checked Wert unchecked macht und ihn somit also aus der Datenbank löschen möchte beim absenden funktioniert dieses nicht.
Generell gefällt mir Dein form Tag nicht (auch wenn der unschuldig ist):
PHP-Code:
print("<form method=post action=edit.php?gid=");
         print(
htmlspecialchars($gid));
          print(
">"); 
1. wenn POST, dann keine GET Parameter. Der Browser machts zwar mit, aber ohne Garantie.
2. nutze printf() - macht den Code übersichtlicher.
3. die Preisfrage ist allerdings: wo landed $gid? in $_GET oder in $_POST --> EDIT in $_GET
4. wenn $gid numerisch ist, kannste htmlspecialchars() weglassen.

Mein Vorschlag sähe so aus:
PHP-Code:
print('<form method=post action=edit.php">
<input type="hidden" name="gid" value="%s">'
,
     
$gid
); 
Das andere Problem was Du hast ist: nicht angeklickte Checkboxen werden überhaupt nicht gesendet.
Du mußt also prüfen: was fehlt -> DELETE. Und damit Du da nich so lange suchen mußt:
entweder
Code:
<input type="checkbox" name="leistungen[$ZLID[$nummer]['ZLID']] value="egal">
oder
Code:
<input type="checkbox" name="leistungen[] value="$ZLID[$nummer]['ZLID']">
mit $nummer ist die Position in og. Array gemeint.

Zitat:
Ich hoffe diese Informationen waren hilfreicher.
Sie mindern die Menge an Unklarheiten.

Hoffentlich waren meine Tips nicht "allzufalsch"...
  Mit Zitat antworten
Antwort


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
Hilfe: datenbank mappen und kopieren M*I*B Datenbanken 29 15.02.2012 21:55
Datenbank austauschbar machen durch Trennung von konkreter Implementierung Asipak PHP-Fortgeschrittene 10 04.09.2009 00:11
[Erledigt] Im- / Export einer MySQL Datenbank amaier161 Datenbanken 5 19.07.2009 00:42
Passwörter in Datenbank abspeichern? Topblocker PHP Tipps 2009 12 07.07.2009 21:58
Datenbank editieren axes PHP Tipps 2009 20 13.04.2009 18:31
Mehrere Anwendungen eine Datenbank... Datenbanken 5 15.08.2005 11:22
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:33
[Erledigt] mysql datenbank anlegen...aber WIE??? PHP Tipps 2005-2 0 05.08.2005 19:33
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:32
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:31
[Erledigt] mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
mysql datenbank anlegen...aber WIE??? Datenbanken 0 05.08.2005 19:29
Auslesen von Daten aus einer mysql Datenbank + Editieren vampsoftchef PHP Tipps 2004-2 5 15.11.2004 08:31
Dateiupload und Link in Datenbank abspeichern PHP Tipps 2004 1 15.10.2004 13:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
input type checkbox array php 5.3.3, $ankunfttime=mktime( 0, 0, 0, $ankunft[1], $ankunft[0], $ankunft[2] );

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:49 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