Demo

Probiere ClanSphere aus und teste daran herum. Demo


Antworten: 2
Seite [1]
WH!T3


King for a day




Herkunft: Ostrhauderfehn
Beiträge: 327
# Thema - 14.01.2013 um 18:12 Uhr
Ich komme leider nicht weiter, da ich Copy&Paster bin sprich learning by duing suche ich mir bei Clansphere ein Modul heraus das ich verwenden kann,

das Modul massages/multiremove.php für mein Vorhaben:

Homepage ist für ein Browsergame

Ich habe eine Produkt Suche in der Datenbank mit einem Editierungs Datum versehen, es wird jetzt alle 7 Tage angezeigt ob die Produkt Suche noch Aktuell ist, falls ja sollen die User die Produkt Suche einmal aktualisiert, durchs submit wird jedesmal das editdate aktualisiert durch cs_time(); , Grund dafür: Die Leute sind zu Faul die Produkte aus der Suche zu nehmen falls sie sie garnicht mehr brauchen.

Die Produkte werden alle in der center Ansicht aufgelistet.

z.Z. muss man jedes Produkt Manuell Editieren,

ich hätte es aber gern in der center Ansicht (so wie es bei den Nachrichten auch ist) das hinter jedem Produkt eine Checkbox ist wo man alle Makieren kann und unten ist ein Button " Makierte Produkt Suche Aktualisieren " halt das bei allen Produkt gesuche in der DB das editdate durch cs_time(); editiert wird.

Nochmal kurz gesagt

Ich möchte das bei den durch checkbox Makierten Produkten (ID´s) das editdate aktualisiert wird.

Die Funktion gibt es auch bei Nachrichten wie gesagt, nur das man dort die Ausgewählten Produkte löschen kann, ich möchte sie halt UPDATEN

Ich würde jetzt den Code bearbeiten/anpassen wollen "massages/multiremove.php"

Mein Problem ist nur ich komme mit diesen blöden outbox nicht klar, könnte mir jemand dort ein wenig helfen.



 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
1. / 2. / ... 
<?php
// ClanSphere 2010 - www.clansphere.net 
// $Id$

$cs_lang cs_translate('messages');

$data = array();
$messages_id = (int) $_GET['id'];

$outbox = (empty($_GET['outbox']) AND empty($_POST['outbox'])) ? 'inbox' 'outbox';

if (isset(
$_GET['confirm'])) {

  
$query $outbox == 'inbox' 
    
'DELETE FROM {pre}_messages WHERE users_id_to = \''.$account['users_id'].'\' AND (' :
    
'UPDATE {pre}_messages SET messages_show_sender = \'0\' WHERE users_id = \''.$account['users_id'].'\' AND (';

  
$values explode('-',$_GET['ids']);
  
$count_values count($values);

  for (
$run 0$run $count_values$run++) {
    
$id = (int) $values[$run];
    if (
$run != 0)
      
$query .= ' OR ';
    
$query .= 'messages_id = \'' $id '\'';
  }
  
$query .= ')';

  
cs_sql_query(__FILE__,$query);

  
cs_redirect($cs_lang['del_true'],'messages',$outbox);

elseif (isset(
$_GET['cancel'])) {
  
cs_redirect($cs_lang['del_false'],'messages',$outbox);
}
else {

  
$values $_POST;
  
$ids '';
  foreach (
$values AS $key => $value) {
    if (
strpos($key,'select_') === false)
      continue;
    
$ids .= substr($key,7) . '-';
  }

  if (empty(
$ids)) {
    
cs_redirect($cs_lang['no_selection'],'messages',$outbox);
  }
  else {
    
$ids substr($ids,0,-1);
    
$addout $outbox == 'outbox' '&outbox=outbox' '';

    
$data['content']['head'] = $cs_lang['really_remove_selected'];
    
$data['content']['bottom']  = cs_link($cs_lang['confirm'],'messages','multiremove','ids='.$ids.'&confirm' $addout);
    
$data['content']['bottom'] .= ' - ';
    
$data['content']['bottom'] .= cs_link($cs_lang['cancel'],'messages','multiremove','cancel' $addout);
  }
}

echo 
cs_subtemplate(__FILE__,$data,'messages','multiremove');


ich hatte durch Googeln noch desen Code gefunden aber irgendwie raff ich es nicht

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
1. / 2. / ... 
 <input type="checkbox" name="loeschen[]"
 
value="<? echo '$ID' ?>"

Hier der gesamte PHP Code:

<?
// Verbindung zur Datenbank herstellen
$db=@mysql_connect("localhost","","");
$select=@mysql_select_db("test",$db);

if(
$submit) {
// Wenn der Submit-Button geklickt wurde ...

// die Anzahl der markierten Datensaetze ermitteln
$y=count($loeschen);
echo 
"$y Datensätze werden gelöscht.<br><br>";

    
// Für jeden markierten Datensatz
    // den delete-Befehl aufrufen.
    
for($x=0;$x<$y;$x++) {
    
mysql_query("delete from testdaten 
where ID='
$loeschen[$x]'");
    echo 
"Gelöscht: $loeschen[$x]<br>";
    }
}

// Die vorhandenen Datensätze abrufen
$result=mysql_query("select * from testdaten");

// Nur wenn Daten gefunden wurden,
// wird das Formular angezeigt.
if(mysql_num_rows($result)) {
?>
<form method="post" action="loeschen.php">
  <table width="300" border="0" cellspacing="0" 
cellpadding="0">
  <?
  // Daten anzeigen
  while($row=mysql_fetch_array($result,MYSQL_ASSOC)) {
  $ID=$row["ID"];
  $feld=$row["feld"];
  ?>
    <tr>
      <td width="30">
        <input type="checkbox" name="loeschen[]" 
value="<? echo $ID ?>">
      </td>
      <td><? echo $feld ?></td>
  </tr>
  <? } ?>
</table>
  <br>
  <input type="submit" name="submit" value="Löschen">
</form>
<?
} else {
echo "Keine Daten gefunden.";
}
?>


------------------
Mfg
Pascal

Zuletzt editiert von WH!T3 am 14.01.2013 um 18:22 Uhr (1x Editiert)
Inaktiv
Fr33z3m4n ClanSphere Team


Medal of Honor




Herkunft: Hamm
Beiträge: 11094
# Antwort: 1 - 14.01.2013 um 18:21 Uhr
Hab mir den Code jetzt nicht angeschaut.

Aber sinngemäß musst du so vorgehen.

Template:
Hinter jedem eintrag eine Checkbox. Name der Checkbox z.b. name="product[]"
Durch die Klammern im Namen, gibt man an, dass es sich um ein Array handelt.
Damit du dann aber auch jedes Produkt identifzieren kannst, musst du also auch eine ID mitgeben.
Diese packst du dann in das Attribute value="x" von der Checkbox.

PHP:
Wenn du nun das Formular absendest, musst du im $_POST schauen, ob product existiert, und ob es nicht leer ist.
Wenn nicht, läuft du ganz normal über $_POST['product'] in einer Schleife, und holst dir die IDS raus.
Ggf. mach einfach print_R($_POST); um den Inhalt des Arrays zu wissen.

Um nicht unnötig SQL Query zu produzieren, packst du alle IDS in ein SQL Stmt. und schickst das ab. Schon fertig.


------------------
mfg
Patrick "Fr33z3m4n" Jaskulski

Antoine de Saint-Exupéry: Wenn Du ein Schiff bauen willst, so trommle nicht Männer zusammen, um Holz zu beschaffen, Aufgaben zu verteilen, sondern lehre die Männer die Sehnsucht nach dem endlosen weiten Meer.

Inaktiv
|
WH!T3
Thread-Ersteller


King for a day




Herkunft: Ostrhauderfehn
Beiträge: 327
# Antwort: 2 - 14.01.2013 um 18:36 Uhr
Lieber Fr33z3m4n,

ich schätze deine Antworten sehr, da du mir immer Hilfst, aber heute übersteigt es meinen Horizont ^^ sry.

meine center.tpl



 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
1. / 2. / ... 
 
<form method="post" id="productsearch_center" action="{url:productsearch_multiedit}">##### Bearbeitet
<table class="forum" style="width:{page:width}" cellpadding="0" cellspacing="{page:cellspacing}">
  <
tr>
    <
td class="headb" colspan="3">{lang:mod_name} - {lang:head_center}</td>
  </
tr>
  <
tr>
    <
td class="leftb">{icon:editpaste} <a href="{url:productsearch_create}">{lang:new_computer}</a></td>
    <
td class="leftb">{icon:contents} {lang:total}: {head:count}</td>
    <
td class="rightb">{head:pages}</td>
  </
tr>
</
table>
<
br />

{
head:getmsg}
<
table class="forum" style="width:{page:width}" cellpadding="0" cellspacing="{page:cellspacing}">
  <
tr>
    <
td class="headb">{sort:name} {lang:name}</td>
    <
td class="headb" style="text-align:center" width="10%">{lang:quality}</td>
    <
td class="headb" style="text-align:center" width="10%">{lang:reputation}</td>
    <
td class="headb" style="text-align:center" width="10%">{lang:quantity}</td
    <
td class="headb" style="text-align:center" width="20%">{lang:priority}</td>      
    <
td class="headb" colspan="3" style="width:11%">{lang:options}</td>
  </
tr>
  {
loop:pro}
  <
tr>
    <
td class="leftc" style="font-weight:bold"><a href="{url:productsearch_view:id={pro:id}}">{pro:name}</a></td>
    <
td class="leftc" style="text-align:center; font-weight:bold; background-color: #C4FFBB" title="Gewünschte Qualität">{pro:quality}</td>
    <
td class="leftc" style="text-align:center; font-weight:bold; background-color: #FFD9D9" title="Gewünschter Ruf">{pro:reputation}</td
    <
td class="leftc" style="text-align:center" title="Gewünschte Menge">{pro:quantity}</td>
    <
td class="leftc" style="text-align:center" title="Priorität">{pro:priority}</td>    
    <
td class="leftc"><input type="checkbox" name="productsearch[{pro:id}]" value="{pro:date}" /></td>##### Bearbeitet
    
<td class="leftc"><a href="{url:productsearch_edit:id={pro:id}}" title="Bearbeiten">{icon:edit}</a></td>
    <
td class="leftc"><a href="{url:productsearch_remove:id={pro:id}}" title="Entfernen">{icon:editdelete}</a></td>
  </
tr>
  {
stop:pro}
  <
tr>
    <
td class="rightb" colspan="8">
     <
input type="submit" name="submit" value="{lang:edit_selected}" />##### Bearbeitet
     
</td>
  </
tr>  
</
table>
</
form>##### Bearbeitet



##### Bearbeitet

Das sind jetzt die Sachen die ich im tpl geändert habe ist das soweit in Ordnung?


Die Produkt ID´s sind ja vorhanden ist ja alles in einem loop

meine multiedit.php

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
1. / 2. / ... 

<?php 

if (isset($_POST['productsearch_id'])) {
  
reset($_POST['productsearch_id']);
  foreach (
$_POST['productsearch_id'] as $key => $value)
   {
    print 
"$key $value\n";

  }
  
} else {
  print 
"Keine Checkboxen makiert";
}


angezeigt wird bei 3 Makierten Checkboxen halt die ID und die Zeit


173 1358239931 172 1358239931 171 1358239931

Jetzt werden schonmal die Daten übertragen, ist zwar nicht alles Perfekt aber mir reicht es so ^^ macht was es soll

 
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
1. / 2. / ... 
<?php 
$cs_lang 
cs_translate('productsearch');

if (isset(
$_POST['productsearch_id'])) {
  
reset($_POST['productsearch_id']);
  foreach (
$_POST['productsearch_id'] as $key => $value){
    
$sql 'UPDATE cs_productsearch SET productsearch_editdate = \''.$value.'\' WHERE productsearch_id = \'' $key '\'';
    
$result mysql_query($sql) or die(mysql_error());    
  }
    
cs_redirect($cs_lang['changes_done'],'productsearch','center'); 
  
} else {
    
cs_redirect($cs_lang['no_checkbox'],'productsearch','center');  
}


------------------
Mfg
Pascal

Zuletzt editiert von WH!T3 am 15.01.2013 um 12:05 Uhr (13x Editiert)
Inaktiv
|
Antworten: 2
Seite [1]


Sie müssen sich registrieren, um zu antworten.