Skriptsprachen (PHP, Javascript, etc.) - Forum

Derzeit sind Sie als Gast in unserem Forum aktiv. Für das Schreiben registrieren Sie sich bitte. Unser Forum ist eine Austauschplattform für Webworker zum Kommunizieren, Helfen, Informieren und Hilfe finden. Auf der rechten Seiten finden Sie eine Forenübersicht über alle Bereiche des Webmaster-Forums. Unterhalb finden Sie alle aktuellen Themen.

Diskutieren Sie hier über die serverseitige Skriptsprachen PHP und Python und über dynamische Webseitenerstellung mit Javascript und Ajax.


Friedrich Fell
Beiträge: 22

PN schreiben
Profil ansehen
User ist offline

Array prüfen ob existiert

Link zur Antwort auf "Array prüfen ob existiert" von Friedrich Fell Friedrich Fell, am Sunday den 27.04.2008 um 21:43:52

Hallo,

ich hab das problem das ich ein formular habe mit checkboxen und habe diese mit name=delete[] deklariert. Jetzt hab ich das Problem das wenn keine checkbox aktiviert wurde das script nicht ausgeführt werden soll. Ich dachte mir das ich dass mit if(isset($delete) mache aber irgendwie klappt das nicht. was mach ich falsch?

 
PHP
  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
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
<?php
include ('connect/config.php');
    error_reporting(E_ALL);
    if (isset($_GET['seite'])){ $seite=$_GET['seite'];
    } else{ $seite="home";
    }


if (isset($_POST['send'])){

    $sql_1="SELECT * FROM content WHERE seite='$seite'";
    $sql_2=mysql_query($sql_1) OR die(mysql_error());
    $bearbeiten=mysql_fetch_assoc($sql_2);
    
    if($bearbeiten['seite']!=""){

        if($bearbeiten['bild']!=""){
                  
            foreach($info as $edit_1 => $wert) {
                $edit[$edit_1]= $wert;
            }
            $infos_c= implode(",",$edit);
                      
            print_r($_POST['delete']);
            if(isset($_POST['delete'])) {
                
                $bilder_o = explode(",",$bearbeiten['bild']);
                $bilder_t = explode(",",$bearbeiten['thumb']);
                $infos_b= explode(",",$bearbeiten['info']);
            
                foreach($_POST['delete'] as $delete_1) {
                    unset($bilder_o[$delete_1]);
                    unset($bilder_t[$delete_1]);
                    unset($infos_b[$delete_1]);
                }
            
                $bild_o= implode(",",$bilder_o);
                $bild_t= implode(",",$bilder_t);
                $infos_c= implode(",",$infos_b);
                }
        }
        else {  
            $bild_o="";
            $bild_t="";
            $infos_c="";
        }
            
        
        $update_1="UPDATE content SET name='$_POST[name]' ,bild='$bild_o' ,thumb='$bild_t' ,info='$infos_c' ,inhalt='$_POST[inhalt]' ,datum=now() WHERE seite='$seite'";
        $update_2=mysql_query($update_1);
        if ($update_2==TRUE) {
            echo "Die Seite wurde erfolgreich bearbeitet.";
        }
        else {
            echo "<b>Es ist ein Fehler aufgetreten!</b>";
        } 
    }
    else {
        mysql_query("INSERT INTO content (seite,name,inhalt,datum)
      VALUES
      ('$seite','$_POST[name]','$_POST[inhalt]',now())") or die(mysql_error());
        echo $_POST['name']." wurde hinzugefügt.";
    }
} 
    $sql_1="SELECT * FROM content WHERE seite='$seite'";
    $sql_2=mysql_query($sql_1) OR die(mysql_error());
    $bearbeiten=mysql_fetch_assoc($sql_2);

echo "<h1>Bearbeiten</h1><br>
        <form name='bearbeiten' method='post' action='?page=bearbeiten&seite=".$seite."'>
          <table width='100%' border='0'>
            <tr>
              <td width='7%' align='left' valign='top'>Überschrift:</td>
              <td width='93%'><input type='text' name='name' value='".$bearbeiten['name']."'></td>
            </tr>
            <tr>
              <td align='left' valign='top'>Inhalt:</td>
              <td><textarea name='inhalt' cols='70' rows='20' id='elm1'>".$bearbeiten['inhalt']."</textarea></td>
            </tr>
            <tr>
              <td></td>
              <td><br>";
              if($bearbeiten['bild']!=""){
              
                $bilder_original = explode(",",$bearbeiten['bild']);
                $bilder_thumb = explode(",",$bearbeiten['thumb']);
                $infos= explode(",",$bearbeiten['info']);
                $anzahl = count($bilder_original);
                
                echo "<table width='100%' border='0'><tr>";
                
                for ($i=0; $i<$anzahl; $i++){
                echo "<td align='center'>Löschen:<input type='checkbox' name='delete[]' value='".$i."'><br><img width='100' height='50' border='0' src='".$bilder_thumb[$i]."'><br><input type='text' name='info[]' value='".$infos[$i]."'></td>";
                }
                
                echo "</tr></table>";
              }
                echo"<br><a href='javascript:popup();' id='bild'>Bild hochladen</a><br><br><input type='submit' name='send' value='Bearbeiten'>
              <input type='reset' name='back' value='Zurücksetzen'></td>
            </tr>
          </table>
        </form>";
?>


Benutzer gelöscht
Beiträge: 800

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "Array prüfen ob existiert" von Benutzer gelöscht Benutzer gelöscht, am Sunday den 27.04.2008 um 21:55:46

Eigentlich sollte das mit isset funktionieren.
Probiere mal is_array.

Btw. du solltest dringenst mysql_real_escape_string benutzen


Friedrich Fell
Beiträge: 22

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "Array prüfen ob existiert" von Friedrich Fell Friedrich Fell, am Sunday den 27.04.2008 um 22:01:16

hmm ich bekomme immer

Undefined index: delete für die Zeile egal ob ich isset oder is_array verwende. aber das ist doch unlogisch da doch genau das isset überprüfen soll oder?

das mysql_real_escape_string sollte ich wohl wirklich benutzen.


Benutzer gelöscht
Beiträge: 800

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "Array prüfen ob existiert" von Benutzer gelöscht Benutzer gelöscht, am Sunday den 27.04.2008 um 22:02:38

Der Fehler ist nur ein Notice.
Und der kommt wohl von der Zeile:

 
PHP
1
print_r($_POST['delete']);

Friedrich Fell
Beiträge: 22

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "Array prüfen ob existiert" von Friedrich Fell Friedrich Fell, am Sunday den 27.04.2008 um 22:04:49

ja is "nur" ein notice aber er kommt für beide zeilen sowohl für das print_r als auch für die isset abfrage.


Friedrich Fell
Beiträge: 22

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "Array prüfen ob existiert" von Friedrich Fell Friedrich Fell, am Sunday den 27.04.2008 um 22:11:07

wenn ich das isset draußen lasse läuft alles bestens nur das ich dann die fehlermeldung

Invalid argument supplied for foreach()

bekomme, und umd die wegzubekommen müsste ich ja die isset abfrage machen, oder gibt es noch eine andere möglichkeit?


Benutzer gelöscht
Beiträge: 800

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "Array prüfen ob existiert" von Benutzer gelöscht Benutzer gelöscht, am Sunday den 27.04.2008 um 22:12:27

Bist du dir sicher, dass in der Zeile wo isset ist ein Fehler auftaucht?


Friedrich Fell
Beiträge: 22

PN schreiben
Profil ansehen
User ist offline
Link zur Antwort auf "Array prüfen ob existiert" von Friedrich Fell Friedrich Fell, am Sunday den 27.04.2008 um 22:23:26

Habe es gelöst!

Der fehler war sonst auch immer in der isset Zeile aber jetzt habe ich die erste foreach schleife nach unten gesetzt und jetzt geht es. sehr komisch.

Trotzdem vielen dank für die schnelle hilfe!