login  Naam:   Wachtwoord: 
Registreer je!
 Forum

INSERT probleem

Offline TFOL - 02/05/2005 23:21 (laatste wijziging 02/05/2005 23:21)
Avatar van TFOLPHP beginner Hallo,

ik heb een probleem... hij wil mn data niet insert'en. Ik krijg deze melding:

Citaat:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''1', 'b_1') VALUES ('ACTS_5812+NVBS-excursietrein.JPG', 'ACTS 5 on line 72


bij dit script:
  1. <html>
  2.  
  3. <head>
  4. <title>Uitgebreid fotoalbumsysteem + uploader met MySQL</title>
  5. </head>
  6.  
  7. <body>
  8.  
  9. <form method="POST" action="" enctype="multipart/form-data">
  10. <?php
  11. //fouten checker
  12.  
  13. //MySQL gegevens includen voor veiligheid
  14. include("connect.php");
  15.  
  16. //variabelen bepalen
  17. $album = $_GET['a'];
  18. $aantal = $_GET['aa'];
  19. $fotograaf = $_GET['f'];
  20. $datum = $_GET['d'];
  21. $max_breedte = 550;
  22.  
  23. //aantal input velden bepalen en weergeven
  24. $i=0;
  25. while($i++ < $aantal)
  26. {
  27. $a = "b_$i";
  28. echo "<b>Foto $i:</b> <input type=\"file\" name=\"$i\"/>";?><br><?
  29. echo "<b>Beschrijving:</b><br><textarea name=\"$a\" cols=\"40\" rows=\"8\"></textarea>";?><br><br><?
  30.  
  31. if(isset($_POST['uploaden']))
  32. {
  33.  
  34. //rijen in tabel toevoegen
  35.  
  36. mysql_query("ALTER TABLE `treinfoto-online_net_1`.`$album` ADD `$i` VARCHAR(255) NOT NULL");
  37.  
  38. mysql_query("ALTER TABLE `treinfoto-online_net_1`.`$album` ADD `$a` VARCHAR(255) NOT NULL");
  39.  
  40. //geposte variabelen bepalen
  41. $tmp_bestand = $_FILES[$i]['tmp_name'];
  42. $bestand = $_FILES[$i]['name'];
  43. $besch = $_POST[$a];
  44.  
  45. //uploaden + bestand chmodden
  46. move_uploaded_file($tmp_bestand, $album."/".$bestand);
  47. chmod ($album."/".$bestand, 0777);
  48.  
  49. //lengtes bepalen
  50. $bron = imagecreatefromjpeg($album."/".$bestand) or die ("Jpg probleempje");
  51. $b_breedte = imagesx($bron); // Bron breedte
  52. $b_hoogte = imagesy($bron); // bron hoogte
  53.  
  54. //verhouding berekenen
  55. $verhouding = $b_breedte / $max_breedte;
  56.  
  57. //breedte berekenen en afronden
  58. $nieuw_breedte = round($b_breedte / $verhouding);
  59.  
  60. //hoogte berekenen en afronden
  61. $nieuw_hoogte = round($b_hoogte / $verhouding);
  62.  
  63. //kijken of het nodig is om het plaatje te resizen
  64. if ($b_breedte > $max_breedte) {
  65. $nieuw_jpg = imagecreatetruecolor($nieuw_breedte ,$nieuw_hoogte) or die ("Probleem met maken van plaatje jpg");
  66. imagecopyresampled($nieuw_jpg, $bron, 0, 0, 0, 0, $nieuw_breedte, $nieuw_hoogte, $b_breedte, $b_hoogte);
  67. Imagejpeg($nieuw_jpg,$album."/".$bestand,80); //80 is jpg kwaliteit
  68. } // einde resizen
  69.  
  70. //MySQL-tabel updaten
  71. mysql_query("INSERT INTO $album ('".$i."', '".$a."') VALUES ('".$bestand."', '".$besch."')") or die(mysql_error()." on line ".__LINE__);
  72.  
  73. }//einde if 'uploaden'
  74. }//einde while-lus
  75. ?>
  76.  
  77. <input type="submit" name="uploaden" value="Uploaden!"/>
  78. </form>
  79.  
  80. <hr>
  81. <p align="center"><b>©Robin Esselink, <a href="www.treinfoto-online.net">www.treinfoto-online.net</a></b></p>
  82.  
  83. </body>
  84.  
  85. </html>


Wie kan mij helpen?

Grtn Robin

23 antwoorden

Gesponsorde links
Offline Maarten - 02/05/2005 23:38
Avatar van Maarten Erelid Kan een veldnaam wel beginnen met een cijfer? 
Offline TFOL - 02/05/2005 23:54
Avatar van TFOL PHP beginner yep

zie mijn geposte script. I

k ben het nu aan het uitbereiden met MySQL en andere functies dmv MySQL
Offline Thomas - 03/05/2005 00:03
Avatar van Thomas Moderator Nope.

Een kolomnaam (of meer iha, een variabele) kan nooit beginnen met een cijfer.

Het zou nogal vreemd zijn, als je aan de variabele "1" een waarde toe zou kunnen kennen eh ? Die staat namelijk al vast, zeg maar.
Offline TFOL - 03/05/2005 00:25
Avatar van TFOL PHP beginner Die vat ik niet helemaal..

maar een veldnaam kan wel beginnen met cijfer en in mn db worden die velden ook al aangemaakt (met succes) alleen gaat het fout bij het insert'en
Offline Tuinstoel - 03/05/2005 08:26 (laatste wijziging 03/05/2005 08:26)
Avatar van Tuinstoel PHP expert mysql_query("INSERT INTO $album ('".$i."', '".$a."') VALUES ('".$bestand."', '".$besch."')") or die(mysql_error()." on line ".__LINE__); die hè?

Eens backtiks proberen op de query?

  1. <?php
  2. $sQuery = "INSERT INTO `".$album."` (`".$i."`,`".$a."`) VALUES ('".addslashes($bestand)."','".addslashes($besch)."')";
  3. // er zit nu ook addslashes op, misschien dat dat helpt.
  4. if(!@mysql_query($sQuery))
  5. { /* toevoegen is niet gelukt */ }
  6. else
  7. { /* foto is toegevoegd */ }
  8. ?>


btw FangorN, wat heb jij weer 'n idiote avatar 
Offline leendertW - 03/05/2005 09:27
Avatar van leendertW PHP beginner backticks zijn nooit nodig!!
Verder waarom een @ voor mysql_query?
Er moeten nooit @ daarvoor omdat je geen fouten moet onderdrukken!
Offline Gerard - 03/05/2005 09:41
Avatar van Gerard Ouwe rakker
Citaat:
Er moeten nooit @ daarvoor omdat je geen fouten moet onderdrukken!


In dev mode niet nee, maar als een site live is dan wil je nog wel eens zoiets doen... je gebruikers hebben nu eenmaal niks te maken met de queries die er uitgevoerd worden.
Offline Legolas - 03/05/2005 09:54
Avatar van Legolas Onbekend @Proximus:
het is natuurlijk duidelijk dat ie hier bezig is in devmode, want je gaat natuurlijk sowieso geen script aan klanten laten zien dat niet werkt (lijkt mij ), dus lijkt het mij het best om geen '@' te doen. Soms kan het wel zijn, dat hij alleen maar warnings geeft die nergens op slaan, maar dat er niks fout gaat (dit moet je dan altijd GOED controleren). dan kan je idd beter error_reporting(0) zetten of beter bij betreffende code zo'n '@'.
Maar verder, kun je volgens mij beter error_reporting(E_ALL) gebruiken, dan zie je alle bugs (als die er zijn;-) ) in je applicatie
Offline leendertW - 03/05/2005 09:59
Avatar van leendertW PHP beginner Ja want waarom zou je fouten gaan drukken al werkt die NIET in de devmode????
Je hoort gewoon te zorgen dat er geen fouten zijn in de website en werk daarom dus altijd met ERROR_REPORTING(E_ALL).
Offline Legolas - 03/05/2005 10:08
Avatar van Legolas Onbekend @leendertW:
zoals al gezegd, sommige fouten zijn NIET schadelijk voor het script, en zijn warnings. Waarom zou je die eigenlijk niet kunnen onderdrukken? wel met '@' natuurlijk, want de hele pagina op error_reporting(0) zetten vind ik ERG gevaarlijk.
Voorbeeld:
Kreeg bij nieuwssysteem (weet niet meer welke) met txt bestandjes, steeds de melding bij toevoegen (warning: fopen enz.) maar als ik weer op de index keek stond hij er gewoon bij. waarom zou je die error niet onderdrukken???:?:
Offline leendertW - 03/05/2005 10:25
Avatar van leendertW PHP beginner Ja ten eerste zou ik echt proberen om alle fouten er uit te helpen die je ziet wanneer error_reporting(E_ALL) staat.
Wanneer dat echt niet lukt zou ik misschien @ gebruiken maar eerder echt niet!.
Offline Gerard - 03/05/2005 10:35
Avatar van Gerard Ouwe rakker Voorbeeldje dan maar.

Ik heb een bulletin board waarvoor ik ook een IRC Channel heb. Hier zitten verschillende Eggdropjes in welke allemaal een eigen taak hebben. 1 ervan is een announce bot.

Op het moment dat 1 van de members een thread submit dan maakt het board verbinding met de eggdrop om zo door te geven dat er een nieuwe thread is aangemaakt en wat de info ervan is.

Soms wil het nog wel eens voorkomen dat zo'n botje down is omdat mijn eigen box down is of omdat 1 van de shellhosting providers down gaat.

Op zo'n moment is het uiterst handig om een @ voor mijn fsockopen() te gebruiken daar ik niet wil dat de leden weten wat het ip en, belangrijker, de port van de bot is.

Ik maakte dus echter een kleine opmerking/advies. Ik begrijp zelf ook wel dat deze meneer nogsteeds bezig is met Developen. 
Offline TFOL - 03/05/2005 11:05
Avatar van TFOL PHP beginner om maar weer on-topic te gaan:

Ik heb het geprobeert met

  1. <?php
  2. @mysql_query("INSERT INTO $album ('".$i."', '".$a."') VALUES ('".$bestand."', '".$besch."')") or die(mysql_error()." on line ".__LINE__);
  3. ?>


en ik krijg nog steeds dezelfde fout.

:s
Offline Thomas - 03/05/2005 11:13
Avatar van Thomas Moderator Ik zat er naast, het kan wel:
http://dev.mysql.com/doc/mysql/en/legal-names.html
Citaat:
A name may start with any character that is legal in a name. In particular, a name may start with a digit; this differs from many other database systems! However, an unquoted name cannot consist only of digits.


Luister dus naar Tuinstoel, en gebruik backticks (dit is dus wèl nodig in dit geval, LeendertW).
Offline TFOL - 03/05/2005 11:32
Avatar van TFOL PHP beginner dit is nu mijn script:
  1. <html>
  2.  
  3. <head>
  4. <title>Uitgebreid fotoalbumsysteem + uploader met MySQL</title>
  5. </head>
  6.  
  7. <body>
  8.  
  9. <form method="POST" action="" enctype="multipart/form-data">
  10. <?php
  11. //fouten checker
  12.  
  13. //MySQL gegevens includen voor veiligheid
  14. include("connect.php");
  15.  
  16. //variabelen bepalen
  17. $album = $_GET['a'];
  18. $aantal = $_GET['aa'];
  19. $fotograaf = $_GET['f'];
  20. $datum = $_GET['d'];
  21. $max_breedte = 550;
  22.  
  23. //aantal input velden bepalen en weergeven
  24. $i=0;
  25. while($i++ < $aantal)
  26. {
  27. $a = "b_$i";
  28. $f = "f_$i";
  29. echo "<b>Foto $i:</b> <input type=\"file\" name=\"$f\"/>";?><br><?
  30. echo "<b>Beschrijving:</b><br><textarea name=\"$a\" cols=\"40\" rows=\"8\"></textarea>";?><br><br><?
  31.  
  32. if(isset($_POST['uploaden']))
  33. {
  34.  
  35. //rijen in tabel toevoegen
  36.  
  37. mysql_query("ALTER TABLE `treinfoto-online_net_1`.`$album` ADD `$f` VARCHAR(255) NOT NULL");
  38.  
  39. mysql_query("ALTER TABLE `treinfoto-online_net_1`.`$album` ADD `$a` VARCHAR(255) NOT NULL");
  40.  
  41. //geposte variabelen bepalen
  42. $tmp_bestand = $_FILES[$f]['tmp_name'];
  43. $bestand = $_FILES[$f]['name'];
  44. $besch = $_POST[$a];
  45.  
  46. //uploaden + bestand chmodden
  47. move_uploaded_file($tmp_bestand, $album."/".$bestand);
  48. chmod ($album."/".$bestand, 0777);
  49.  
  50. //lengtes bepalen
  51. $bron = imagecreatefromjpeg($album."/".$bestand) or die ("Jpg probleempje");
  52. $b_breedte = imagesx($bron); // Bron breedte
  53. $b_hoogte = imagesy($bron); // bron hoogte
  54.  
  55. //verhouding berekenen
  56. $verhouding = $b_breedte / $max_breedte;
  57.  
  58. //breedte berekenen en afronden
  59. $nieuw_breedte = round($b_breedte / $verhouding);
  60.  
  61. //hoogte berekenen en afronden
  62. $nieuw_hoogte = round($b_hoogte / $verhouding);
  63.  
  64. //kijken of het nodig is om het plaatje te resizen
  65. if ($b_breedte > $max_breedte) {
  66. $nieuw_jpg = imagecreatetruecolor($nieuw_breedte ,$nieuw_hoogte) or die ("Probleem met maken van plaatje jpg");
  67. imagecopyresampled($nieuw_jpg, $bron, 0, 0, 0, 0, $nieuw_breedte, $nieuw_hoogte, $b_breedte, $b_hoogte);
  68. Imagejpeg($nieuw_jpg,$album."/".$bestand,80); //80 is jpg kwaliteit
  69. } // einde resizen
  70.  
  71. //MySQL-tabel updaten
  72. $sQuery = "INSERT INTO `".$album."` (`".$i."`,`".$a."`) VALUES ('".addslashes($bestand)."','".addslashes($besch)."')";
  73. if(!mysql_query($sQuery))
  74. { echo "Toevoegen is mislukt, probeer het nog eens"; }
  75. else
  76. { echo "Uw foto is met succes toegevoegd!"; }
  77.  
  78. }//einde if 'uploaden'
  79. }//einde while-lus
  80. ?>
  81.  
  82. <input type="submit" name="uploaden" value="Uploaden!"/>
  83. </form>
  84.  
  85. <hr>
  86. <p align="center"><b>©Robin Esselink, <a href="www.treinfoto-online.net">www.treinfoto-online.net</a></b></p>
  87.  
  88. </body>
  89.  
  90. </html>


en hij werkt nog steeds niet. ik krijg de melding dat het toevoegen was mislukt (zoals in het script staat)

Grtn Robin
Offline Thomas - 03/05/2005 11:42
Avatar van Thomas Moderator - echo je query eens ?
- het lijkt mij niet de bedoeling dat je bij elke foto die je toevoegt de structuur van je database wijzigt ?!
Offline Gerard - 03/05/2005 11:46 (laatste wijziging 03/05/2005 11:48)
Avatar van Gerard Ouwe rakker
Citaat:
- het lijkt mij niet de bedoeling dat je bij elke foto die je toevoegt de structuur van je database wijzigt ?!


Dat is inderdaad een hele goede. Misschien dat je een aparte tabel kan gebruiken om alle foto's in te zetten die je dan linkt aan deze tabel.
Offline TFOL - 03/05/2005 12:02
Avatar van TFOL PHP beginner Het werkt inmiddels, ik heb INSERT INTO veranderd in UPDATE SET

ff een uitleg. Het is de bedoeling dat elke album een tabel krijgt, met daarin:

-Fotograaf
-Datum
-Foto's
-Beschrijving van Foto's

of heeft iemand een ander idee hoe ik dit beter kan doen?

Grtn Robin
Offline Legolas - 03/05/2005 12:07
Avatar van Legolas Onbekend kep ene idee: een album tabel, met:
id, soort, naam, beschrijving
ene foto's tabel, met:
id, album, beschrijving, datum, fotograaf, fotonaam, src.
zoiets?
is beter, want als je dan op een gegeven moment 100 foto's hebt, heb je 100 tabellen:o :o :o 
Offline leendertW - 03/05/2005 12:10
Avatar van leendertW PHP beginner @Fangorn:

Weer wat geleerd:D.
Ik wist niet dat dat moest in sommige gevallen.
Offline Duikboot - 03/05/2005 12:42 (laatste wijziging 03/05/2005 12:44)
Avatar van Duikboot Grafische gevorderde Waarom nu weer voor ieder album een andere tabel. Maak gewoon 1 tabel met alle info over de albums (id, titels, aantal foto's, beschrijvingen etc.) en maak in de foto's tabel even een kolommetje aan met albumid, scheelt wel, en word je database ook niet zo ontiegelijk lang van...

Je hebt m'n UPDATE raad toch opgevolgd, handig he zown telefoon  En ik heb geen regel van het script gezien en toch wist ik het. Je hebt dus veel loze antwoorden gekregen of niet  (no offence hoor )

EDIT: Legolas was me voor, die elfen he...:cool:
Offline Gerard - 03/05/2005 12:56
Avatar van Gerard Ouwe rakker
Citaat:
Je hebt dus veel loze antwoorden gekregen of niet (no offence hoor )


Jij noemt iemand anders adviseren te werken met het aanpassen van een tabel om een nieuw album in te voegen en dan te werken met update geen loos antwoord?

FangorN heeft helemaal gelijk. Eerst beiden dan maar de essentie van een database leren?
Offline Duikboot - 03/05/2005 13:21
Avatar van Duikboot Grafische gevorderde Sorry, kon het even niet laten  . Ik moet ook nog veel leren, maar dat gaat wel lukken 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.267s