[Gelöst] Checkbox in MySQL und PHP

atsWien

fühlt sich hier wohl
Hallo PHP Gemeinde,

langsam hängt sich mein Hirn aus und ich kann keine Google-Ergebnisse mehr sehen :(

Folgendes Problem:

Im formular habe ich 2 Checkboxen wie folgt eingebaut:


PHP:
<tr><td><input type="checkbox" name="f_voip"  value = "voip" checked=''/>VoIP   </td>
<td><input type="checkbox" name="f_oefi" value = "oefi" />Telekom   </td></tr>

Super kann ich sehen, das erstere ist von haus aus angeklickt das 2tere nicht ;)

*************************************************

In der insert.inc habe ich folgenden Code eingebaut:

PHP:
$sql_insert = "INSERT INTO `adr`(`ID`, `fname`, `vorname`,`name`, `benutzer`, `passwort`, `plz`, `ort`,  `voip4`, `oefi`) 
VALUES ('',,'$f_fname','$f_vorname','$f_name','$benutzer','$pass','$f_plz','$f_ort', '$f_voip', '$f_oefi')";

*************************************************

zum Übergeben in die DB folgendes:

PHP:
if(!isset($_POST['f_voip']));  
if(!isset($_POST['f_oefi']));

************************************************
zum Überprüfen:

PHP:
if(isset($_POST['f_voip'])){
echo "f_voip wurde ausgewählt";
}else{
echo "f_voip wurde nicht ausgewählt";
}  
if(isset($_POST['f_orfi'])){
echo "f_orfi wurde ausgewählt";
}else{
echo "f_orfi wurde nicht ausgewählt";
}

**************************************************

Nun meine Fehler:

1.) seit ich in der inc Datei voip und oefi dazugegeben habe kann es in der DB nicht gespeichert werden!

Spalte: voip
Typ: TINYINT
Set: 20

2.) die Überprüfung funkt nur bei voip und bei oefi nicht

**************************************************

Hat irgend Jemand eine IDEE ???

lg Christian
 
1) Welchen Fehler bekommst du denn aus der DB?

Spontan: Warum ist voip eine tinyint wenn du Text (den value der Checkbox?) speichern willst?

2) Bei der "Überprüfung" nutzt durch "f_orfi" statt "f_oefi", kann es daran liegen?
 
Hallo Ancient,

Danke für die Antwort !

Scheinbar ist in der Inc Datei der Fehler , die Verbindung ist aufgebaut aber die Daten können nicht in die Datenbank geschrieben werden.

Will eigentlich keinen Text in die Datenbank schreiben ist wahrscheinlich vom testen noch.

Und Danke das mit der Überprüfung , bin sicher schon blind vor lauter suchen :)

Hoffe Du hast einen weiteren Tip für mich oder ein durchgehendes Beispiel ;)

Kann man im ganzen www nicht verständlich finden. :(

Lg Christian
 
Zuletzt bearbeitet:
Mehr schreiben kann man nicht ohne deine DB zu kennen. Heisst die Spalte in der DB wirklich "voip4" wie im INSERT oder "voip" wie weiter unten angegeben. Was enthält die Variable? Wenn da Text drin steht (der aus der Checkbox) dann geht es nicht, sonst wirst du wohl noch irgendwo anders den Text in eine Zahl (die 20?) umwandeln.

Und nochmal, welche Fehlermeldung bekommst du denn beim Speichern?
 
Hallo Ancient,

Sie heizt voip wie unten beschrieben
Hab heute schon zu viel verschiedenes getestet :)

Die "20" kommt auch vom Test

Das mit der Fehler Meldung kann ich jetzt Leider nicht beantworten , habe den PC schon ausgemacht. Aber wenn Du Zeit und Lust hast setze ich mich gleich wieder hin. Das ich dieses Problem endlich in den griff bekomme.

Eine kleine Antwort und ich Sitze ;)

Lg Christian
 
Dann ist dein Insert-Statement falsch. Nein, feier du nun mal ins neue Jahr :bier, schauen wir morgen mal drauf.
 
Hallo Ancient,

Bin und bleibe do wo ich bin , wenn der Kopf nicht schon so durcheinander wäre würde ich eh auch noch am PC sitzen.

Aber danke für das Angebot für morgen, nehme ich gerne an.

Lg und ein gesundes neues

Christian
 
Ein gutes Neues Jahr wünsche ich!


PHP:
$sql_insert = "INSERT INTO `adr`(`ID`, `fname`, `vorname`,`name`, `benutzer`, `passwort`, `plz`, `ort`,  `voip4`, `oefi`) 
VALUES ('',,'$f_fname','$f_vorname','$f_name','$benutzer','$pass','$f_plz','$f_ort', '$f_voip', '$f_oefi')";

Weist du den Variablen $f_voip und $f_oefi vor der Verwendung etwas zu?
Tabelle adr, Feld ID ist wirklich ein string?
Welchen Wert willst Du im INSERT fname zugewiesen? (kein Wert? NULL? default?)
 
PHP:
$sql_insert = "INSERT INTO `adr`(`ID`, `fname`, `vorname`,`name`, `benutzer`, `passwort`, `plz`, `ort`,  `voip4`, `oefi`) 
 VALUES ('',,'$f_fname','$f_vorname','$f_name','$benutzer','$pass','$f_plz','$f_ort', '$f_voip', '$f_oefi')";
VALUES ('',, .....
Ein Komma zuviel.;)
 
Hallo Ihr beide ;)

Ihr seid schon wieder fleisig,

ich auch, die überprüfung hat ergeben das ich falsch (f_orfi ) eingab DANKE Ancient.

Ich werde jetzt gleich mal das $sql_insert = testen und Euch bescheid geben ;)

Weist du den Variablen $f_voip und $f_oefi vor der Verwendung etwas zu?

nein nur ist oder ist nicht

Welchen Wert willst Du im INSERT fname zugewiesen?

der erste teil ist ja OK und funkt auch nur das mit "voip und oefi" funkt nicht

lg Christian
 
Hallo Ihr ALLE ;)

die Fehlermeldung bei "$sql_insert =" ist Unknown column 'oefi' in 'field list' <-- ist behoben DANKE

das Problem ist noch das in der Datenbank immer "0" steht egal was ich anklick.

jemand eine IDEE ???

lg Christian und nochmals DANKE für EURE Mühe!!
 
Ich fürchte mein silvestergeschädigter Kopf hat heute Probleme mit deinen Formulierungen:koffein
 
Hallo EISer,

ja kann schon sein aber nicht wie vermutet wird ;)

Jetzt funkt eigendlich alles ausser :

in der DB steht unter voip und oefi egal ob mit oder ohne häckchen immer 0 , dachte eigendlich wenn häckchen dann 1 z.B.
ich glaube es liegt bei einen dieser beiden möglichkeiten zu übergeb an die DB

if(!isset($_POST['f_voip']));
if(!isset($_POST['f_oefi']));

$f_voip = (!isset($_POST['f_voip'])) ? '' : $_POST['voip'] = '';
$f_oefi = (!isset($_POST['f_oefi'])) ? '' : $_POST['oefi'] = '';

lg Christian
 
Zuletzt bearbeitet:
Den Wert, den Du per Checkbox übermitteln möchtest, musst Du ja irgendwo festlegen.
Im Augenblick übermittelst Du jeweils einen String ("voip" oder "oefi") das lässt sich nicht in ein Tinyint-Feld schreiben und es wird automatisch der Standardwert 0 geschrieben.

Du musst einen Zahlenwert unter value im input-tag angeben.

Bsp.:
PHP:
<tr><td><input type="checkbox" name="f_voip"  value = "1" checked=''/>VoIP   </td>
 <td><input type="checkbox" name="f_oefi" value = "1" />Telekom   </td></tr>
 
Hallo Astrominus,

danke für die antwort.

ich habs mitlerweile wieder so wie Du beschrieben hast aber trotzdem ohne erfolg.

im google wird dieses problem des öffteren gesucht aber eine erfolgreiche antwort hab ich nicht gesehen ;-(

hoffe wir finden eine lössung ;)

lg Christian
 
Wie verwaltest Du die Variablen $f_voip und $f_oefi?

Richtig wäre eigentlich $_POST['f_voip'] bzw. $_POST['f_oefi'].

PHP:
$sql_insert = "INSERT INTO `adr`(`ID`, `fname`, `vorname`,`name`, `benutzer`, `passwort`, `plz`, `ort`,  `voip4`, `oefi`) 
VALUES ('',,'$f_fname','$f_vorname','$f_name','$benutzer','$pass','$f_plz','$f_ort', '".$_POST['f_voip']."', '".$_POST['f_oefi']."')";

Es sei den Du fängst die Post-Variablen vor dem DB-Schreibevorgang ab.

Bsp.:
$f_voip = $_POST['f_voip'];
$f_oefi = $_POST['oefi'];
 
Hallo Astrominus,

PHP:
$sql_insert = "INSERT INTO `adr`(`ID`, `fname`, `vorname`,`name`, `benutzer`, `passwort`, `plz`, `ort`,  `voip`, `oefi`) 
VALUES ('',,'$f_fname','$f_vorname','$f_name','$benutzer','$pass','$f_plz','$f_ort', '  ', ' ')";

wobei ich schon alles mögliche versucht habe, und warscheinlich vor lauter testen und möglichkeiten den faden verloren habe.

z.B. hab ich das hier versucht:

PHP:
$f_voip4 = (!isset($_POST['f_voip'])) ? '' : $_POST['f_voip'] = '';        
$f_oefi = (!isset($_POST['f_oefi'])) ? '' : $_POST['f_oefi'] = '';

aber was ich auch versuche irgendwo muss der hund sein ;)

wobei ich denke das die zeile mit "isset" total falsch ist.

hoffe auf einen guten tipp, wobei ich jetzt auch schon deinen tipp getestet habe ohne erfolg ;-(

lg Christian
 
Du hast immer noch ein doppeltes Komma in der Abfrage.;)

Mach doch mal eine Ausgabe des Query-Strings (z.B. mit echo), bevor er in die DB geschrieben wird.
Daran kann man dann ersehen, wie die Daten genau übergeben werden.

Diese Ausgabe kannst Du dann auch hier posten.
 
Insert-Statement, da ist immer noch das ,, zuviel.

Bin mir nicht sicher, aber bei dem letzten PHP-Code mit isset, wofür soll das hintere ='' gut sein? Ansonsten kannst du dir das aber auch wohl sparen, empty string dürfte es auch sein, wenn es nicht gesetzt ist.

Du erzeugst hier nach wie vor STRINGs, sicher das diese Felder auch Strings in der Datenbank sind? Ganz am Anfang war was von wg. Tinyint und du erwähntest auch, du willst keine Strings speichern. Du konvertierst aber auch nix irgendwo zu einer Zahl.

Kannst du uns mal die 'adr'-Tabelle scripten?
 
Oben