php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.01.2009, 16:49  
Neuer Benutzer
 
Registriert seit: 15.01.2009
Beiträge: 4
jensven befindet sich auf einem aufstrebenden Ast
Standard daten in myqsl bank abspeichern

hi leute
ich bin noch ziemlich neu bei der sache mit php und mysql
habe schon längere zeit mit amxx scripting zu tun (ist ja grob so ähnlich wie php bzw. C++)

ich möchte ein script schreiben, in dem man sich einen ort auswählen kann und dann wie es dort war.
Das ganze sollte in eine datenbank abgespeichert werden, wobei wenn schon ein eintrag über den ort "lahr" schon gibt, soll dieses feld upgedatet werden.

habe das grundscript von einem tutorial genommen, mich eingearbeitet und verändert. hier mal das script:
PHP-Code:
<?php
$db_host 
"localhost";
$db_user "xxx";
$db_pass "xxx";
$db_name "xxx";

if (isset( 
$_POST['eintragen'] ))
{
    
// Maskierende Slashes aus POST entfernen
    
$_POST get_magic_quotes_gpc() ? array_map'stripslashes'$_POST ) : $_POST;

    
// Inhalte der Felder aus POST holen
    
$ort $_POST['ort'];
    
$wie =  $_POST['radio'];


    
// Sind alle Eingaben durch die Validierung gekommen werden sie in die DB geschrieben
    // Verbindung oeffnen und Datenbank ausweahlen
    
$conID mysql_connect$db_host$db_user$db_pass ) or die( "Die Datenbank konnte nicht erreicht werden!" );
    if (
$conID)
    {
        
mysql_select_db$db_name$conID );
    }

    echo 
"<strong>Du fandest $ort $wie</strong>";

    if(
$wie == super)
    
mysql_query("INSERT INTO meinungen (ort,super) VALUES ('$ort','+1') ON DUPLICATE KEY UPDATE super = 'super+1'");


    if(
$wie == ok)
    
mysql_query("INSERT INTO meinungen (ort,ok) VALUES ('$ort','+1') ON DUPLICATE KEY UPDATE super = 'ok+1'");


    if(
$wie == schlecht)
    
mysql_query("INSERT INTO meinungen (ort,schlecht) VALUES ('$ort','+1') ON DUPLICATE KEY UPDATE super = 'schlecht+1'");

    
// Schickt die Anfrage an die DB und schreibt die Daten in die Tabelle
    // Pruefen ob der neue Datensatz tatsaechlich eingefuegt wurde
    
if (mysql_affected_rows() == 1)
    {

        echo 
"<h3>Alles klar, wurde eingetragen!</h3>";
        
// Hier kann weiterer Code stehen der ausgefuehrt werden soll
        // wenn ein Eintrag erfolgreich war. z.B. Email an den Admin schicken
        // der ueber den neuen Eintrag informiert
    
}
    else
    {
        echo 
mysql_error();
        echo 
"<h3>Da stimmt etwas <strong>nicht</strong></h3>";
        
// Hier koennen Massnahmen ergriffen werden die ueber den Misserfolg informieren
        // wie z.B. den Benutzer darueber zu informieren, dem Admin eine Mail schicken
        // damit er sich um den Fehler kuemmern kann, etc pp
    
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formularinhalt in eine Datenbank schreiben</title>
</head>

<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="formular" id="formular">

<p align="center"><table width="100%" border="1" bordercolor="#C0C0C0" cellpadding="0" cellspacing="5">
 <tr>
  <td bgcolor="#E0DFE3">&nbsp;&nbsp;&nbsp;Ort / Veranstaltung</td>
  <td>&nbsp;&nbsp;&nbsp;<select name="ort" id="ort"><option>Hexenball Lahr</option><option>Umzug Lahr</option><option>Umzug Sexau</option><option>Hexennacht Tuttlingen</option><option>Zunftabend Forchheim</option><option>Fasenteröffnung Ortenberg</option><option>Hexenball Rust</option><option>Fetzerball Renchen</option><option>Fasentumzug Hornberg</option><option>Brauchtumsabend Haslach-Tiergarten</option></select></td>
 </tr>
 <tr>
  <td bgcolor="#E0DFE3">&nbsp;&nbsp;&nbsp;Wie war es dort?</td>
  <td><input type="radio" name="radio" value="super" /> Super <input type="radio" name="radio" value="ok" />Ok <input type="radio" name="radio" value="schlecht" />Schlecht<br/> </td>
 </tr>
</td>
 </tr>
</table></p>
<p align="center"><input type="submit" name="eintragen" id="eintragen" value="Abschicken" /></p></p>
</body>
</html>
so funktioniert es nicht. es wird immer angezeigt das etwas nicht stimmt, weil die daten nicht eingetragen wurden. Was ist da falsch ?
hier der link zum script:
Formularinhalt in eine Datenbank schreiben

Geändert von jensven (24.01.2009 um 17:42 Uhr). Grund: url geändert
jensven ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.01.2009, 16:57  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

wie wäre es mit der fehlermeldung?

Dein Link funktioniert übrigens nicht.
__________________
twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

$live->free() OR die();
moveax1 ist offline  
Alt 24.01.2009, 16:58  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Das ist aber ein schlechtes Script! Kannst Du bitte das Tutorial benennen? Z.B. wird eine fehlerhafte Connection nicht abgefangen. Das könnte bis hin zu Deinem Fehler führen.

Aber eigentlich sollte es auch einen DB-Fehler geben, oder?

Btw: Willkommen im Forum.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 24.01.2009, 17:53  
Neuer Benutzer
 
Registriert seit: 15.01.2009
Beiträge: 4
jensven befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von moveax1 Beitrag anzeigen
wie wäre es mit der fehlermeldung?

Dein Link funktioniert übrigens nicht.
fehlermeldung bekomm ich keine, eben nur diese:

Da stimmt etwas nicht

eine mysql fehlermeldung bekomm ich keine
die url habe ich geändert.

Zitat:
Zitat von moveax1 Beitrag anzeigen
Das ist aber ein schlechtes Script! Kannst Du bitte das Tutorial benennen? Z.B. wird eine fehlerhafte Connection nicht abgefangen. Das könnte bis hin zu Deinem Fehler führen.

Aber eigentlich sollte es auch einen DB-Fehler geben, oder?

Btw: Willkommen im Forum.
Dankeschön erstmal

hier das tutorial. wie schon geschrieben verändert. in diesem tutorial werden ja daten immer wieder neu reingeschrieben. ich habe/wollte es ja so verändern ds die daten nach jeder eingabe geupdatet werden. Im prinzip eine umfrage, mit auswahl für den ort. Habe mir das handbuch von mysql angeschaut und nach den beispielen von dort das updaten eingebaut.

PHP-Code:
if($wie == super
stimmt ja so oder ?
danke schon mal für die schnelle antwort
jensven ist offline  
Alt 24.01.2009, 17:59  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

ersetz mal testhalber:
PHP-Code:
if ($conID)
    {
        
mysql_select_db$db_name$conID );
    } 
durch
PHP-Code:
if ($conID)
    {
        
mysql_select_db$db_name$conID );
    } 
else 
    {
    die (
'keine Datenbankverbindung.');
    } 
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 24.01.2009, 18:06  
Neuer Benutzer
 
Registriert seit: 15.01.2009
Beiträge: 4
jensven befindet sich auf einem aufstrebenden Ast
Standard

ok habs hinzugefügt, jedoch keine veränderung.

die ganze orte sind auch schon im feld ort drinnen.
jensven ist offline  
Alt 24.01.2009, 18:57  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.241
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Ach so! Er macht die Updates. Nun dann:

Zitat:
When using UPDATE, MySQL will not update columns where the new value is the same as the old value. This creates the possibility that mysql_affected_rows() may not actually equal the number of rows matched, only the number of rows that were literally affected by the query.
Zudem könnten auch 2 oder mehr Datensätze geupdatet worden sein. Wie gesagt, das Script ist Mist.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 25.01.2009, 02:54  
Neuer Benutzer
 
Registriert seit: 25.01.2009
Beiträge: 5
phpBuddy befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von jensven Beitrag anzeigen
PHP-Code:
if($wie == super
stimmt ja so oder ?
danke schon mal für die schnelle antwort
Hallo jensven,

das stimmt so natürlich nicht. Die Werte die Du vom Formular als $_POST['radio'] erhältst sind Strings. Du prüfst aber in der IF, ob die Konstante super dem Wert $_POST['radio'] entspricht, was natürlich nicht der Fall, da gar keine Konstante mit dem Namen super existiert. Folglich wird auch nicht der Code in der IF-Abfrage ausgeführt.
Setze mal das super, ok, schlecht in Anführungszeichen, dann sollte es auch funktionieren.
PHP-Code:
if($wie == 'super')
if(
$wie == 'ok'
if(
$wie == 'schlecht'

@ nikosch
Interessant, wie Du nicht müde wirst zu erzählen wie schlecht doch das Script ist, bietest dann aber selbst nur mangelhafte Hilfe an und erkennst nicht mal den simpelsten Fehler, obwohl der Fragesteller extra noch auf den Fehler hingewiesen hat.
Ansonsten solltest Du selbst noch etwas MySQL anschauen, denn offensichtlich kennst Du die ON DUPLICATE KEY Syntax nicht, sondern zitierst stattdessen eine Beschreibung aus der Dokumentation die zu einer vollkommen anderen Funktion gehört, nur um nochmal die Arbeit anderer als "Mist" zu verurteilen.
phpBuddy ist offline  
Alt 25.01.2009, 11:16  
Erfahrener Benutzer
 
Benutzerbild von tomtaz
 
Registriert seit: 17.06.2008
Beiträge: 1.762
PHP-Kenntnisse:
Fortgeschritten
tomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig netttomtaz ist einfach richtig nett
tomtaz eine Nachricht über ICQ schicken tomtaz eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von phpBuddy Beitrag anzeigen
@ nikosch
Interessant, wie Du nicht müde wirst zu erzählen wie schlecht doch das Script ist, bietest dann aber selbst nur mangelhafte Hilfe an und erkennst nicht mal den simpelsten Fehler, obwohl der Fragesteller extra noch auf den Fehler hingewiesen hat.
Ansonsten solltest Du selbst noch etwas MySQL anschauen, denn offensichtlich kennst Du die ON DUPLICATE KEY Syntax nicht, sondern zitierst stattdessen eine Beschreibung aus der Dokumentation die zu einer vollkommen anderen Funktion gehört, nur um nochmal die Arbeit anderer als "Mist" zu verurteilen.
Ich bin hier der selben Meinung wie Nikosch!

Es ist kein error_reporting drin, es werden keine SQL Fehler abgefangen etc.
Wir haben hier eine wunderschöne Samlung aus ausgesuchten Tutoritals (http://www.php.de/php-einsteiger/489...rundlagen.html)! Wir sehen solche Scripte jeden Tag, und manchmal hat man eben keine Lust jedesmal das selbe zu diskutieren, da man ja auch hier im Forum die Suchfunktion nutzen kann. Hinzu zu dem Script kommt noch, dass das Script anfällig auf SQL-Injections (Bitte Googlen) ist.

Und wieso zitiert hier Nikosch eine vollkommen andere Funktion? Also wenn ich mich nicht irre und lesen kann, kommt in seinen Script die Funktion mysql_affected_rows() und das steht eben dabei, wenn man das Manuel lesen würde.
__________________
Mfg Tomtaz
"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..."
tomtaz ist offline  
Alt 25.01.2009, 11:24  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
ON DUPLICATE KEY UPDATE super = 'schlecht+1'
Da wird also immer wieder die selbe Zeichenkette in das Feld eingetragen. Und dann gib mysql_affected_rows() halt 0 zurück, da sich nichts geändert hat. Der Hinweis passt also schon.
An dieser Stelle müssen die Anführungszeichen weg. Allerdings verstehe ich den Aufbau des Skript und der Tabellen auch nicht bzw. mache keine Anstalten, sie zu verstehen.
super gleich schlecht+1 ??? hä?
David ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Scriptsuche Suche Script zum einpflegen von daten... derTorsten1909 Scriptbörse 17 10.01.2009 18:22
Problem mit Formular, Daten an datenbank senden Aurec PHP Tipps 2008 11 20.11.2008 18:17
[Erledigt] probleme beim weiterverwenden übernommener variabel zum erstellen einer da kai PHP Tipps 2008 9 16.10.2008 10:56
Mehrere Arrays unterschiedlicher Größe kombinieren querfisch PHP Tipps 2007 9 31.03.2007 21:34
Doppelte Datensetze in der Daten bank !!! Cyber Soldier PHP Tipps 2006 5 01.03.2006 23:30
Session Frage - gleiches Formular 2 mal alle Daten behalten NetLook PHP Tipps 2007 1 21.11.2005 18:42
[Erledigt] sql daten für einen kunden auslesen/ändern im Formular PHP Tipps 2005-2 3 12.10.2005 08:36
[Erledigt] Daten auslesen und ändern Datenbanken 2 17.09.2005 19:28
Daten eintragen und auslesen Rettungsdackel Datenbanken 0 14.09.2005 16:29
Daten in Datenbank ändern PHP Tipps 2005 3 27.01.2005 14:40
Daten übergeben kampfnickel PHP Tipps 2005 4 05.01.2005 14:12
Daten in mehreren Tabellen abspeichern duerov PHP Tipps 2004 1 23.09.2004 14:14
array_push nur in begrenzter Anzahl ausführen ? PHP Tipps 2004 2 07.09.2004 09:05
[Erledigt] Formular mit Daten werden auf anderer Seite zusammengefasst PHP Tipps 2004 4 15.08.2004 15:44
[Erledigt] Keine Daten in der Bestätigungsmail?? :?: PHP Tipps 2004 4 22.07.2004 01:31


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum