• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Einfaches Syntaxproblem

Okay. Diesen Punkt (.) ignoriere ich immer. Sollte ich mir mal abgewöhnen.
Du hast recht, es ist so viel besser lesbar.
Am besten sollte ich mal ganz von vorne anfangen.
Was schlägst du also zur Tabellenabfrage vor?
Das Ergebnis ist ja dann eine Tabelle die in jeder Zeile ein individuelles Formular enthält das entweder das Löschen oder Editieren eines Datensatzes ermöglichen soll. Noch dazu möchte ich ganz oben ein leeres Formular haben in das ich neue Datensätze einfügen kann.
Also, was mache ich falsch?
Vielen Dank übrigens das du dich einem Anfänger annimmst.
Ist das eigentlich Absicht das du die schließende Klammer (]) nach dem Variablenbezeichner weg gelassen hast?
 
Zuletzt bearbeitet:
Werbung:
Vom Prinzip her machst du das ja nicht falsch, aber da sind einfach noch einige Macken drin. Das fängt schon mal damit an, dass man während der Entwicklung diese Zeilen an den Anfang schreibt:
PHP:
error_reporting(E_ALL);
ini_set("display_errors", true);
Damit spuckt dir PHP schon mal einige Meldungen raus, wenn da z.B. nicht initialisiere Variabeln benutzt werden, etc.
Dann sollstest du Daten, die aus einem Formular kommen, niemals direkt in die Datenbakn schreiben, sondern immer durch mysql_real_escape_string schleusen.
Und nach jedem mysql_query gehört eine Überprüfung z.B. in dieser Form:
PHP:
  $result = mysql_query($query)
    or die ("MySQL-Error: " . mysql_error());
Und wenn du gerade erst mit PHP anfängst, lass' die Mysql-Extension links liegen und benutze die neue Extension MySQLi

Ist das eigentlich Absicht das du die schließende Klammer (]) nach dem Variablenbezeichner weg gelassen hast?

Nein, das sollte nicht sein, habe ich auch korrigiert, da haben sich unserer Postings überschnitten.
 
Zuletzt bearbeitet von einem Moderator:
Okay.
Die Schnipsel baue ich mal fix mit ein.
Gerade erst anfangen ist auch nicht ganz wahr. Ich habe nur eben bis jetzt noch niemanden gefunden der mir das vernünftig beibringen kann. Und aus Büchern... naja, siehst du ja selbst.
Ich habe mal deinen Code eingefügt und die Variablen geschlossen. Dadurch komme ich auch gleich wieder zu meinem Problem mit den Anführungszeichen.
Bei deinem Code steigt die Echo-Anweisung vor der ersten Variable aus, weil er das einfache Anführungszeichen als Ende der Echoanweisung nimmt. Man bräuchte in diesem Fall also ein drittes. Oder soll ich lieber die HTML-Relevanten Anführungszeichen Escapen?
 
Werbung:
dieses:

Parse error: syntax error, unexpected '[', expecting ',' or ';' in C:\xampp\htdocs\Projekte\Imkereiverein\cms\links.php on line 60
 
Zeige mal den aktuellen Quellcode.
Ich weiß nicht, welchen Editor du benutzt, aber es wäre nicht schlecht, wenn du Notepad++ benutzt. Damit bleiben die Zeilenumbrüche beim Copy/Paste hier im Forum erhalten.
 
Werbung:
Leider benutze ich Dev-PHP. Schlecht lesbar, aber ich hoffe es geht trotzdem. Ich lade mir mal den anderen Editor.
PHP:
if (!(isset($_POST["ok"])))	{$sql = mysql_query("SELECT * FROM links");echo '<div id="linktable"><form action="links.php" method="post"><table id="links" bgcolor="#DBDBDB" border="1" width="600px" align="left"><tr><td>Name</td><td>Beschreibung</td><td>Link</td><td>Typ</td><td>Speichern</td><td bgcolor="red">Löschen</td></tr>';	echo'<tr><td><input type="" name="name1" size"50" width="100" /></td><td><input type="" name="beschreibung1" size"50" /></td><td><input type="" name="URL1" size"50" /></td><td><input type="" name="typ1" size"50" /></td><td><input type="submit" name="ok1" value="OK" /></td><td bgcolor="red"><input type="reset" name="del" value="DEL" /></td></tr><input type="hidden" name="ident1" value ="NEW"/>'; while($sql1 = mysql_fetch_array($sql))   {      echo ' <tr>             <td>               <input type="" name="name" size="50" value="' . sql1[1] . '"/>             </td>             <td>               <input type="" name="beschreibung" size="50" value="' . sql1[2] . '"/>             </td>             <td>               <input type="" name="URL" size="50" value="' . sql1[3] . '"/>             </td>             <td>               <input type="" name="typ" size="50" value="' . sql1[4] . '"/>             </td>             <td>               <input type="submit" name="ok" value="OK" />             </td>             <td bgcolor="red">               <input type="submit" name="del" value="DEL" />               <input type="hidden" name="ident" value ="' . sql1[0] . '" />             </td>            </tr>';   }  echo '</table></form></div>';	} else {	if (isset($_POST["ok"]))	{	$query = "UPDATE 'links' SET name='$_POST[name]',beschreibung='$_POST[beschreibung]',link='$_POST[URL]',type='$_POST[typ]' WHERE id='$_POST[ident]'";	$sql = mysql_query($query);	echo "update";//	header("location:links.php");	} elseif (isset($_POST["ok1"])) {	$query = "INSERT INTO 'links' (name, beschreibung, link, type) VALUES ('$_POST[name1]','$_POST[beschreibung1]','$_POST[URL1]','$_POST[typ1]')";	$sql = mysql_query($query);  	echo "Insert";//	header("location:links.php");	} else {	header("location:links.php");		}}
 
Zuletzt bearbeitet:
Leider benutze ich Dev-PHP. Schlecht lesbar, aber ich hoffe es geht trotzdem. Ich lade mir mal den anderen Editor.
Wie du siehst, ist wieder alles kaputt. Jedes mal den Quellcode erst formatieren macht nicht wirklich Spaß. Zur Not kannst du ja vor dem Posten den Quellcode von Dev-PHP in den Notepad kopieren und dann von da aus hier rein.
 
Ich habe keine Ahnung was das soll, aber er zeigt mir hier brav alle Returns an und löscht sie dann alle fröhlich beim Speichern raus. Und das trotz Notepad++:twisted:
 
Werbung:
Du kopierst aber auch wieder aus dem Notepad raus?

Ungetestet:
PHP:
<?php
error_reporting(E_ALL);
ini_set("display_errors", true);

if (!(isset($_POST["ok"])))    
{
   
   echo '<div id="linktable">
         <form action="links.php" method="post">
         <table id="links" bgcolor="#DBDBDB" border="1" width="600px" align="left">
         <tr>
           <td>Name</td>
           <td>Beschreibung</td>
           <td>Link</td>
           <td>Typ</td>
           <td>Speichern</td>
           <td bgcolor="red">Löschen</td>
         </tr>';    
         
   echo'<tr>
         <td><input type="" name="name1" size"50" width="100" /></td>
         <td><input type="" name="beschreibung1" size"50" /></td>
         <td><input type="" name="URL1" size"50" /></td>
         <td><input type="" name="typ1" size"50" /></td>
         <td><input type="submit" name="ok1" value="OK" /></td>
         <td bgcolor="red">
            <input type="reset" name="del" value="DEL" />
            <input type="hidden" name="ident1" value ="NEW"/>
         </td>
        </tr>'; 
   
   $query = "Select
               `id`,
               `name`,
               `beschreibung`,
               `link`,
               `type`
              from
                `links`";
                
    $result = mysql_query($query) 
       or die ("MySQL-Error: " . mysql_error());
                   
          
   while($sql1 = mysql_fetch_array($result))   
   {      
      echo '<tr>
              <td>
               <input type="" name="name" size="50" value="' . $sql1['name'] . '"/>
              </td>
              <td>               
               <input type="" name="beschreibung" size="50" value="' . $sql1['beschreibung'] . '"/>
              </td>             
              <td>
               <input type="" name="URL" size="50" value="' . $sql1['link'] . '"/>
              </td>
              <td>
               <input type="" name="typ" size="50" value="' . $sql1['type'] . '"/>
              </td>
             <td>
              <input type="submit" name="ok" value="OK" />
             </td>
             <td bgcolor="red">
              <input type="submit" name="del" value="DEL" />
              <input type="hidden" name="ident" value ="' . $sql1['id'] . '" />
             </td>
            </tr>';   
   }  
   
   echo '</table>
         </form>
         </div>';    
} 
else 
{    
   if (isset($_POST["ok"]))    
   {  
      $query = "UPDATE 
                   `links` 
                 SET 
                   `name`='"         . mysql_real_escape_string($_POST['name']) . "',
                   `beschreibung`='" . mysql_real_escape_string($_POST['beschreibung'] . "',
                   `link`='"         . mysql_real_escape_string($_POST['URL'] . "',
                   `type`='"         . mysql_real_escape_string($_POST['typ'] . "'
                 WHERE 
                   `id`=" . mysql_real_escape_string($_POST['ident']);    
      
      mysql_query($query)
         or die ("MySQL-Error: " . mysql_error());    
      
      echo "update";
      
      //    header("location:links.php");    
   } 
   elseif (isset($_POST["ok1"])) 
   { 
      $query = "INSERT
                   INTO 
                     `links`
                       (
                         `name`, 
                         `beschreibung`, 
                         `link`, 
                         `type`
                       ) 
                   VALUES 
                   (
                     '" . mysql_real_escape_string($_POST['name1']) . "',
                     '" . mysql_real_escape_string($_POST['beschreibung1']) . "',
                     '" . mysql_real_escape_string($_POST['URL1']) . "',
                     '" . mysql_real_escape_string($_POST['typ1']) . "'
                   )";    
      
      $sql = mysql_query($query)
         or die ("MySQL-Error: " . mysql_error());    

      echo "Insert";
      
      //    header("location:links.php");    
   } 
   else 
   {  
     header("location:links.php");
   }
}  
?>
PS: das ist mit Notepad++ geschrieben, und alles bleibt, wie es sein soll.
 
Zuletzt bearbeitet von einem Moderator:
Werbung:
Hähä, immer noch kaputt, siehe meinen Quellcode aus Posting #30
 
Es kann doch aber nicht das Ziel sein 25 verschiedene Editoren an zu schmeißen nur damit man einen findet der die neuen Zeilen richtig überträgt. Bevor ich auf Antworten klicke ist ja auch noch alles schick.
 
Da war noch ein Parse-Error drin, hier die korrigierte Version:
PHP:
 <?php
error_reporting(E_ALL);
ini_set("display_errors", true);

if (!(isset($_POST["ok"])))    
{
   
   echo '<div id="linktable">
         <form action="links.php" method="post">
         <table id="links" bgcolor="#DBDBDB" border="1" width="600px" align="left">
         <tr>
           <td>Name</td>
           <td>Beschreibung</td>
           <td>Link</td>
           <td>Typ</td>
           <td>Speichern</td>
           <td bgcolor="red">Löschen</td>
         </tr>';    
         
   echo'<tr>
         <td><input type="" name="name1" size"50" width="100" /></td>
         <td><input type="" name="beschreibung1" size"50" /></td>
         <td><input type="" name="URL1" size"50" /></td>
         <td><input type="" name="typ1" size"50" /></td>
         <td><input type="submit" name="ok1" value="OK" /></td>
         <td bgcolor="red">
            <input type="reset" name="del" value="DEL" />
            <input type="hidden" name="ident1" value ="NEW"/>
         </td>
        </tr>'; 
   
   $query = "Select
               `id`,
               `name`,
               `beschreibung`,
               `link`,
               `type`
              from
                `links`";
                
    $result = mysql_query($query) 
       or die ("MySQL-Error: " . mysql_error());
                   
          
   while($sql1 = mysql_fetch_array($result))   
   {      
      echo '<tr>
              <td>
               <input type="" name="name" size="50" value="' . $sql1['name'] . '"/>
              </td>
              <td>               
               <input type="" name="beschreibung" size="50" value="' . $sql1['beschreibung'] . '"/>
              </td>             
              <td>
               <input type="" name="URL" size="50" value="' . $sql1['link'] . '"/>
              </td>
              <td>
               <input type="" name="typ" size="50" value="' . $sql1['type'] . '"/>
              </td>
             <td>
              <input type="submit" name="ok" value="OK" />
             </td>
             <td bgcolor="red">
              <input type="submit" name="del" value="DEL" />
              <input type="hidden" name="ident" value ="' . $sql1['id'] . '" />
             </td>
            </tr>';   
   }  
   
   echo '</table>
         </form>
         </div>';    
} 
else 
{    
   if (isset($_POST["ok"]))    
   {  
      $query = "UPDATE 
                   `links` 
                 SET 
                   `name`='"         . mysql_real_escape_string($_POST['name']) . "',
                   `beschreibung`='" . mysql_real_escape_string($_POST['beschreibung']) . "',
                   `link`='"         . mysql_real_escape_string($_POST['URL']) . "',
                   `type`='"         . mysql_real_escape_string($_POST['typ']) . "'
                 WHERE 
                   `id`=" . mysql_real_escape_string($_POST['ident']);    
      
      mysql_query($query)
         or die ("MySQL-Error: " . mysql_error());    
      
      echo "update";
      
      //    header("location:links.php");    
   } 
   elseif (isset($_POST["ok1"])) 
   { 
      $query = "INSERT
                   INTO 
                     `links`
                       (
                         `name`, 
                         `beschreibung`, 
                         `link`, 
                         `type`
                       ) 
                   VALUES 
                   (
                     '" . mysql_real_escape_string($_POST['name1']) . "',
                     '" . mysql_real_escape_string($_POST['beschreibung1']) . "',
                     '" . mysql_real_escape_string($_POST['URL1']) . "',
                     '" . mysql_real_escape_string($_POST['typ1']) . "'
                   )";    
      
      $sql = mysql_query($query)
         or die ("MySQL-Error: " . mysql_error());    

      echo "Insert";
      
      //    header("location:links.php");    
   } 
   else 
   {  
     header("location:links.php");
   }
}  
?>
 
Werbung:
Das bedeutet also es gibt folgende Anführungszeichen:
` ' "
aber nicht dieses hier ´

Der Code funktioniert jetzt soweit das er ohne Fehler durch läuft. Was jetzt noch fehlt ist eine Übertragung an die Tabelle.
Außerdem springt er zwar ind die "UpdateSchleife" jedoch nie in die "insert"
Ich glaube ich habe da noch keine gute Lösung woran das Programm unterscheiden kann was der Benutzer angeklickt hat.
 
Ein kleines Testprogramm, dass dir helfen könnte.
PHP:
<form action="" method="post">
<input type="submit" name="submit" value="Speichern">
<input type="submit" name="submit" value="Löschen">
</form>
<?php
  if (isset($_POST['submit']))
    echo $_POST['submit'];
?>
 
HAllo,

wieso 2 mit namen submit?
hat das ein tiefen grund das 2 mal den gleichen namen genommen hast?

echo "<pre>";print_r($_POST);echo "</pre>";
anstelle der echo Zeile gibt doch mehr infos und ist auch für spätere test sehr schön um zu schauen was kommt eigentlich an.

Cheffechen
 
Werbung:
Entschuldigt die lange Abwesenheit, aber manchmal geht es leider nicht anders.
Das kleine Formular habe ich eingebaut und es macht, meiner Ansicht nach, genau das was es soll.
Im Prinzip entspricht das doch der Weichenfunktion die ich haben wollte um entweder einen Datensatz anzulegen oder einen Bestehenden zu verändern, oder irre ich mich da.
Ich hatte noch eine andere Idee um das umzusetzen.
Könnte man nicht für jede Zeile der Tabelle ein eigenes Formular generieren das sich dann über die ID aus der Datenbank unterscheiden lässt?
Oder liegt der Fehler doch ganz wo anders?
 
Zurück
Oben