Na de geweldige hulp gisteren van Arjan (zie: Deel 1) heb ik nu dus de tickets in de database. Ik heb vandaag een "valid" record toegevoegd aan de table met default set to 1. Daarmee zijn alle tickets valid.

Nu zit ik te zoeken hoe ik een valid ticket uit de database kan halen en vervolgens het valid record op 0 kan zetten voor dat ticket waardoor het de volgende keer niet meer uitgegeven zal worden.

Hoe doe je dat?
Gerard schreef op 09.01.2009 20:57
Fout

SQL-query:

Echo $query

MySQL retourneerde: Documentatie
#1064 - 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 'Echo $query' at line 1


:(

Je hebt die 'echo $query' wel heel letterlijk opgevat.
Eerst echo doen en dan hetgeen je te zien krijgt moet je hebben.
Sorry hoor maar ik begrijp er helemaal niks van.
waar moet ik echo doen?
Als ik in phpmyadmin ga selecteer ik de database en vervolgens op de vouchers table.

Als ik dan op SQL druk en daarin echo tik krijg ik:
Fout

SQL-query:

echo

MySQL retourneerde: Documentatie
#1064 - 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 'echo' at line 1

Ik zie ook nergens een knop echo staan.
Je moet net doen alsof je het je oma van 83 moet uitleggen want die weet er vast nog meer vanaf dan ik vrees ik ;)
Je pakt het nog steeds te letterlijk op. 'echo' is een PHP functie. Daarmee kun je een string in een browser weergeven. Je moet dus echo $query in je script zetten, dan dat script uitvoeren in je browser en wat je dan krijgt te zien moet je uitvoeren in PHPMyAdmin.
Oow oke jakkes
Ik dacht dat je 'echo $query' ook in phpmyadmin kon uitvoeren.

Ik heb nu dan echo $query in een php script gedaan en de uitkomst daarvan in phpmyadmin / SQL gedropt.

dan spuugt ie het volgende uit:
MySQL gaf een lege resultaat set terug (0 rijen). (Query duurde 0.0005 sec)
SQL-query: SELECT id, tickets
FROM vouchers
WHERE 'valid' =1
LIMIT 0 , 30

Leeg resultaat betekend neem ik aan dat iets niet goed is?
Er staan thans wel tickets in.
Deels valid en deels niet valid.
die niet valid zijn heb ik handmatig op 0 gezet omdat ik deze tickets al eens eerder handmatig heb uitgegegeven.

Hij zou dan lijkt mij het eerst volgende valid ticket moeten laten zien toch?
Er zijn blijkbaar geen records gevonden die voldoen.

Edit: Is 'valid' een veldnaam? Zo ja, dan moeten de quotjes weg.
die quotes rond valid horen daar niet.

SELECT id, tickets
FROM vouchers
WHERE valid =1
LIMIT 1

^^ gooi dat eens in PHPMyAdmin
Nee oke maar aangezien er wel tickets in staan moet dus iets mis zijn met "SELECT id, tickets FROM vouchers WHERE 'valid' = 1" dat is nu juist mijn probleem wat daar mis aan is?

Ik probeer te achterhalen hoe je precies zo'n select moet formuleren.
Het is lastig precies een antwoord te vinden uit de vele resultaten in google brrrr
Zie mijn edit en Arjan's post voor de oplossing.
Ik had mijn vorige bericht zowat gelijk met jullie geschreven vandaar.
Ik heb nu gedaan wat jullie zeiden dat leverde inderdaad een ticket code uit de database op dat is mooi pfew zucht zweet haha

Ik heb het script ook aangepast wat nog niet meteen een ticket opleverde.
Ik heb in de regel echo $row['ticket']; een S aan ticket toegevoegd toen leverde dat een ticket op. dus dat is in principe goed alleen word het valid veld niet veranderd naar 0
waardoor er steeds hetzelfde ticket word getoont.

Misschien dat het iets met mijn verandering van ticket in tickets te maken heeft?

Zo ziet het script er nu uit

<?php
require('connect.php');

$query  = "SELECT id, tickets FROM vouchers WHERE valid =1 LIMIT 1";
$result = mysql_query($query);

if($result && mysql_num_rows($result) == 1)
{
    //Gelukt!
    
    $row = mysql_fetch_array($result);
    
    echo $row['tickets'];

    $query  = "UPDATE vouchers SET 'valid' = 0 WHERE id = '".$row['id']."'";
    $result = mysql_query($query);
    
    if($result && mysql_affected_rows($result) == 1)
    {
        //Gelukt!
    }
}

#--
else
{
echo "Milsukt";
}
#--

mysql_close($con);

?>

Set 'valid' blabla moet dan ook zonder quotes..

Reageren