login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Mysql met variabele start LIMIT

Offline peerke59 - 15/05/2011 12:52
Avatar van peerke59MySQL interesse Hoe los ik het volgende op, heb al even zitten zoeken op internet maar kan het niet vinden.

Met de volgende code selecteer een record uit de database:
  1. <?php
  2. $query = "SELECT naam, emailadres FROM databasenaam";
  3. //query is aangemaakt
  4. $sql = mysql_query($query) or die ( mysql_error( ) );
  5. //query is uitgevoerd
  6. echo 'selecteer naam ontvanger: ' . '<select name="to">';
  7. while($record = mysql_fetch_assoc($sql)){
  8. echo '<option value="'.$record['emailadres'].'">'.$record['naam'].'</option>';
  9.  
  10. }
  11. echo '</select>';
  12.  
  13. ?>


Stel dat ik na de selectie de eerst volgende 5 records een mail wil sturen.
Wat ik gevonden heb is de volgende regel.

  1. $query = "SELECT naam, emailadres FROM databasenaam LIMIT 0, 5"; // limit eerste record, aantal daarna
  2. $result = MYSQL_QUERY($query);

Deze code selecteert de eerste 5 records vanaf plaats 0.
Alleen plaats 0 zou dus ook een variabele moeten worden, eentje die ik zelf kan kiezen.

Een omslachtige oplossing zou zijn dat ik steeds LIMIT 0, 5 ga zitten veranderen, upload en verwerk.
Maar dat is nou net niet de bedoeling.
Hoe maak ik nou die selectie door gewoon de eerste record te kiezen?

39 antwoorden

Gesponsorde links
Offline vinTage - 15/05/2011 13:17
Avatar van vinTage Nieuw lid
  1. $query = "SELECT naam, emailadres FROM databasenaam LIMIT ".$variable.", 5";
Offline peerke59 - 15/05/2011 13:26 (laatste wijziging 15/05/2011 15:35)
Avatar van peerke59 MySQL interesse Laat dit alle records wel zien waarna er de 5 records vanaf de gekozene in $query gezet worden?
Sta er van de kijken dat het kan.
Moet $variable niet eerst gedefinieerd worden of gebeurd dat nou juist met de keuze die je maakt?

Ik ga het gelijk eerst uitproberen.

AANVULLING:

waar maak ik nu de fout?
  1. $query = "SELECT emailadres FROM databasenaam LIMIT ".$variable.", 5"; // Limit eerste record, aantal daarna
  2. //query is aangemaakt
  3. $sql = mysql_query($query) or die ( mysql_error( ) );
  4. //query is uitgevoerd
  5. echo 'selecteer naam ontvanger: ' . '<select name="to">';
  6. while($record = mysql_fetch_assoc($sql)){
  7. echo '<option value="'.$record['emailadres'].'">'.$record['naam'].'</option>';
  8. }
  9. echo '</select>';
  10. while ($to = mysql_fetch_array ($result)) {
  11. $mail->AltBody = "Deze e-mail is in HTML opgesteld!"; // optional, comment out and test
  12. $mail->MsgHTML($body);
  13. $mail->AddAddress($to["emailadres"]);
Offline vinTage - 15/05/2011 14:38 (laatste wijziging 15/05/2011 14:39)
Avatar van vinTage Nieuw lid zet je error reprting aan dan zie je vanzelf de fouten....je selecteerd sowieso de naam niet mee en declareert nergens de variable..
en waarom copier je niet mijn regel...die is toch een pak mooier dan die jouwe 
Offline peerke59 - 15/05/2011 15:39 (laatste wijziging 15/05/2011 15:42)
Avatar van peerke59 MySQL interesse Regel is nu gecopieerd, en ik krijg een fout melding die ik niet snap:


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 ' 5' at line 1

Het keuzeveld is al helemaal niet te zien.
Offline Aar - 15/05/2011 17:13 (laatste wijziging 15/05/2011 17:20)
Avatar van Aar PHP interesse Waar komt $variable vandaan?

En zet je error_reporting() aan.
Offline peerke59 - 15/05/2011 17:31 (laatste wijziging 19/05/2011 08:24)
Avatar van peerke59 MySQL interesse $variable komt van vinTage, kan er ook niks aan doen als ik maar halve voorbeelden krijg.

error-reporting staat er in alleen niet in dit lijstje omdat ik er anders teveel gevoelige details van moet gaan maskeren.
was even vergeten die // er voor weg te halen.

de complete error report:

Deprecated: Function eregi_replace() is deprecated on line 19
Notice: Undefined variable: variable on line 36 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 ' 5' at line 1

vond het al vanaf het begin vreemd dat ik eerst meteen na LIMIT een variabele kon plaatsen, die moet toch ook eerst ergens vandaan komen.
Verder zie ik de link niet hoe die verder te gebruiken.
Offline Aar - 15/05/2011 17:38 (laatste wijziging 15/05/2011 17:39)
Avatar van Aar PHP interesse Maar $variabele moet wel een waarde hebben.... Basiskennis PHP.

DAT zegt die melding: Notice: Undefined variable: variable

Die andere melding over die decprcated function is al in je andere topic behandeld door preg_match() te gebruiken. 
Offline peerke59 - 15/05/2011 17:39
Avatar van peerke59 MySQL interesse Dus voordat ik bij het aanspreken van de database kom moet er eerst staan $variable="0";
Offline Aar - 15/05/2011 17:44
Avatar van Aar PHP interesse Ja, maar omdat het een getal is hoort deze niet tussen quotes ;).
Offline peerke59 - 15/05/2011 17:50 (laatste wijziging 15/05/2011 17:53)
Avatar van peerke59 MySQL interesse kreeg al een fout melding, trouwens de regel
  1. $body = preg_match("/[\]/",'',$body);
geeft ook een foutmelding

en hier gaat iets fout
  1. while ($query = mysql_fetch_array ($result)) {
Offline Aar - 15/05/2011 17:54 (laatste wijziging 15/05/2011 17:56)
Avatar van Aar PHP interesse ...ja?

En dan mis ik toch wat belangrijke gegevens aangezien je het over 'een foutmelding' hebt? Verder vind ik de variable $query vrij slordig gekozen gezien je een record-set doorloopt.

Ik zie beter iets van $item kiezen. Waarin je in je while() $item['VELDNAAM_HIER'] kan gebruiken.
Offline peerke59 - 15/05/2011 18:03 (laatste wijziging 15/05/2011 18:06)
Avatar van peerke59 MySQL interesse Zoals je wellicht begrijpt zit ik die vorige listing om te turnen.
Daar gaan we weer:

  1. <html>
  2. <head>
  3. <title>TEST</title>
  4. </head>
  5. <body>
  6. <?php
  7.  
  8. date_default_timezone_set('Europe/Amsterdam');
  9.  
  10. require_once('class.phpmailer.php');
  11. //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
  12.  
  13. $mail = new PHPMailer();
  14.  
  15. $body = file_get_contents('Aanpassingen.htm');
  16. $body = preg_match("/[\]/",'',$body);
  17.  
  18. $mail->IsSMTP(); // telling the class to use SMTP
  19. $mail->SMTPAuth = true; // authentication enabled
  20. $mail->SMTPDebug = 2; // enables SMTP debug information (for testing)
  21. $mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for Gmail
  22. $mail->Host = 'werkt';
  23. $mail->Port = 25;
  24. $mail->Username = 'inlognaam';
  25. $mail->Password = 'wachtwoord';
  26. $mail->SetFrom('email1', 'naam1');
  27. $mail->AddReplyTo('email2', 'naam2');
  28.  
  29. $mail->Subject = "Bericht van de website www.websitenaam.nl";
  30.  
  31. $variable = 0;
  32.  
  33. MYSQL_CONNECT("servernaam","inlognaam","wachtwoord");
  34. mysql_select_db("databasenaam");
  35. $query = "SELECT emailadres FROM testmailen LIMIT ".$variable.", 5"; // limit eerste record, aantal daarna
  36.  
  37. //query is aangemaakt
  38. $sql = mysql_query($query) or die ( mysql_error( ) );
  39. //query is uitgevoerd
  40. echo 'selecteer naam ontvanger: ' . '<select name="to">';
  41. while($record = mysql_fetch_assoc($sql)){
  42. echo '<option value="'.$record['emailadres'].'">'.$record['naam'].'</option>';
  43. }
  44. echo '</select>';
  45. while ($row = mysql_fetch_array ($result)) {
  46. $mail->AltBody = "Deze e-mail is in HTML opgesteld!"; // optional, comment out and test
  47. $mail->MsgHTML($body);
  48. $mail->AddAddress($query["emailadres"]);
  49. if(!$mail->Send()) {
  50. echo "Mailer Error (" . str_replace("@", "&#64;", $row["emailadres"]) . ') ' . $mail->ErrorInfo . '<br />';
  51. } else {
  52. echo "Bericht verzonden naar :" . $row["emailadres"] . ' (' . str_replace("@", "&#64;", $row["emailadres"]) . ')<br />';
  53. }
  54. // Clear all addresses and attachments for next loop
  55. $mail->ClearAddresses();
  56.  
  57. }
  58. ?>
  59. </body>
  60. </html>


de vernieuwde listing, tja schiet er soms weer een ander idee te voorschijn.

ik krijg nu wel de tekst "Selecteer de ontvanger" met daar naast een leeg selectie vakje met lege mogelijkheden, 5 in totaal.
Offline Aar - 15/05/2011 18:05 (laatste wijziging 15/05/2011 18:09)
Avatar van Aar PHP interesse Is het dus opgelost? je had het net over een foutmelding, maar je vertelt niet welke melding dat was?

$record['naam']

Je haalt in je query nergens 'naam' op. Dus logisch dat deze leeg is.
Offline peerke59 - 15/05/2011 18:10 (laatste wijziging 19/05/2011 08:20)
Avatar van peerke59 MySQL interesse Ik krijg op het scherm:

Warning: preg_match(): Compilation failed: missing terminating ] for character class at offset 3 on line 17
Notice: Undefined index: naam on line 43
Notice: Undefined index: naam on line 43
Notice: Undefined index: naam on line 43
Notice: Undefined index: naam on line 43
Notice: Undefined variable: result on line 46
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given on line 46
Offline Aar - 15/05/2011 18:15
Avatar van Aar PHP interesse
  1. $body = preg_match("/[\]\/",'',$body);


En de Undefined indexés, komt doordat je het veld 'naam' in je query niet ophaalt.
En $result komt ook uit het niets vallen.

Is het niet gewoon verstandiger om een tutorial php en mysql te doen alvorens je verder gaat? ZIJn allemaal beginnerfouten...
Offline peerke59 - 15/05/2011 19:09 (laatste wijziging 15/05/2011 19:20)
Avatar van peerke59 MySQL interesse Tja ik heb nog steeds geen goed boek gevonden om het zelf te leren.
Heb al meer verteld dat het allemaal boeken zijn om een webwinkel te bouwen en daar heb ik niks aan.
Dus doe een goede suggestie zou ik dan zeggen.
moet er natuiurlijk wel eentje zijn met veel goede voorbeelden.

Terug naar het probleem, zie nog een foutje, ben aan het uitproberen op een database met enkel alleen emailadressen.
Maar dat ga ik eerst aanpassen.

aanvulling:
testmailen is aangepast, even de variabele 'naam' er weer tussen zetten.
Offline Aar - 15/05/2011 19:11
Avatar van Aar PHP interesse Gelukkig hebben we ook nog www.phptuts.nl ..
Offline peerke59 - 15/05/2011 19:28 (laatste wijziging 19/05/2011 08:22)
Avatar van peerke59 MySQL interesse
Aar schreef:
Gelukkig hebben we ook nog www.phptuts.nl ..

Heb niet het idee dat daar mijn vraag al volledig beantwoord staat.

Buiten dat, zit ik nog steeds met dezelfde meldingen als een paar posts eerder.
Zij het nu dat ik in het selecteer veld niet alle namen zie maar slechts de eerste 5 van de 16 uit de database.
Ik zou ze dus graag allemaal willen zien en vanaf de naam die ik dan selecteer moet de mail naar de eerste 5 personen.

Rest mij de meldingen nog te weergeven:

Warning: preg_match(): No ending delimiter '/' found on line 17
Notice: Undefined variable: result on line 46
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given on line 46

Alleen de meldingen uit regel 43 zijn opgelost nu
Offline Aar - 15/05/2011 19:41 (laatste wijziging 15/05/2011 19:46)
Avatar van Aar PHP interesse
Citaat:
Heb niet het idee dat daar mijn vraag al volledig beantwoord staat.

Je weet wat een tutorial inhoudt?   


Notice: Undefined variable: result in D:\www\websitenaam.nl\www\testmail\test2_db_smtp_basic.php on line 46

$result komt nergens vandaan....

Preg_match
  1. $body = preg_match("/[\]/",'',$body);


Verder heb je een leuke <option> veld, maar wat wil je daarmee, ik zie geen formulier, geen afhandeling, geen knop?
Offline peerke59 - 15/05/2011 19:47 (laatste wijziging 15/05/2011 20:07)
Avatar van peerke59 MySQL interesse Klopt, heb $result al zitten veranderen in:
  1. while ($row = mysql_fetch_array ($query)) {

Scheelt weer een stuk in de foutmelding, maar nog steeds een melding:

Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in D:\www\websitenaam.nl\www\testmail\test2_db_smtp_basic.php on line 46

Met regel 17 weet onderrtussen dat de fout melding verdwijnt met:
  1. $body = preg_match("/\[\]\//",'',$body);

Tjonge tjonge 20 jaar geleden zat ik nog wel geheel zelfstanding in dbase3 te werken.

de afhandeling komt later, eerst die fouten er uit en een selectievak met alle namen
Offline Aar - 15/05/2011 20:04
Avatar van Aar PHP interesse Gebruik eens $sql (of gebruik logische variabelenamen, want je query is feitelijk een result dus $result zou logischer zijn, een sql-opdracht zou dan een $sql zijn...)

Aan een selectievak met namen heb je nu nog niks, want ik zie geen enkele formulierafhandeling, of zelfs een <form> tag die een formulier in je code kenmerkt. Wat wil je dan bereiken met die <option>?

Echt dit zijn best wel beginnersfouten. Is het echt niet raadzamer om eens die Beginnertutorial door te lezen op http://www.phptuts.nl voordat je hiermee verder gaat?

Wat je nu infeite doet om als voorbeeld te noemen: is een slipcursus te nemen terwijl je nog niet auto kan rijden.
Offline peerke59 - 15/05/2011 20:09 (laatste wijziging 15/05/2011 20:11)
Avatar van peerke59 MySQL interesse Ik ga later wel verder, moet er morgen om 4 uur weer uit.
Heb je al gezien dat ik de foutmelding op regel 17 er uit heb?

Ik ga eerst aan de rest werken, kom daar later wel op terug.

Citaat:
Gebruik eens $sql (of gebruik logische variabelenamen, want je query is feitelijk een result dus $result zou logischer zijn, een sql-opdracht zou dan een $sql zijn...)
zou handig zijn als er regelnummers genoemd werden, zie ik de fouten sneller. 
Offline Aar - 15/05/2011 20:13
Avatar van Aar PHP interesse Dat ging dus om regel 46...
Offline peerke59 - 15/05/2011 20:20
Avatar van peerke59 MySQL interesse regel 46 foutelding weg met:
  1. while ($row = mysql_fetch_array ($sql)) {


zitten we voorlopig nog met het selectieveld
er staan maar 5 namen i.pv. 16
bedoeling is dat ik bijv. naam 3 selecteer en dat straks naar naam 3 t/m 7 een e-mail gaat.
snap je?
zo'n uitleg vind ik niet terug op internet, waar ik ook zoek.
Offline Aar - 15/05/2011 20:27 (laatste wijziging 15/05/2011 20:27)
Avatar van Aar PHP interesse
Citaat:
zitten we voorlopig nog met het selectieveld
er staan maar 5 namen i.pv. 16

Limit?


Wat dacht je van die tutorial? Als je dan van begin tot eind volgt weet je precies hoe je een formulier moet maken. Met wat je nu hebt doet die selectiebox echt helemaal niks... (ja, voor decoratie dienen)....
Offline peerke59 - 15/05/2011 20:49 (laatste wijziging 15/05/2011 20:53)
Avatar van peerke59 MySQL interesse Klopt dat die box nog niks mag doen, die afhandeling en omlijsting is het probleem niet.

Voor zover ik het uit die tutorial begreep zou ik dus LIMIT moeten gebruiken.
Zoals ik al in het begin beschreef kon ik dat niet helemaal snappen.
Eerst een limit geven voor een selectie die nog gemaakt moest worden.
Wat ik verder terug vind is dit:
a] of je kiest een record
b] of je kiest de gehele database
c] of je kiest gelijke waardes [dan zou ik nog een veld aan elke record moeten hangen met elke 5 personen dezelfde waarde in dat veld, gaat de listing er weer heel anders uit zien]

haal alle personen uit database met waarde x uit veld c
sla ze op in een array
verzend een e-mail naar de personen uit die array

joh ik kan het wel omschrijven als ik eigenlijk allang op bed had moeten liggen

ik ga er later maar eens over nadenken.

Trouwens nog een goede tip voor een papieren tutorial?
Offline Aar - 15/05/2011 20:58
Avatar van Aar PHP interesse Je kan ze ook afdrukken..
En verder snap ik niet wat het nut van die selectiebox is zonder dat er een formulier aan hangt....
Offline peerke59 - 15/05/2011 21:20 (laatste wijziging 15/05/2011 21:20)
Avatar van peerke59 MySQL interesse Zoals ik al zei: dat formulier komt later, is het probleem niet.
het gaat voornamelijk om de selectie

bedenk nu dat ik dit eigenlijk anders moet maken:
  1. $variable = 0;

die waarde 0 moet eerst al variable worden door een gekozen nummer
dan kan ik een groep met dezelfde waarde in veld c in een array plaatsen
en dan die array-groep een e-mail sturen

daar moet ik me volgens mijzelf verder op gaan focussen.
Offline Aar - 15/05/2011 21:29
Avatar van Aar PHP interesse Je zegt dat het gaat om de selectie. Maar een formulier is er wel onderdeel van. Did you know?
Offline vinTage - 15/05/2011 21:59
Avatar van vinTage Nieuw lid
peerke59 schreef:
$variable komt van vinTage, kan er ook niks aan doen als ik maar halve voorbeelden krijg.

error-reporting staat er in alleen niet in dit lijstje omdat ik er anders teveel gevoelige details van moet gaan maskeren.


yu gozert, lees een keer de topic titel en lees je eigen vraag nog eens!
jij wilde een variable start positie om te selecteren, en ik gaf je die (exact wat je vroeg!)
Als jij niet eens weet HOE je een variable moet setten, waarom vraag je dan om 'iets' waarbij je dat moet doen, maar niet HOE je dat moet doen?


Die error reporting en gevoelige informatie hier posten ?
Je kan toch gewoon de foutwaardes deleten uit het resultaat...of verwacht je weer dat we hier met theeblaadjes de fouten kunnen opsporen?


Deze post is een beetje bot, maar dat komt omdat ik Aar al in 2 posts heb zien helpen van a-z, nu heb ik je ook ietwat geholpen en wederom doe je geen kloot zelf behalve miepen dat iets niet lukt/niet werkt/foutmeldingen (die gevoelig blabla...)

Ik kan jou maar een nuttige reactie meer geven => tutorials.

Je gaat jezelf nu beter vinden en hebt geen tutorial nodig als het met copy/pasten ook lukt.., maar wacht tot je een 'lieverd' op je site hebt die bijv de url of broncode gaat misbruiken, dan is het bye bye database en hebben wij het gevreten 

Wat jij wilt is op dit moment nog iets te hoog voor je huidige kennis, dus huur een devver, of blijf schooien om hapklare code, of frots iets in elkaar met bagger code (met alle risico's van dien).
IIG ben ik de banaan omdat jij zei:
peerke59 schreef:
$variable komt van vinTage, kan er ook niks aan doen als ik maar halve voorbeelden krijg.

maar jij zelf geen slurf verstand hebt van php.

long story short => beginnen bij het begin!
Bedankt door: WimJ, fluaju
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.342s