php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.04.2005, 18:26  
Erfahrener Benutzer
 
Registriert seit: 30.11.2004
Beiträge: 129
Apfeltyp
Standard Update mit Zahlen/Buchstabenmix geht nicht

Hi allzusammen,

ich habe mal wieder ein kleines Problem... Und zwar will ich mehrere Daten, per Formular in eine Datenbank eintragen, und bei bedarf ändern. Das Eintragen klappt einwandfrei. Das Ändern an sich auch (script unten)... Nur wenn ich ein Feld mal auf "10aa10aa" oder ähnliches änder oder es gleich so eintrage, sind ab dann keinerlei Anderungen mehr möglich...

Auf gut Deutsch... Zahlen oder Buchstaben werden akzeptiert, sobald ich sie "mixe" isses aus.

Weiss jemand Rat?

PHP-Code:
<?php


<td width="498"><input value="<?echo $ergebnis2['titel']?>" type="Text" class="texta" name="titel" size="50"></td>
...
...
...


$titel        $_POST['titel'];
$rasse        $_POST['rasse'];
$name         $_POST['name'];
$rufname      $_POST['rufname'];
$geboren      $_POST['geboren'];
...
...
...

$uptodate "UPDATE zucht SET titel='$titel',rasse='$rasse',name='$name',
rufname='$rufname', geboren='$geboren'... ... ... Where titel=" 
$_GET['titel'];
$update mysql_query($uptodate);
?>
__________________
Apfeltyp ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.04.2005, 19:37  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

mysql error
man sollte in seinen Scripten immer mysql_error() verwenden, in etwa so:
PHP-Code:
$sql "SELECT feld1,feld2 FROM table WHERE id=5";
$result mysql_query($sql) or die(mysql_error().'
Query: '
.$sql); 
robo47 ist offline  
Alt 21.04.2005, 19:44  
Erfahrener Benutzer
 
Registriert seit: 30.11.2004
Beiträge: 129
Apfeltyp
Standard

Is drinne... Ich kann ja mal das ganze Scpript posten...

PHP-Code:
<?php?>
<td width="660" align="center" valign="top">
   <div align="center">
  <center>
  <table class="tao" cellpadding="0" cellspacing="0" width="600">
    <tr class="th">
      <td colspan="2" width="598">Daten</td>
    </tr><form action="" method="post">
    <tr class="ti"><td colspan='2'></td></tr>
    
<?
require_once("connect/connect.inc.php");

if (isset(
$_POST['daten']))
{
header("Location: index.php");}

$titel $_GET['titel'];

$abfrage "SELECT * FROM zucht WHERE titel = '$titel'";
$ergebnis mysql_query($abfrage);
if (
mysql_errno()) die ("MySQL-Error: " mysql_error());
$ergebnis2 mysql_fetch_array($ergebnis);

$titel        $_POST['titel'];
$rasse        $_POST['rasse'];
$name         $_POST['name'];
$rufname      $_POST['rufname'];
...
...
...

$sql "SELECT * FROM zucht";
$result mysql_query($sql);

if (isset(
$_GET['del']))
{
$del ="DELETE FROM zucht WHERE titel='".$_GET['del']."'";
mysql_query($del);
header("Location: index.php");}

while(
$row mysql_fetch_array($result))
{

echo 
"<tr class='til'><td colspan='2' width='598'><a href='index.php?titel=".$row["titel"]."'>".$row["titel"]." bearbeiten";
echo 
"/<a href='index.php?del=".$row["titel"]."'> löschen</td></tr>";}?>

    <tr class="ti"><td colspan='2'></td></tr>
    <tr class="ti">
      <td width="99">Titel</td>
      <td width="498"><input value="<?echo $ergebnis2['titel']?>" type="Text" class="texta" name="titel" size="50"></td>
    </tr>
    <tr class="ti">
      <td width="99">Rasse</td>
      <td width="498"><input value="<?echo $ergebnis2['rasse']?>" type="Text" class="texta" name="rasse" size="50"></td>
    </tr>
    <tr class="ti">
      <td width="99">Name</td>
      <td width="498"><input value="<?echo $ergebnis2['name']?>" type="Text" class="texta" name="name" size="50"></td>
    </tr>
...
...
...    

<tr>
      <td width="597" colspan="2"><input type="Submit" name="daten" value="Senden" class="textab"></td>
    </tr>
    <tr>
      <td width="597" colspan="2"></td>
    </tr></form>
  </table>
  </center>
</div>
<?
if (isset($_POST[daten]) and !isset($_GET[titel]))
{
$insert "INSERT INTO zucht (titel, rasse, name, rufname,
geboren, ort, vater, mutter, farbe, zuchtklasse, url,
hd, prüfung, charakter) VALUES ('$titel','$rasse','$name','$rufname','$geboren',
'$ort','$vater','$mutter','$farbe','$zuchtklasse','$url','$hd','$prüfung',
'$charakter')"
;
$update mysql_query($insert);
}

if (isset(
$_POST[daten]) and isset($_GET[titel]))
{
$uptodate "UPDATE zucht SET titel='$titel',rasse='$rasse',name='$name',
rufname='$rufname', geboren='$geboren',ort='$ort',vater='$vater',mutter='$mutter',
farbe='$farbe',zuchtklasse='$zuchtklasse',url='$url',hd='$hd',prüfung='$prüfung',
charakter='$charakter' Where titel=" 
$_GET['titel'];
$update mysql_query($uptodate);
}

?>
[color=orange]//ab hier unwichtig //[/color]
<div align="center">
  <center><form action="forums.html" method="post" enctype="multipart/form-data">
  <table class="tao" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="600" id="AutoNumber2">
    <tr class="th">
      <td colspan="2" width="598">Bild hochladen</td>
    </tr>
    <tr class="ti">
      <td width="98">Bild</td>
      <td width="499"><input type="File" name="ruede" class="texta"></td>
    </tr>
    <tr class="ti">
      <td width="597" colspan="2"><input type="submit" value="Abschicken" name="B1" class="textab">
                                    <input type="reset" value="Zurücksetzen" name="B2" class="textab"></td>
    </tr>
  </table></form>
  </center>
</div>
  
</td>
</tr>
</table>
</center></div></body></html>
?>
__________________
Apfeltyp ist offline  
Alt 21.04.2005, 19:54  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

1) du hast aneiner stelle im script das :P sonst nirgnends
2)
error-reporting
Zum testen von Scripts setzt man normalerweise am anfang des scripts (oder direkt in einer config-datei die immer Includet wird)
PHP-Code:
error_reporting(E_ALL); 
damit werden dann alle Fehler ausgegeben.
3) indizes von arrays spricht man mit ' an also z.b. $array['index']
4)
PHP-Code:
<?php
$titel        
$_POST['titel'];
$rasse        $_POST['rasse'];
$name         $_POST['name'];
$rufname      $_POST['rufname']
?>
ist ja schhön und gut, aber sind bei dir die magic quotes an? wenn nicht mal www.php.net/addlsashes anschauen
5) geewöhon dir vieleicht mal an auch deine querys einzurücken, bringt dir im endeffekt übersicht besonders beim debuggen
6)
select * from
Warum soll ich nicht SELECT * schreiben?
http://www.php-faq.de/q/q-sql-select.html
7) sollten keine einträge in der DB sein bringt dir diese zeile:
PHP-Code:
<?php
while($row mysql_fetch_array($result))

?>
einen unschönen Fehler
-> ausfiltern mittels
PHP-Code:
<?php
if (mysql_num_rows($result) > 0)
{
// dein Code
}
else
{
// Ausgabe dass es keine Datensätze gibt
}
?>

nachdem du das alles mal beherzigt / umgesetzt hast und das problem noch besteht
-> poste mal deine create-befehle für die datenbank, die fehler die du von mysql_error erhälst und das komplette query, so wie es an die datenbank kommt (mein query-befehl so wie ich oben schon geschrieben habe, gibt ihn dir im fehelrfall sogar aus)

mfg
robo47
robo47 ist offline  
Alt 21.04.2005, 20:23  
Erfahrener Benutzer
 
Registriert seit: 30.11.2004
Beiträge: 129
Apfeltyp
Standard

1. du hast aneiner stelle im script das :P sonst nirgnends
- was hab ich da? Das Smilie dass die Zunge rausstreckt oder das mysql_error() ?! Wo kann man das noch verwenden?

2. "error_reporting(E_ALL);"
- da kommt nun:
Notice: Undefined index: rasse in blablabla.php on line 25
In line 25 steht: $titel = $_POST['titel'];
Verstehe den fehler nicht ganz, da $_POST['titel'] ja auch per echo angezeigt wird.

3. "indizes von arrays spricht man mit ' an also z.b. $array['index']"
- hab ich doch ?!

4. "magic quotes"
- also insert und update funktioniert ja soweit, nur Buchstaben und Zahlen kombiniert nicht. Haben magic quotes damit was zu tun?

5. "geewöhon dir vieleicht mal an..."
- werd ich machen

6. "select * from "
- werde ich machen.

7. "sollten keine einträge in der DB sein bringt dir diese zeile:..."
- thx, hatte ich garnicht dran gedacht...

Vielen Dank mal, aber:

Kannst du mir Punkt 1-4 bitte noch kurz genauer erklären??
Apfeltyp ist offline  
Alt 21.04.2005, 20:29  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von Apfeltyp
1. du hast aneiner stelle im script das :P sonst nirgnends
- was hab ich da? Das Smilie dass die Zunge rausstreckt oder das mysql_error() ?! Wo kann man das noch verwenden?
bei jedem mysql_query, mysql_connect, mysql_select_db !!!!
Zitat:
Zitat von Apfeltyp
eltyp"]2. "error_reporting(E_ALL);"
- da kommt nun:
Notice: Undefined index: rasse in blablabla.php on line 25
In line 25 steht: $titel = $_POST['titel'];
Verstehe den fehler nicht ganz, da $_POST['titel'] ja auch per echo angezeigt wird.
php lügt nicht, würde sagen 25 ist:
PHP-Code:
$rasse        $_POST['rasse']; 
wäre zumindest logisch und der fehler sagt einfach dass der index nicht existiert, sprich dass wohl im formular auf der seite vorher kein feld mit dem namen exisitert (tippfehler oder sowas? -> groß und kleinschreibung beachten)
Zitat:
3. "indizes von arrays spricht man mit ' an also z.b. $array['index']"
- hab ich doch ?!
nicht überall :P
PHP-Code:
if (isset($_POST[daten]) and isset($_GET[titel])) 
Zitat:
4. "magic quotes"
- wenn ich die nicht an hätte würd das updaten und ändern ja garnicht funktionieren oder?
nö, lediglcih würden alle " in den übergebenen parametern durch \" escapt und so fertig für ein db-query sein, so musst du das mit mysql_real_escape_string oder addslashes machen

Zitat:
5. "geewöhon dir vieleicht mal an..."
- werd ich machen
:P
Zitat:
6. "select * from "
- werde ich machen.
:P
7. "sollten keine einträge in der DB sein bringt dir diese zeile:..."
- thx, hatte ich garnicht dran gedacht...

Zitat:
Vielen Dank mal, aber:

Kannst du mir Punkt 1-4 bitte noch kurz genauer erklären??
:P jab :P

mfg
robo47
robo47 ist offline  
Alt 21.04.2005, 20:40  
Erfahrener Benutzer
 
Registriert seit: 30.11.2004
Beiträge: 129
Apfeltyp
Standard

1. ok

2. ok, zeile 25 ist rasse aber dennoch bekomme ich den DB-Inhalt auf der Seite im entsprechenden Feld
<td width="498"><input value="<?echo $ergebnis2['rasse']?>" type="Text" class="texta" name="rasse" size="50"></td>
angezeigt

Kann es an der Anodnung liegen??
oben: $rasse = $_POST['rasse'];
unten: das inputfeld: rasse

Denkt er vielleicht deswegen die Variable sei leer weil sie im Code erst später "befüllt" wird?! Ist es sinnvoller $rasse = $_POST['rasse']; under dem eigentlichen Formular zu setzten?

3. ok
4. ok
Apfeltyp ist offline  
Alt 21.04.2005, 20:43  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

2. nein :P

mach doch mal ein var_dump($_POST);
ganz oben in dein script so rein dass es nur aufgerufen wird wenn du das formular verschickst, dann siehst du was ankommt, heißt das feld in der db vieleicht anders?

vieleicht mal noch einen var_dump($row);
hinter
while($row = mysql_fetch_array($result))
robo47 ist offline  
Alt 21.04.2005, 20:54  
Erfahrener Benutzer
 
Registriert seit: 30.11.2004
Beiträge: 129
Apfeltyp
Standard

if (isset($_POST['daten']))
{var_dump($_POST); }

So??

Naja, also den Fehler warum es nicht upgedatet hat, hab ich gefunden...

PHP-Code:
<?php
$uptodate 
"UPDATE zucht SET titel='$titel',rasse='$rasse',... ... ... 
charakter='$charakter' Where titel="
$_GET['titel']; 
?>
(muss
PHP-Code:
<?php
='". $_GET['titel']."';
?>
lauten)

Aber die Fehler von dem errorreport hätt ich schon gern weg... Wenn du also Lust und zeit hast könnt ich dich ja über ICQ anquatschen... Wär das ok für dich?


Also das das updaten ja jetzt ohne Fehler klappt, frage ich mich warum mir der error rep immernoch leere Felder anzeigt...

Der will mir erzählen dass jede Variable leer sei. Also die alle
$rasse = $_POST['rasse'];
...
...

Kapiert der nicht dass die erst weiter unten "befüllt" werden oder warum kommt diese Meldung??

Hier nochmal der Ablauf im Code

1. die Abfrage zur DB
2. $rasse = $_POST['rasse'];
3. Formular mit value = ergebnis['rasse'] und name ="rasse"

Und zu $rasse = $_POST['rasse']; (wie bei allen anderen auch) kommt:

Notice: Undefined index: titel in /var/www/blablabla.php on line 25
Apfeltyp ist offline  
Alt 21.04.2005, 21:14  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

pm bekommen?
robo47 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
Update / syntaxfehler prinzli Datenbanken 7 24.11.2007 21:24
INSERT.. ON DUPLICATE KEY UPDATE cycap Datenbanken 3 26.10.2007 13:08
UPDATE mit Subquery cycap Datenbanken 6 27.09.2007 14:25
zwei SQL-Befehle (SELECT UND UPDATE) auf einmal vollziehen. Datenbanken 3 09.03.2006 16:34
UPDATE soll TIMESTAMP-Feld nicht verändern Datenbanken 7 26.01.2006 13:59
UPDATE count nach Link Aufruf ? PHP Tipps 2006 9 22.01.2006 14:53
per Update eine zahl ehöhen lassen Datenbanken 3 04.07.2005 16:37
Update in mysql funzt nicht maeck PHP Tipps 2005-2 4 27.06.2005 22:52
PHP5 Update. XAMPP oder manuelles Update? PHP-Fortgeschrittene 7 21.04.2005 22:16
Update erfolgt nicht...! PHP Tipps 2005 7 14.03.2005 16:38
Update per Cronjob (where Feld = Wort) Apfeltyp PHP Tipps 2004-2 3 14.12.2004 18:25
[Erledigt] UPDATE mit ' im Text Datenbanken 2 09.11.2004 20:07
[Erledigt] UPDATE = NO Update aber kein fehler..dringend hilfe suchend Datenbanken 2 25.09.2004 16:28
php update PHP Tipps 2004 2 24.09.2004 01:07
[Erledigt] UPDATE Syntax problem Datenbanken 6 17.08.2004 16:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zahlen und buchstaben mix

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:37 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.