SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 17.03.2008, 23:49:35
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
AW: brauche Denkanstoß - Checkbox auswertung

Hi,

die Checkbox stellt sich wie folgt dar:
<input type=\"checkbox\" name=\"channel_id[]\" id=\"{$channel['channel_id']}\" value=\"{$channel['channel_id']}\" $checked>

Welche Daten stehen mir zur Verfügung?

Zum Einen kann ich mir aus der Datenbank auslesen welche Channels ein User abonniert hat.
Zum Anderen durch $_POST['channel_id'] welche er noch haben möchte oder evtl. nicht mehr, denn alle die er aktuell abonniert hat, sind in der Tabelle ausgewählt (checked).

Also kommt nur ein neuer Channel hinzu, ist das Löschen ja irrelevant.
Wählt er aber einen oder mehrere Channels ab, so sollen diese aus der DB gelöscht werden.

Plastisches Beispiel:
Channel: 1,2,3,4 hat User abonniert und sind so in die DB eingetragen => entspricht channel_id 1,2,3,4
Nun wählt er Channel 2,4 ab und 5 dazu. Nun soll 5 in die DB geschrieben und 2,4 gelöscht werden.

Ich lasse also erst den Channel 5 in die DB eintragen und lese dann die vom User abonnierten aus.
Dann sollte der Abgleich stattfinden, nämlich dass Channel 2,4 im $_POST nicht enthalten sind und gelöscht werden sollen.
Aber ich weiß nicht wie ich auf die richtigen ID's kommen soll!

Sorry aber im Moment seh ich vor lauter Wald die Bäume nicht mehr.

Nachstehend noch die gesamte Tabelle, wie sie aufgebaut wird.

PHP-Code:
include('./db_connect/connect_sql.php'); 
$result mysql_query("SELECT COUNT(channel_id) AS anzahl FROM news_channels",$db);
if(!
$result){echo mysql_error($db);}
$zahl mysql_fetch_assoc($result);
 
$c_table "<table class=\"cc_news_tblout\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">\n
              <tr bgcolor=\"#333333\">\n
               <td width=\"25\"></td>\n
               <td width=\"250\"> <strong>Channel</strong></td>\n
               <td width=\"300\"> <strong>weitere Infos</strong> </td>
               <td> <strong>Position</strong></td>\n
              </tr>\n"
;
               

$result mysql_query("SELECT *
                         From news_channels"
,$db);
if(!
$result){echo mysql_error($db);}
while(
$channel mysql_fetch_array($result)){
   
   
$pos_result mysql_query("SELECT channel_pos, channel_id
                                FROM news_channel_pos
                               WHERE user_id = 
$user_id
                                 AND channel_id = 
{$channel['channel_id']}",$db);
    if(!
$pos_result){echo mysql_error($db);}
    
$akt_pos mysql_fetch_assoc($pos_result);

    
$pos_sel '';
    for(
$i 0$i <= $zahl['anzahl']; $i++){             
             
$pos_sel.= "<option value=\"$i\" ";
             if(
$i == $akt_pos['channel_pos']){$pos_sel.=" selected";}
             
$pos_sel.=">$i</option>";             
    }

    
    
$checked '';
    if(
$akt_pos['channel_id'] == $channel['channel_id']){$checked 'checked';} 
    
    
$c_table .= "<tr>
                  <td><input type=\"checkbox\" name=\"channel_id[]\" id=\"
{$channel['channel_id']}\" value=\"{$channel['channel_id']}\" $checked></td> // <= checkbox !!!
                  <td> <label for=\"
{$channel['channel_id']}\">{$channel['channel_name']}</label></td>
                  <td> 
{$channel['info']}</td>
                  <td> <select name=\"channel_pos[]\">\n
                        
$pos_sel
                        </select></td>
                 </tr>"
;
    }
mysql_close($db);
 
$c_table .="</table>"

Geändert von AlexD (18.03.2008 um 01:23:13 Uhr)
Mit Zitat antworten
  #12  
Alt 18.03.2008, 09:07:23
lukgestach lukgestach ist offline
Junior Member
 
Registriert seit: Feb 2007
Ort: Safnern, CH
Alter: 32
Beiträge: 255
AW: brauche Denkanstoß - Checkbox auswertung

Hi,

du schaust ja in der foreach schleife am anfang nehme ich an welcher wert das Array gerade hat! schreib doch diese Werte wieder in ein Array und lese dann die werte aus welche NICHT in diesem Array stehen, da du ja weisst wie viele und welche es gibt. der wert der checkbox steht im Value
Du kannst natürlich auch in der foreach schleife eine Variable einbauen welche immer in der schleife inkrementiert, also 1 dazugezählt wird. danach kannst du mit if(!isset($_POST["channel_id[$x]"])) schauen, ob die checkbox angewählt wurde oder nciht!

Gruss Lukas

Geändert von lukgestach (18.03.2008 um 09:08:09 Uhr)
Mit Zitat antworten
  #13  
Alt 18.03.2008, 11:32:47
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
AW: brauche Denkanstoß - Checkbox auswertung

Hi,

genau diese NICHT-Werte bereiten mir ein so großes Problem.

Die erste foreach-Schleife ist nur für die Position der Channels, hier werden nie 0-Werte aussortiert damit das Array wieder zum Array der Channel-id passt.

Hättest Du ein kleines Code-Beispiel??
Das muß nicht auf mein Skript passen, aber dass ich die Funktionsweise verstehe. ;)

hier ein paar angenommene Daten als Grundlage.

in der DB stehen 5 Datensätze $i=5, $ds entählt die ausgelesenen Daten aus der DB.
$ds = (1,2,3,5,6)

vom Formular kommen die $f-Werte
$f =(1,3,6) die, die der User haben möchte. heißt 2 und 5 sind Überhang und sollen aus der Datenbank gelöscht werden.
Wie komm ich an 2 und 5 ran??

Ich weiß, effektiver ist es wenn man selbst auf die Lösung kommt aber mein Brett vorm Hirn....

Geändert von AlexD (18.03.2008 um 11:37:20 Uhr)
Mit Zitat antworten
  #14  
Alt 18.03.2008, 18:12:27
lukgestach lukgestach ist offline
Junior Member
 
Registriert seit: Feb 2007
Ort: Safnern, CH
Alter: 32
Beiträge: 255
AW: brauche Denkanstoß - Checkbox auswertung

Also hier ein kleines Bsp:
PHP-Code:
<?php
//Auslesung aus der DB für die Checkboxen
sql "SELECT * FROM channel";
$res mysql_query($sql);
$i=0;
while(
$dsatz mysql_fetch_assoc($res))
{
    echo 
"<input type='checkbox' value='" $dsatz["value"] . "' name='f[$i]'">;
    
$i++;
}
//auswertung der Checkboxen
for($x=0;$x<5;$x++)
{
    if(!isset(
$_POST["f"][$x]))
    {
        
$sql "DELETE FROM channel WHERE id = '" $_POST["f"][$x] . "' LIMIT 1";
    }
}
?>
Sollte eigentlich so funktionieren! Ich habe es allerdings nicht getestet!

Gruss Lukas
Mit Zitat antworten
  #15  
Alt 20.03.2008, 12:12:41
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
AW: brauche Denkanstoß - Checkbox auswertung

Hi,

sorry hatte erst jetzt zeit mich wieder damit zu beschäftigen.

funktioniert lieder nicht ganz.

Wenn ich im Formular den Array-Key selbst mit $i=0 und $i++ hochzählen lasse, laufen bei der Auswertung alle Daten in die (!isset)-Verzweigung.
Ich denke, dieses hochzählen ist auch nicht nötig da PHP von sich aus von 0-x den Array-Key setzt, denn ohne eigenes zutun funktioniert es.
=> ich weiß, Du wolltest ein druchgängiges Array über alle Checkboxen erzeugen in dem die nicht ausgewählten einfach fehlen, aber wie gesagt, wenn ich dass so mache landen alle Daten beim löschen so hab ich es weggelassen. PHP erzeugt das Array erst beim Absenden, heißt bei 3 ausgewählten Checkboxen hat mein Array die Keys [0][1][2].

Bei der Auswertung bzw. bei 'DELETE WHERE -> $_POST["f"][$x]' wird jetzt ein logischerweise nicht existierender Wert eingesetzt, da dieser nicht übergeben wird.
Heißt ich hab keine Channel_id die ich löschen könnte.

Ich hab diesen Part der process.php ausgegliedert und als test.php umbenannt.
Ich lasse mal die übergebenen Daten anzeigen (sieht z.B. so aus wenn 4 u. 6 abgewählt wurde):

-Anzeige test.php -----------------------------------

Anzahl der gefundenen Datensätze: 6

unverändert oder eintragen: 0- Channel-ID: 1
unverändert oder eintragen: 1- Channel-ID: 2
unverändert oder eintragen: 2- Channel-ID: 3
unverändert oder eintragen: 3- Channel-ID: 5
zu löschen: Array_key: 4 => Channel-ID:
zu löschen: Array_key: 5 => Channel-ID:

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

hier die test.php
PHP-Code:
<?php

// neuen News-Channel eintragen/austragen
if ($_POST['channel'] == 'abonieren'){
include(
'./db_connect/connect_sql.php');

$result mysql_query("SELECT COUNT(channel_id) AS anzahl FROM news_channel_pos WHERE user_id = "$_POST['user_id'] ." "$db);
if(!
$result){echo mysql_error($db);}
$zahl mysql_fetch_assoc($result);
$ds $zahl['anzahl'];
echo 
"Anzahl der gefundenen Datensätze: "$ds ."<br><br>";

reset ($_POST['channel_id']);
$channel_id $_POST['channel_id'];

//auswertung der Checkboxen
for($i=0;$i<$ds;$i++)
{
    if(!isset(
$channel_id[$i]))
    {
        
// hier wird gelöscht
        
echo "zu löschen: Array_key: $i => Channel-ID: "$channel_id[$i] ."<br>";
    } else {
        echo 
"unverändert oder eintragen: "$i ."- Channel-ID: "$channel_id[$i] ."<br>";
    }
}
//        header("Location: control_center.php?auswahl=5");
    
header("Cache-Control: no-store, no-cache");
}
?>
Hab beim Gast-Zugang wieder ein paar Channels eingetragen, da kannst Du Dir das Verhalten direkt ansehen.

Gruß
Alex

Geändert von AlexD (20.03.2008 um 13:05:51 Uhr)
Mit Zitat antworten
  #16  
Alt 22.03.2008, 12:38:47
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
AW: brauche Denkanstoß - Checkbox auswertung

Hab das Problem nun anders gelöst.

Danke für aufgebrachte Zeit! ;)
Mit Zitat antworten
  #17  
Alt 22.03.2008, 13:06:50
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
AW: brauche Denkanstoß - Checkbox auswertung

Hi!

Ein Hinweis darauf "wie anders" Du das Problem gelöst hast, wäre für alle anderen Leser, die vielleicht mal vor einem ähnlichen Problem stehen, von Vorteil!
__________________
Gruß |Coding

---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #18  
Alt 22.03.2008, 13:31:42
lukgestach lukgestach ist offline
Junior Member
 
Registriert seit: Feb 2007
Ort: Safnern, CH
Alter: 32
Beiträge: 255
AW: brauche Denkanstoß - Checkbox auswertung

Zitat:
Zitat von AlexD Beitrag anzeigen
Danke für aufgebrachte Zeit! ;)
Kein Problem ist doch gern geschehen
Mit Zitat antworten
  #19  
Alt 22.03.2008, 19:06:03
AlexD AlexD ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 186
AW: brauche Denkanstoß - Checkbox auswertung

@Coding

nun ja, das ist jetzt so schwer zu beschreiben.

Handle es nun so, dass die Channels und News in der Übersichtstabelle gelöscht werden können.
In den (Problem-)Bereichen werden jetzt nur noch die Angezeigt, die dem User noch zur Verfügung stehen. Bereits abonnierte werden nicht mehr angezeigt.

Die Möglichkeit das alles über das An-/Abwählen der Checkboxen zu realisieren wäre natürlich die schönere und professionellere Lösung gewesen.
Aber übersteigt im Moment wohl meine Fähigkeiten.

Falls mich noch ein Geistesblitz trifft wie ich es doch noch so lösen kann, werde ich es hier posten!!

Beste Grüße
Alex
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Checkbox in Email-Formular auslesen huetchen PHP Grundlagen 11 24.06.2005 22:25:38
Problem mit Checkbox Auswertung Nickle PHP Grundlagen 3 30.05.2005 17:31:08
checkbox im formular gerhard HTML, CSS und JavaScript Help! 2 26.04.2004 09:53:20
Zuweisung textfeld zu checkbox! powerbulls PHP für Fortgeschrittene und Experten 2 20.03.2004 14:58:25
Checkbox Der Andy PHP für Fortgeschrittene und Experten 1 10.12.2002 12:22:44


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


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt