php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 13-05-2007, 02:41
Flash Blaster
 Newbie
Links : Onlinestatus : Flash Blaster ist offline
Registriert seit: May 2007
Beiträge: 25
Flash Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard CheckBoxen Auswerten

Ich habe 2 Fragen zum Thema Auswerten von Checkbox. Ist etwas schwer zu erklären aber ich versuchs ^^.

Ich habe eine Bibliothek Datenbank-System erstellt mit den Tabellen "Buch", "Kunde", und "Ausleihe".

Es gibt eine Seite mit einem Formular, wo Kunden sich "anmelden" sollen. Neben Persönliche Daten, wie Vorname, Name, ..., soll der Kunde auch (optional) seine lieblings BuchKategorie wählen können(wie z.B. Komödie, Drama, Thriller...)

Das Formular verweist auf action=kunde_speichern.php, methode=post,
wo die eingegebenen Daten überprüft werden und anschliessen, nach dem sie in die DB hinzugefügt worden sind, in eine Tabelle dem neu angemeldeten Kunden gezeigt werden.
Diese Tabelle hat 2 Spalten. In der 1. Spalte stehen die Attribute wie Vorname, Name, Strasse, HausNr etc... und in der 2. Spalte stehen die Daten die eingegeben wurden bzw. nich eingegeben wurden (wenn nicht dann steht da "nicht angegeben").

Jetzt hat man als letztes 3 Kategorien gewählt (zB. Action, Thriller, Krimi). Nach der erfolgreichen Überprüfung des Formulars, werden die Daten wieder aufgelistet.

Nun komm ich zum Problem:
in der 2. Spalte der letzten Zeile, wo die angeklickten Kategorien angezeigt werden müssen, entsteht plötzlich für jede gewählte Kategorie eine Spalte. Also für die das Beispiel oben 3 Spalten. SOmit erstreckt sich auch die Tabelle und sieht nicht schön aus.
Wie kann ich das verhindern und diese so gestalten dass er zB. 3 neben einander hat dann Zeilenumbruch macht und wieder 3 dann nochmal Zeilenumbruch und wieder 3...

Hier ist der Teil von kunde_speichern.php:
PHP-Code:
<?php  

$notgiven 
"nicht angegeben"
...                
                   echo 
"<tr>"

                    echo 
"<td width=99 height=25 align=right bgcolor=#FFFF99><font face=tahoma size=2><b>Favoriten:</b></font></td>"
                    if (
$_POST[buchkat] == FALSE
                    { 
                    echo 
"<td width=320 height=25 align=left bgcolor=#00FFFF><font face=tahoma size=2>$notgiven<br></font></td>"
                     
                    } 
                    else { 

                    foreach (
$buchkat as $elem) { 

                    echo 
"<td width=320 height=25 align=left bgcolor=#00FFFF><font face=tahoma size=2>$elem<br></font></td>"
                                                } 
                         } 
                echo 
"</tr>"

            echo 
"</table>"


mysql_close($conn); 

?>
Die 2. Frage ist wie realisiere ich, dass er in der Datenban, also phpMyAdmin, diese anzeigt. Weil da in der Spalte Favoriten steht das Wort Array und nicht die gewählten Buchkategorien...


VIELEN DANK für eure antworten...
Mit Zitat antworten
  #2 (permalink)  
Alt 13-05-2007, 12:43
Flash Blaster
 Newbie
Links : Onlinestatus : Flash Blaster ist offline
Registriert seit: May 2007
Beiträge: 25
Flash Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo nochmal.

Also ich habe es rausgekrigt, dass er mir die Sachen nur in eine Spalte ausgibt. Jetzt habe ich habe das Problem, dass er, wenn ich z.B. 3 Checkboxen angeklikt habe, diese 3mal hintereinander ausgibt: also stehen da 9 Elemente.

Wie kann ich das realisieren dass er mir die angeklickten checkboxen nur einmal aus gibt?

jetzt sieht der Code so aus:

PHP-Code:

                
echo "<tr>";

                    echo 
"<td width=99 height=25 align=right bgcolor=#FFFF99><font face=tahoma size=2><b>Favoriten:</b></font></td>";
                    if (
$_POST[buchkat] == FALSE)
                    {
                    echo 
"<td width=320 height=25 align=left bgcolor=#00FFFF><font face=tahoma size=2 color=#FF0000>$notgiven<br></font></td>";
                    
                    }
                    else {

                    echo 
"<td width=320 height=25 align=left bgcolor=#00FFFF><font face=tahoma size=2>";

                    foreach (
$buchkat as $elem) {

                    
$trennung implode(","$buchkat);
                    
                    echo 
"$trennung";

                      }
                    echo 
"<br></font></td>";


                    }
                echo 
"</tr>";

            echo 
"</table>"
Mit Zitat antworten
  #3 (permalink)  
Alt 13-05-2007, 12:54
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Flash Blaster


[PHP]

foreach ($buchkat as $elem) {

$trennung = implode(",", $buchkat);

echo "$trennung";

}
Entweder foreach, oder implode. Eins reicht. Implode ist praktischer.
__________________
ich glaube
Mit Zitat antworten
  #4 (permalink)  
Alt 13-05-2007, 13:25
Flash Blaster
 Newbie
Links : Onlinestatus : Flash Blaster ist offline
Registriert seit: May 2007
Beiträge: 25
Flash Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Question

@ ministry: DANKE hat natürlich geklappt

Jetzt ist zum Thema ein weiteres Problem folgende:

Wie kann ich es realisieren, dass er die angeklickten Checkboxen im phpMyAdmin Datenbank, in der Tabelle "Kunde" anzeigt?

Weil da in der Spalte "Favoriten" steht immer das Wort "Array" statt die gewählten werte der buchkat...
Mit Zitat antworten
  #5 (permalink)  
Alt 13-05-2007, 14:19
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Im PMA steht "Array" drin? Dann machst du grundlegend was verkehrt - du darfst natürlich nicht das Array auf einmal, sondern musst jeden Wert einzeln abspeichern.

Und hinzu kommt, dass du versuchst, mehrere Werte in eine Spalte abzuspeichern, was schlechtes Datenbankdesign bedeutet.

Kurz erklärt: Du brauchst noch zwei weitere Tabellen. Eine für die "Kategorien", und eine "lookup"-Tabelle zum Nachschlagen, wo die Benutzer-id und die Kategorie-ID drinsteht.
__________________
ich glaube
Mit Zitat antworten
  #6 (permalink)  
Alt 13-05-2007, 21:36
Flash Blaster
 Newbie
Links : Onlinestatus : Flash Blaster ist offline
Registriert seit: May 2007
Beiträge: 25
Flash Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Achso...

Ich hab ja erst seit kurzem mit PHP angefangen ^^

Danke aber für den Tipp, ich werde es versuchen. Ich hoffe ich krieg das hin.

Also du meinst ich soll eine Tabelle Kategorie erstellen mit eine ID und die Kategorien und eine Tabelle lookup wo die KategorieID und BenutzerID drin sin?

also soll die lookup ID nur die 2 attribute haben ?

Und nochwas:

in der kunde_eingeben.php steht INSERT INTO Kunde...

Wo müssen also die Auswertung der checkboxen hin, wenn ich dafür eine eigene Tabelle mache?

Geändert von Flash Blaster (13-05-2007 um 21:50 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 13-05-2007, 22:14
Flash Blaster
 Newbie
Links : Onlinestatus : Flash Blaster ist offline
Registriert seit: May 2007
Beiträge: 25
Flash Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So ich habe jetzt 2 neue Tabellen erstellt:

Kategorie mit 16 Felder:

1. CID Typ=INT, Länge=5, Primärschlüssel, auto_increment

2. Abenteuer, VARCHAR, 60

3. Action, VARCHAR, 60
...
16. Thriller, VARCHAR, 60
_________________

Lookup mit 3 Felder:

1. KID, INT, 5, Primärschlüssel (KID für KundenID)

2. CID, INT, 5 (CID für KategorieID)

3. Kategorien, VARCHAR, 150
____________________

ist das so wie du es meinest?
wenn ja wie muss ich denn jetzt fortfahren? (die Fragen von vorherige Antwort^^)
Mit Zitat antworten
  #8 (permalink)  
Alt 13-05-2007, 22:54
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ähm, nicht ganz...

ich meinte es ungefähr so:

Code:
Tabelle Kategorien 
(2 Felder, int primary key auto increment und varchar)

kat_id     kat_name
1           Thriller
2           Liebesroman
3           Sachbuch
...

Tabelle Buch

buch_id    name    kategorie   (... weitere Spalten)
1          xyz      1
1          abc      2

Tabelle Benutzer 

benutzer_id   name   
1               hans
2               klaus

tabelle Favoriten

benutzer_id    kategorie_id
1                3
2                1
2                2
Das bedeutet dann, dass Hans nur Sachbücher mag, während Klaus auf Thriller und Liebesromane steht. Außerdem kann man die Bücher so viel einfacher zuordnen.

Selbes Prinzip übrigens natürlich mit Autoren usw - wenn du in die Buchtabelle jedesmal den Namen eines Autors reinschreibst, kriegst du sehr schnell Probleme, weil es mal so mal so geschrieben ist.

Also eine Tabelle Autoren, und in die Buchtabelle gehört dann nur die ID des Autoren.
__________________
ich glaube
Mit Zitat antworten
  #9 (permalink)  
Alt 13-05-2007, 23:56
Flash Blaster
 Newbie
Links : Onlinestatus : Flash Blaster ist offline
Registriert seit: May 2007
Beiträge: 25
Flash Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja , aber wie mache ich dass, wenn ein Kunde 2 oder 3 Kategorien wählt, wie muss das dann in der Tabelle Favoriten aussehen?

Hab jetzt folgendes:

Code:
Kategorie: Kat_ID: INT(5), auto_increment,Primary key; Kategorie: VARCHAR(20)

Kat_ID    Kategorie
1             Abenteuer
2             Action
3             Biographie
...            ...
------------------------------

Favoriten: KID: INT(5), Primary Key; Kat_ID: INT(5)

KID         Kat_ID

-----------------------------
Ist das Korrekt so?

Außerdem, ich will nich dass in Buch Tabelle auch eine Spalte für Kategorie ist. Der Kunde soll nur wählen welche Kategorien seine Favoriten sind.

Und dies soll dann ausgegeben werden können. ZB. soll man wählen können Welche Kunde welche Favoriten hat...
Also ich meine so mit namen und nich mit Nummern...
Mit Zitat antworten
  #10 (permalink)  
Alt 14-05-2007, 00:01
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zuordnungen, was zu wem gehört, macht man immer über die ids, nicht über die namen.

In der Tabelle Kategorien stehen doch die Namen, da kannst du sie ja abholen bei bedarf.

Wenn ein Kunde mehrere Favoriten hat, dann steht er da mehrmals drin - siehe mein Beispiel mit "Klaus".

Wenn die Bücher keine Kategorie haben sollen, dann versteh ich allerdings nicht ganz was das mit den Favoriten soll.
__________________
ich glaube
Mit Zitat antworten
  #11 (permalink)  
Alt 14-05-2007, 00:14
Flash Blaster
 Newbie
Links : Onlinestatus : Flash Blaster ist offline
Registriert seit: May 2007
Beiträge: 25
Flash Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hehe...Ja das ist einfach nur für InfoKurs. Das ist nicht so wichtig...

Das ist so wie in Physik: Da lässt man manchmal bei der Berechnung auch einige Faktoren raus wie Luftreibung, oder Luftwiderstand...^^

OK... Soweit geschafft...und DANKE³

Wie bringe ich das Ganze in dem Script?

Wenn der Kunde auf der AnmeldeSeite ist dann trägt er seine Daten ein...
und als letztes ist plötzlich noch so ein Auswahlsystem, wo er eine oder mehrere Sachen wählen kann.

Jedoch klappt das ja nicht mit dem INSERT INTO Kunde (...) VALUES (...);
Weil ja die Kategorien eine eigene Tabelle haben...

muss man 2 scripts schreiben und de irgendwie verknüpfen... oder ein INSERT INTO Favoriten... direkt nach INSERT INTO Kunde einbauen...
oder wie muss man da vorgehen???
Mit Zitat antworten
  #12 (permalink)  
Alt 14-05-2007, 00:22
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Flash Blaster
hehe...Ja das ist einfach nur für InfoKurs. Das ist nicht so wichtig...

Das ist so wie in Physik: Da lässt man manchmal bei der Berechnung auch einige Faktoren raus wie Luftreibung, oder Luftwiderstand...^^
äh, aha, na wenns denn trotzdem nachher noch alles stimmt...
Zitat:
muss man 2 scripts schreiben und de irgendwie verknüpfen... oder ein INSERT INTO Favoriten... direkt nach INSERT INTO Kunde einbauen...
oder wie muss man da vorgehen???
Letzteres
__________________
ich glaube
Mit Zitat antworten
  #13 (permalink)  
Alt 14-05-2007, 00:39
Flash Blaster
 Newbie
Links : Onlinestatus : Flash Blaster ist offline
Registriert seit: May 2007
Beiträge: 25
Flash Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also muss ich das so machen?

PHP-Code:

$kunden_daten 
"INSERT INTO `Kunde`(
Vorname,
Name,
Strasse,
HausNr,
PLZ,
Ort,
TelefonNr,
Geburtsdatum,
Geschlecht,
Email
)
VALUES(
'$_POST[vname]',
'$_POST[nname]',
'$_POST[str]',
'$_POST[hausnum]',
'$_POST[plzahl]',
'$_POST[ort]',
'$_POST[tel]',
'$_POST[geb]',
'$_POST[geschlecht]',
'$_POST[mail]'
);"
;

$fav_auswahl "INSERT INTO `Favoriten`(
Kat_ID,
)
VALUES(
'$_POST[buchkat]'
);"
;

$k_res mysql_query($kunden_daten) OR die(mysql_error());
$f_res mysql_query($fav_auswahl) OR die(mysql_error()); 
ach ja und der HTML-Code für Checkboxen sieht so aus:

Code:
      <td>
      <font face="Tahoma" size="2">
      <input type="checkbox" name="buchkat[]" value="Abenteuer">Abenteuer<br>
      <input type="checkbox" name="buchkat[]" value="Action">Action<br>
      <input type="checkbox" name="buchkat[]" value="Biografie">Biografie<br>
      <input type="checkbox" name="buchkat[]" value="Drama">Drama<br>
      <input type="checkbox" name="buchkat[]" value="Erotik">Erotik</td>
      </font>

      <td>
      <font face="Tahoma" size="2">
      <input type="checkbox" name="buchkat[]" value="Fantasy">Fantasy<br>
      <input type="checkbox" name="buchkat[]" value="Kinderbuch">Kinderbuch<br>
      <input type="checkbox" name="buchkat[]" value="Kochbuch">Kochbuch<br>
      <input type="checkbox" name="buchkat[]" value="Komödie">Komödie<br>
      <input type="checkbox" name="buchkat[]" value="Krimi">Krimi</td>
      </font>


      <td>
      <font face="Tahoma" size="2">
      <input type="checkbox" name="buchkat[]" value="Novelle">Novelle<br>
      <input type="checkbox" name="buchkat[]" value="Roman">Roman<br>
      <input type="checkbox" name="buchkat[]" value="Sachbuch">Sachbuch<br>
      <input type="checkbox" name="buchkat[]" value="Science-Fiction">Science-Fiction<br>
      <input type="checkbox" name="buchkat[]" value="Thriller">Thriller</td>
      </font>
Wenn das falsch ist, wie müsste es denn aussehen
Mit Zitat antworten
  #14 (permalink)  
Alt 14-05-2007, 00:47
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das ist falsch. und warum das falsch ist, findest du heraus, indem du dir die query mal vor dem ausführen ausgeben lässt.
Mit Zitat antworten
  #15 (permalink)  
Alt 14-05-2007, 00:54
Flash Blaster
 Newbie
Links : Onlinestatus : Flash Blaster ist offline
Registriert seit: May 2007
Beiträge: 25
Flash Blaster ist zur Zeit noch ein unbeschriebenes Blatt
Standard

da steht Query was empty

wie muss ich das denn richtig machen??

was muss ich denn ändern ???

Geändert von Flash Blaster (14-05-2007 um 00:57 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 05:08 Uhr.