Session Inhalt in DB Senden

counteract

Erfahrenes Mitglied
Hallo!

Ich habe noch eine Frage:

Ich möchte nun den Inhalt der Session Variablen in meine DB senden, doch leider kommt da nie etwas an. Was habe ich denn da schon wieder falsch gemacht?

PHP:
<form method="post" action="neuanlage_projektangebot2.php">

<?php 
session_start ();  
$connectionid = mysql_connect ("localhost", "", "");  
if (!mysql_select_db ("", $connectionid))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  

    $_SESSION['pname'] = $_POST['pname'];
    $_SESSION['pbeschreibung'] = $_POST['pbeschreibung'];
    $_SESSION['pbeginn'] = $_POST['pbeginn'];
    $_SESSION['pende'] = $_POST['pende'];
    $_SESSION['pstunden'] = $_POST['pstunden'];
    $_SESSION['pstundensatz_a'] = $_POST['pstundensatz_a'];
    $_SESSION['pberufsform_a'] = $_POST['pberufsform_a'];
    $_SESSION['pstandort'] = $_POST['pstandort'];
    $_SESSION['pweitere_informationen_a'] = $_POST['pweitere_informationen_a'];
    $_SESSION['panzahl_a'] = $_POST['panzahl_a'];

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

    $sql = "SELECT * FROM `benutzerdaten` WHERE `Id` = '".$_SESSION['session_user_id']."'"; 
    $result = mysql_query($sql);  
    $row = mysql_fetch_array($result);

    $query = "INSERT into projekt_gep ( pname, pbeschreibung, pbeginn, pende, pstunden, pstundensatz, user_id, projekt_id, berufsform, standorte, weitere_informationen ) 
    VALUES ('" . $pname . "','" . $pbeschreibung . "','" . $pbeginn . "','" . $pende . "','" . $pstunden . "','" . $pstundensatz_a . "','" . $row['Id'] . "','" . $pberufsform_a . "','" . $pstandort . "','" . $pweitere_informationen_a . "','" . $panzahl_a . "')"; 
    
     mysql_query($query, $connectionid);
     mysql_close();
     echo '<script language="JavaScript">window.location=("kunden_portfolio.htm");</script>';
}

?>
 
Ich tippe auf einen Fehler bei der Datenbankabfrage. Lass dir doch mal die eventuell vorhanden MySQL-Fehlermeldung (mysql_error()-Funktion) ausgeben.
 
So ich habe jetzt einfach mal diese Funktion in meine php datei reingesetzt:

mysql_query($query, $connectionid);
mysql_error();
mysql_close();

Jedoch ohne ergebnis!

ist denn mein Code soweit richtig dass er eigentlich funktionieren müsste? Daran zweifle ich nämlich gerade...

Vielen dank schon mal für eure Hilfe... :) :)
 
Bis auf die Unklarheit, wo die Variablen („$pname“, …, „$panzahl_a“) für die zweite Datenbankabfrage herkommen, scheint es einwandfrei zu sein.
 
Ich geh mal davon aus dass in deinem Feld 'ID' in der Datenbank Zahlen gespeichert werden.
Dann müsste deine Abfrage m.E. in diesem Punkt so geändert werden:
PHP:
$sql = "SELECT * FROM `benutzerdaten` WHERE `Id` = '".$_SESSION['session_user_id']."'";
zu:
$sql = "SELECT * FROM `benutzerdaten` WHERE `Id` = ".$_SESSION['session_user_id'];
Probier das mal aus.
 
MySQL ist was die Typisierung und den Typenvergleich angeht recht frezügig (siehe Vergleichsoperatoren). Daher ist es sogar besser einmal Anführungszeichen mehr zu setzen als zu wenig. Bei anderen Datenbankverwaltungssystem ist das aber nicht unbedingt der Fall.
 
tjahahaaa, warum funktioniert das nicht?

ganz simpel: register_globals in der php.ini ist auf OFF (was auch SEHR GUT so ist!)

schreib in der SQL abfrage einfach die $_SESSION- oder $_POST-Variablen, statt der normalen variablen. aber nich vergessen, dass du die variablen vor dem schreiben in die Datenbank noch auf html und anderen potentiell schadhaften code checken musst.

@ turico - dein vorschlag ist nutzlos (sorry) weils das selbe Ergebnis ergibt.
 
Gibt doch einfach mal den Sql aus mit
echo $query;

Wo werden die Variablen zugeordnet haben die überhaupt einen Inhalt? ($pname welche werte haben die wo ist die zuweisung)
 
Zurück