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 16-03-2005, 14:44
zdek
 Newbie
Links : Onlinestatus : zdek ist offline
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 21
zdek ist zur Zeit noch ein unbeschriebenes Blatt
Standard Form-checkbox auf checked setzen

Hallo Leute

Ich bin gerade dabei ein kleines CMS zu erstellen.
Dabei ist ein Problem aufgetaucht, was ich hier im Forum noch nicht gefunden habe.

Ich habe ein Formular mit Checkboxen. Die werden als String ( mit implode) in einer Datenbank gespeichert. Soweit sogut. Jetzt möchte ich aber, dass, wenn man den datensatz "updaten" will, die Checkboxen dessen werte gesetzt waren, wieder als "checked" gekennzeichnet werden, damit mann nicht alle Checkboxen neu auswählen muss.

Dazu muss aber noch erwähnt werden, dass die Checkboxen auch aus einer dB dyn. erstellt werden.

Hier ein Auszug aus dem Quelltext
PHP-Code:
<?php
// der Datensatz $zweck wird in ein Array gwandelt
$array1 explode (' ',$zweck);
// Anzahl der Arryeinträge ermitteln
$anzahl count($array1);

// DB abfrage um alle Checkboxen aufzulisten
$sql2="SELECT * FROM m_zweck WHERE uid='1' ";
$result2=mysql_query($sql2);
if (
mysql_Num_Rows($result2) > ) {
  while (
$row2 mysql_fetch_array ($result2)) { 
  
  
// Hier nun der versuch den Checkboxen "checked" zuzuweisen deren ID im $array1 vorkommen
       
for ($i 0$i $anzahl$i++) {
            if (
$row[id] == $array1[$i]){
                 echo 
"<tr><td width=\"15\"><input type=\"checkbox\" name=\"zweck[]\" value=\"$row2[id]\" checked>
        </td><td>$row2[zweck_de]</td></tr>"
;
            } else {
                 echo 
"<tr><td width=\"15\"><input type=\"checkbox\" name=\"zweck[]\" value=\"$row2[id]\">
</td><td>$row2[zweck_de]</td></tr>"
;
           }   
      }
  }  
}
else
{
  echo 
"<tr><td colspan=\"2\">Es sind keine Einträge in der DB vorhanden</td></tr>";
}
mysql_free_result ($result);
?>
Leider funzt das gar nicht. Es werden nur alle Checkboxen so oft angezeigt wie Anzahl der Array-Werte vorliegen.

Hat nicht jemand eine Idee wie man das umsetzen kann. Ich hab jetzt schon seit 2 tagen daran herumgedoktert, das ich jetzt garnichts mehr hinbekomme ( kennt bestimmt mancher von Euch)

erst mal dank im vorraus

lorenz
Mit Zitat antworten
  #2 (permalink)  
Alt 16-03-2005, 15:50
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Klar, weil die Ausgabe auch innerhalb der for-Schleife stattgefunden hat. Mach die Schleife weg und tu was mit in_array.

Außerdem hast du:
- $row und $row2
- $result und $result2
bringst du da nicht was durcheinander?
Mit Zitat antworten
  #3 (permalink)  
Alt 16-03-2005, 16:25
zdek
 Newbie
Links : Onlinestatus : zdek ist offline
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 21
zdek ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@asp2php

Nein mit den $row und $row2 habe ich 2 verschiedene DB-Abfragen realiesiert. Es gibt sogar insgesamt 5 DB Abfragen die ich durchnummeriert habe, da mehrere Tabellen die gleichen Tabellenheader haben (id, serie, und rubrik) (man hätte diese natürlich eindeutige namen geben können, wie zb serie_id oder zweck_id etc...)

Ich habe mir in_array mal durchgelesen kann aber leider nichts damit anfangen. Ich habe auch schon ein paar andere Array-Funktionen gelesen und noch nichts passendes gefunden.

werde jetzt mal die forschleife entfernen. Das wird zwar nur alle Checkboxen anzeigen (mein ausgangspunkt) aber nicht die "checked" als diese ausgeben.

Vieleicht weis sonst noch wer ein Tip.

gruß Lorenz
Mit Zitat antworten
  #4 (permalink)  
Alt 16-03-2005, 16:30
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

mit in_array prüfst du, ob der Wert in dem Array vorkommt, wenn ja, checked zusätzlich ausgeben.
Mit Zitat antworten
  #5 (permalink)  
Alt 16-03-2005, 16:51
zdek
 Newbie
Links : Onlinestatus : zdek ist offline
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 21
zdek ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ja dass könnte klappen wenn man das inetwa so macht

if (in_array ("$row[id]",$array1)) {
echo "checkbox checked";
} else {
echo "checkbox";
}

das werde ich jetzt mal ausprobieren ....

melde mich dann nochmal

lorenz
Mit Zitat antworten
  #6 (permalink)  
Alt 16-03-2005, 17:28
zdek
 Newbie
Links : Onlinestatus : zdek ist offline
Registriert seit: Mar 2003
Ort: Hamburg
Beiträge: 21
zdek ist zur Zeit noch ein unbeschriebenes Blatt
Standard

suuupiii
das hat funktioniert!

also so sieht jetzt mein script aus!
PHP-Code:
<?php
// der Datensatz $zweck wird in ein Array gwandelt
$array1 explode (' ',$zweck);

// DB abfrage um alle Checkboxen aufzulisten
$sql2="SELECT * FROM m_zweck WHERE uid='1' ";
$result2=mysql_query($sql2);
if (
mysql_Num_Rows($result2) > ) {
  while (
$row2 mysql_fetch_array ($result2)) { 
  
  
// Hier nun der versuch den Checkboxen "checked" zuzuweisen 
// deren ID im $array1 vorkommen
      
            
if (in_array("$row2[id]",$array1)) {
                 echo 
"<tr><td width=\"15\"><input type=\"checkbox\" name=\"zweck[]\" ";
                 echo
" value=\"$row2[id]\" checked></td><td>$row2[zweck_de]</td></tr>";
            } else {
                 echo 
"<tr><td width=\"15\"><input type=\"checkbox\" name=\"zweck[]\" ";
                 echo
" value=\"$row2[id]\"></td><td>$row2[zweck_de]</td></tr>";
           }   
  } 
}
else
{
  echo 
"<tr><td colspan=\"2\">Es sind keine Einträge in der DB vorhanden</td></tr>";
}
mysql_free_result ($result);
?>
Danke für den Tip mit "in_array" hab mich leider mit den meisten Fuktionen scheinbar zuwenig beschäftigt.
(werde ich nachholen, versprochen

Lorenz
Mit Zitat antworten
  #7 (permalink)  
Alt 16-03-2005, 17:41
asp2php
 Banned
Links : Onlinestatus : asp2php ist offline
Registriert seit: Feb 2004
Beiträge: 11.745
asp2php ist zur Zeit noch ein unbeschriebenes Blatt
Standard

- das else-Teil kannst du dir sparen
- Array nicht in String einbetten
- Array-Key immer als String angeben
- sichtbare Textausgabe immer mit htmlentities ausgeben
- Variable nicht in "" eingeschlossen als Argument übergeben, was soll der Sch**ß?
=>
PHP-Code:
...
echo 
"<tr><td width=\"15\"><input type=\"checkbox\" 
    name=\"zweck[]\" value=\""
.$row2['id']."\"";
if (
in_array($row2['id'],$array1))
    echo 
" checked";
echo 
"></td><td>".htmlentities($row2['zweck_de'])."</td></tr>\n";
... 
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

Software für alle Arten von digitalen Marktplätzen
Software für alle Arten von digitalen MarktplätzenDigitale Marktplätze sind nicht nur im B2C Geschäft seit Jahren etabliert, sondern erfreuen sich mit Kleinanzeigen-Märkten auf lokaler und regionaler Ebene auch im privaten Bereich wachsender Beliebtheit.

09.11.2021 | Berni

Von 0 auf über 2 Mio € Umsatz in weniger als 12 Monaten – wie die Pixelwerker das nur durch SEO geschafft haben
Von 0 auf über 2 Mio € Umsatz in weniger als 12 Monaten – wie die Pixelwerker das nur durch SEO geschafft habenSEO oder SEA? Warum SEO die besserer Methode ist.

01.10.2021 | Berni


 

Aktuelle PHP Scripte

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

09.11.2021 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Newsletter Script SuperWebMailer ansehen PHP Newsletter Script SuperWebMailer

Die webbasierte PHP Newsletter Software SuperWebMailer ist die optimale Lösung zur Durchführung eines erfolgreichen E-Mail-Marketings. Zur Nutzung des PHP Script-Pakets ist eine eigene Webpräsenz/Server mit PHP 5 oder neuer, MySQL 4 oder neuer und die

28.10.2021 mirko_swm | Kategorie: PHP/ Mail
Guestbook Light ansehen Guestbook Light

Das Guestbook Light (kurz: "Gblight") ist ein kinderleichtes Gästebuch in PHP. Durch den Einsatz einer SQLite Datenbank ist es einfach, leicht portabel und schnell. Aufgrund moderner Techniken erfüllt Gblight auch die neuesten Webstandards.

28.10.2021 scripthostingnet | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:02 Uhr.