Forum
Tipps
News
Menu-Icon

PHP: 9-stellige Zahl lässt sich nicht per POST übergeben

Moin moin ...

ich steh grad völlig auf dem Schlauch (und um ehrlich zu sein sind meine PHP kenntnisse etwas eingerostet).
Ich hab ne simple Form gebastelt und will eine Zahl (als Text oder als Zahl) an das Skript selbst übergeben. Das ganze sieht so aus:

$meinWert = $_POST[meinWert];
<form name="Eingabe" method="POST" action="meinSkript.php"
  Rechnungsnummer: <input type="text" name"meinWert" value="$meinWert">
  <input type="submit" name="und los!" value="$meinWert">
</form>

wenn ich das Ding nun aufrufe mit einer bis zu 8-stelligen Zahl, dann funktioniert das ganze. Gebe ich eine 9-stellige ein, kommt plötzlich "die Verbindung zum Server wurde unterbrochen" und das Skript wird nicht aufgeführt. Hab ich was übersehen?

Gruß Maddin

Antworten zu PHP: 9-stellige Zahl lässt sich nicht per POST übergeben:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

und ganz kurios wirds erst ... geb ich ne 10-stellige ein, gehts plötzlich wieder ...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

und noch eins drauf zu setzen ...

ich will den Wert: 201001773 übergeben ... hänge ich eine 0 ran, dann gehts ... ändere ich vorn eine Zahl, dann scheints auch zu gehen ... missinterpretiert PHP diesen inhalt vielleicht als Datum oder etwas dergleichen?

Gruß Maddin

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

okay ... offensichtlich liegts nicht am PHP sondern an der SQL Abfrage ... ein simples:

select * from Tabelle where ID='201001773'
stirbt mir ... ein Ziffer mehr oder weniger bringt die Abfrage zum laufen, allerdings mit keinem Ergebnis (klar, gibts ja auch nicht).

Das weiterhin kuriose ist ... ich baue mir den Suchstring (also den MSQ-Query) zusammen und schicke ihn dann per
$TEMP = mssql_query($meineAbfrage) or die ("nicht erfolgreich");
erst los ... falls es also ein Problem mit der Abfrage geben sollte, da also völliger Mist drin stehen sollte, sollte er ja erst da "sterben" ... nicht aber das komplette Skript nicht ausführen ...

Die gleiche Abfrage über die SQL Server Management Konsole bringt übrigens das gewünschte ergebnis ...

Gruß Maddin

Hallo,
aus den Schipseln ist nicht einwandfrei erkenntlich, wo der Fehler liegt, sollten eigentlich funktionieren(außer 2 kleinen Schusselfehlern, aber die werden in Deinem orginalen Code nicht drin sein, sonst würde garnix gehen)
Ist das ein sehr langes Script oder kannst Du das hier reinstellen?
Was hat ID für einen Datentyp?
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

ID hat laut SQLServer den Datentyp (int) ... wobei ich grad geschaut habe, das sollte also bis 2,147,483,647 gehen ...

das drollige ist eben, die ID scheint mir zu bestehen aus der Jahreszahl und irgend einer Art von laufender Nummer (gut vorstellbar). Wenn ich jetzt ein existierendes Jahr (also 2010, 2009, etc.) vorn eingebe, dann bricht mein php-Skript zusammen. Gehe ich darüber hinaus (mit 2011, 2012, etc.) dann liefert er mir ein ordnungsgemäßes "leeres" Ergebnis und bricht nicht ab.
Wir haben darüber hinaus der in der Datenbank auch noch ID's mit 5 Stellen (kommen aus einem anderen Bereich, liegen aber in der selben Tabelle) ... wenn ich nach denen Suche klappt auch alles ganz prima und er listet mir das Ergebnis auch auf.

Das einzige, was ich mir jetzt gerade vorstellen kann, ist: mein SQL-Abfrageblock ist zu komplex ... ich nehme mir 6 Tabellenköpfe heraus aus einem 3-fach-join über drei Tabellen ... Also Spalte 1 und 4 von Tabelle 1, 2 und 12 von Tabelle 2 und zu guter letzt noch 2 und 8 von Tabelle 3, eben mit der Bedingung, daß die ID jene welche sein soll, die ich eingebe ...

Das Skript ist leider etwas zu lang ... und die Tabellennamen alle umzuschreiben ist mir grad ein wenig Mühselig ... sorry ...

mit freundlichem Gruß
Maddin  

« Letzte Änderung: 25.10.10, 16:41:17 von kruemeltee »

Ist ja verständlich, hab' ja nur gefragt ;)

Zitat
das drollige ist eben, die ID scheint mir zu bestehen aus der Jahreszahl und irgend einer Art von laufender Nummer (gut vorstellbar). Wenn ich jetzt ein existierendes Jahr (also 2010, 2009, etc.) vorn eingebe, dann bricht mein php-Skript zusammen. Gehe ich darüber hinaus (mit 2011, 2012, etc.) dann liefert er mir ein ordnungsgemäßes "leeres" Ergebnis und bricht nicht ab.
Da ist wahrscheinlich der Ansatz.
Wo jetzt der Fehler genau entsteht, kann ich so erstmal nicht sagen (so von weitem).
Wird die ID möglicherweise aus dem Datum erzeugt(und bekommt dabei vllt. ein falsches Format?) oder ist das ein Auto-Wert?
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

woher die ID genau kommt kann ich nicht sagen, ich glaube die legt das Programm fest, welches diese Datenbank "beschreibt" und erzeugt ...
theoretisch ist es doch aber eigentlich egal ... wenn ich da eingebe "HansWurst" müsste das Skript trotzdem laufen, mir zwar keine Ergebnisse bringen, denn eine ID "HansWurst" gibts sicherlich nicht, aber das Skript dürfte doch nicht einfach "die Serververbindung zurücksetzen". Was ich auch noch verstehen würde wäre, wenn die Zeile zwei eintreten würde, also jene Zeile, welche den SQL-Query tatsächlich erst mal laufen lässt ... vorher ist's ja nur eine Variable, die gesetzt wird. Falls die Abfrage käse enthalten würde, müsste sie mit dem angegebenen "die" einfach sterben und mir eine Fehlermeldung bringen, nicht aber die Serververbindung zurück setzen, oder lieg ich da falsch?

Gruß Maddin

Nur wenns als Fehler erkannt wird, nicht wenn z.B. ein Timeout erzeugt wird, weil es zu lange dauert um die Abfrage abzuarbeiten.
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

d.h. die Abfrage könnte zu lange dauern als daß er das hinbekommt? Vielleicht sollte ich die JOIN's weg lassen und jede Abfrage einzeln aufrufen ...

Wäre mal ne Idee ... oder gibts noch nen Vorschlag?

Naja, man könnte auch am Server den Timeout auch mal testweise hochsetzen.
Wobei ein Timeout hier nur eine Möglichkeit ist.
Aberletztendlich ist dies trotzdem nix normales.
Ich weiss ja nicht, wie eure Datenbank aussieht, aber so ein paar Joins sollten kein Problem sein.
Geh auch Deine Querys am besten nochmal durch.

Zitat
Die gleiche Abfrage über die SQL Server Management Konsole bringt übrigens das gewünschte ergebnis
bei allen?
extreme Unterschiede in der Ausführungszeit?

Mehr Ansatzpunkte habe ich jetzt so von Weitem ohne Code leider nicht.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

also ... ich hab das TimeLimit mal hochgesetzt ... das brachte leider überhaupt nichts ...
es ist ja auch nicht so, daß das Skript ne Weile rödelt und dann "Verbindung wurde unterbrochen" anzeigt (nach glaub 30. Sekunden kommt das wohl standardmäßig) ... sondern sofort, wenn ich das Skript aufrufe kommt dies, ohne großes wenn und aber ...

ich versuch jetzt mal die JOINS zu vermeiden und bastle alles mal in separate Abfragen, obwohl ich nicht glaube, daß es daran liegt. Ich denke es liegt vielmehr an der Zahl und einer Möglichkeit, daß PHP diese in irgend einer Art und Weise umwandelt. Denn selbst wenn ich alle JOINS entferne und ohne große Umschweife direkt nur nach ein paar Werten suchen, die genau diese 9-Stellige Nummer enthalten, bricht mir das Skript immer sofort ab.
Also ein simples "select * from bla where ID='9-stellige-Nummer'"
stürzt ebenfalls ab.

Gruß Maddin

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

ach ... und die Zeit für die Abfrage (selbst für die komplizierte mit den vielen JOINS) braucht nicht einmal ne Sekunde auf dem Server in der Management Console ... also daran kanns auch nicht liegen.
Ich hab übrigens gerade gelesen, daß das Timeout für PHP Skripte nur auf Skriptseitige Abläufe gelten soll (wenn ich also eine Schleife oder etwas dergleichen einbaue) ... nicht aber für SQL Abfragen. Ist dies korrekt?

Gruß Maddin

Von sich aus wandelt PHP garnix um.
Die von Dir geposteten Fragmente laufen problemlos, egal ob 3,5,9,10 oder 11-stellig.
Wenn die Meldung sofort kommt, braucht man auch nicht in Richtung Timeout suchen. - ich sitze ja nicht davor.

Funktioniert die Abfrage in anderen Scripten?

 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

hab ich noch nicht probiert ... leider ... aber ich hab mir heute mal etwas frei geschaufelt und werde dieses "Durcheinander" mal richtig ordnen ... wer weiß, wo sich da ein kleiner Fehlerteufel eingeschlichen hat ...

ich schreib das Skript nochmal neu ... und fange bei der einfachsten Abfrage an. Mal schauen ob sich dadurch etwas ergibt ...

Gruß Maddin

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
select * from Tabelle where ID='201001773'

Was macht denn dein Skript, wenn du mal die Anführungszeichen weglässt? Da das Feld  deiner Aussage nach als INT definiert ist, sollten dort die übergebenen Werte keine Quotes haben.

greez 8)
JoSsiF

« Datenbankpasswort in der website schützenfotos an email »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
PHP
PHP steht für Personal Home Page und ist eine Skriptsprache die meist verwendet wird zur dynamischen Erzeugen von Internetseiten. PHP zeichnet sich durch die weite D...

Formatieren
  Das Formatieren einer Festplatte, HDD oder SSD bereitet das Laufwerk auf neue Daten vor. Dazu werden sämtliche alten Daten gelöscht, damit die...

Hypertext
Hypertext ( zu Deutsch: Übertext) ein ein von dem Informatiker Theodore L. Nelson in den sechziger Jahren geprägter Begriff für Text, der dreidimensional g...