Checkbox Frage (Bin am verzweifeln)

Raptor72

Mitglied
Hi Leutz,

habe mal wieder eine Frage weil ich am verzweifeln bin und gleich meinen PC inne Tonne trete :-D

Komme bei den Checkboxen net weiter.

PHP:
	   $abfrage = "SELECT `suche` FROM `mitglieder` WHERE `username` = '".$username."'";
	   $ergebnis = mysql_query($abfrage);
	   $row = mysql_fetch_object($ergebnis);
	   $auswahl = explode (", ", $row->suche);


       <input type="checkbox" name="suche[]" value="festplatte" <?php if($auswahl == "1") echo "checked" ?>/>Festplatte<br />    
       <input type="checkbox" name="suche[]" value="ssd" />SSD<br>
       <input type="checkbox" name="suche[]" value="speicher" />Speicher<br />
       <input type="checkbox" name="suche[]" value="dvd_rom" />DVD Rom<br />
       <input type="checkbox" name="suche[]" value="dvd_brenner" />DVD Brenner<br />
       <input type="checkbox" name="suche[]" value="grafikkarte" />Grafikkarte<br />
       <input type="checkbox" name="suche[]" value="netzteil" />Netzteil<br />
       <input type="checkbox" name="suche[]" value="tastaturen" />Tastaturen<br />

So wird es eingetragen, natürlich mit INSERT INTO und so.

PHP:
   $suche = $_POST["suche"];
   $auswahl = implode(', ',$suche);

Mit implode fasse ich die angehakten Sachen zusammen und speicher sie so in der Tabelle.
Wenn ich nun die MySql Tabelle auslesen will und diese Sachen in den Checkboxen auch angezeigt haben möchte habe ich es schon mit explode... versucht aber nichts funktionierte :-/

Brauche also mal eure Hilfe, danke mal wieder im voraus.
Ist eben mist wenn man mehr will als man schon gelernt hat :-/
 
Zuletzt bearbeitet:
Hmm, ich versteh grad nicht, wie du auf "1" bei der if-Kondition kommst, es muss doch eigentlich auf den String "Festplatte" geprüft werden. Wobei ich noch nicht verstehe, was eine Festplatte mit "Beziehung" zu tun hat.

Alles irgendwie verworren.

Zeig doch mal, was in der DB steht. Als String. Dann sehen wir weiter.
 
In der DB steht als String

festplatte, dvd_rom, grafikkarte

und das hatte ich ja mit implode so gespeichert und wollte es eben mit explode wieder auseinanderbröseln und dann eben in die dafür vorgesehenen Checkboxen "einsetzen".
Die 1 weil wenn eine Checkbox gesetzt ist doch auf 1 steht oder habe ich da jetzt vollkommen falsches Denken :-D

Verworren nicht, hatte es nur abgeändert und halt was vergessen :-D
 
Also $auswahl ist ja ein Array. Also müsstest du prüfen, ob in dem Array der jeweilige String enthalten ist:

PHP:
<input type="checkbox" name="suche[]" value="Festplatte" <?php if(in_array($auswahl, 'Festplatte')) echo 'checked="checked"'; ?>/>Beziehung<br />
 
PHP:
	   $ergebnis = mysql_query($abfrage);
	   $row = mysql_fetch_object($ergebnis);
	   $auswahl = explode (", ", $row->suche);

<input type="checkbox" name="suche[]" value="Festplatte" <?php if(in_array($auswahl, 'Festplatte')) echo 'checked="checked"'; ?>/>Festplatte<br />

Habe es jetzt so stehen aber er gibt mir diesen Fehler aus

Warning: in_array() expects parameter 2 to be array, string given in C:\xampp\htdocs\page_v1.0_Beta_1\userdaten.php on line 176

Habe auch schon gegoogelt wie sau aber nichts gefunden :-/
 
Wenn du dir mal die PHP-Referenz zur Hand genommen hättest, dann wüsstest du folgendes:
  • in_array erwartet zwei Parameter
  • der erste kann so ziemlich alles sein
  • der zweite muss ein Array sein
Das heißt, dass es bei dir so aussehen muss:
PHP:
if(in_array('Festplatte', $auswahl)) echo 'checked="checked"'
 
Ja ich bin mir bewusst das ich mehr nachlesen sollte aber ich frage eben lieber im Forum nach :-D

Es funktioniert jetzt.

Danke euch nochmal ;-)
 
Naja,man kann es eher so ausdrücken das ich nicht unbedingt ein Buchfreak bin, sondern, wie gesagt, lieber in so einem Forum nachlese und frage weil es gegenüber einigen Büchern doch abundan einfachere Lösungen gibt.

Ich habe einige Bücher hier zu Hause über PHP - MySql, JavaScript usw.

Dort schaue ich auch rein aber manchmal habe ich eben die Schwierigkeit die Logik hinter einigen Sachen zu verstehen und das finde ich ist in den Foren teils besser, weil eben verständlicher erklärt oder eben einfachere Lösung.

Das ist eben der Grund und für mich ergibt es schon Sinn :-D
 
OT: Ich äußere mal ne andere Vermutung: Du verstehst Englisch schlecht. Denn in der Fehlermeldung stecken - ausnahmsweise - mal alle Informationen, die du hättest gebraucht, um das Problem zu lösen. Übersetzt bedeutet die Fehlermeldung:

"in_array() erwartet Parameter 2 sei ein Array, String wurde übergeben in Zeile...."

Spätestens da wäre ich ins Manual (http://php.net/manual/de/function.in-array.php) gewandert und hätte mich nach der Parameter-Liste erkundigt, bei der alle Parameter wirklich sehr gut erklärt sind, besser bekommen wir das hier auch nicht hin. Häufig findest du dort sogar noch Ratschläge, wie man optimieren kann. Etwas auf was hier im Forum selten hingewiesen wird, weil das Forum lösungs-orientiert ist (natürlich kein Vorwurf).

Außerdem lernst du durch Suche im Manual mehr, als wenn du hier alles auf dem Präsentierteller bekommst ;-)

Ich will dir nur gute Gründe liefern, warum das Manual manchmal dem Forum vorzuziehen ist.

Ich würde dir vorschlagen, ordentlich Englisch zu pauken, das wirst du definitiv brauchen, wenn du bei der Programmierung bleiben willst. Ohne das geht es nicht. Wirklich, das ist keine Vermutung sondern ein Fakt.
 
Zurück