hulp bij omzetting php naar php7

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Wouter VandenBerghe

Wouter VandenBerghe

03/01/2020 13:50:10
Quote Anchor link
Kan er iemand helpen om deze code te helpen omzetten naar een php7 versie?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
{     
// connection to DB
    $hostname = "localhost" ; // Name mysql server
    $mysqluser = "user" ; // login
    $mysqlpswd = "password" ; // password  
    $database = "dbname" ; // database name

    $diemessage="Kan geen verbinding maken" ; // Error Message  

    @mysql_connect($hostname, $mysqluser, $mysqlpswd) OR $diemessage;
    @
mysql_selectdb($database) OR $diemessage;
    
    //--------- throw query to get the records ------------

    $req = $sql = "SELECT inschrijvingen2019.startnummer, inschrijvingen2019.voornaam, inschrijvingen2019.naam, inschrijvingen2019.gemeente,
inschrijvingen2019.uitslag_rush_ti1, inschrijvingen2019.uitslag_rush_ti2, inschrijvingen2019.punten_rush_ti1, inschrijvingen2019.punten_rush_ti2,
inschrijvingen2019.uitslag_rush_mo1, inschrijvingen2019.uitslag_rush_mo2, inschrijvingen2019.punten_rush_mo1, inschrijvingen2019.punten_rush_mo2,
inschrijvingen2019.uitslag_rush_el1, inschrijvingen2019.uitslag_rush_el2, inschrijvingen2019.punten_rush_el1, inschrijvingen2019.punten_rush_el2,
inschrijvingen2019.uitslag_rush_do1, inschrijvingen2019.uitslag_rush_do2, inschrijvingen2019.punten_rush_do1, inschrijvingen2019.punten_rush_do2,
inschrijvingen2019.uitslag_rush_wi1, inschrijvingen2019.uitslag_rush_wi2, inschrijvingen2019.punten_rush_wi1, inschrijvingen2019.punten_rush_wi2,
inschrijvingen2019.uitslag_rush_da1, inschrijvingen2019.uitslag_rush_da2, inschrijvingen2019.punten_rush_da1, inschrijvingen2019.punten_rush_da2,
inschrijvingen2019.uitslag_rush_li1, inschrijvingen2019.uitslag_rush_li2, inschrijvingen2019.punten_rush_li1, inschrijvingen2019.punten_rush_li2,
inschrijvingen2019.uitslag_rush_wo1, inschrijvingen2019.uitslag_rush_wo2, inschrijvingen2019.punten_rush_wo1, inschrijvingen2019.punten_rush_wo2,
inschrijvingen2019.tot_pnt_rush_ti, inschrijvingen2019.tot_pnt_rush_mo, inschrijvingen2019.tot_pnt_rush_el, inschrijvingen2019.tot_pnt_rush_do, inschrijvingen2019.tot_pnt_rush_wi, inschrijvingen2019.tot_pnt_rush_da, inschrijvingen2019.tot_pnt_rush_li, inschrijvingen2019.tot_pnt_rush_wo, inschrijvingen2019.tot_pnten_rush\n"

     . "FROM inschrijvingen2019\n"
     . "WHERE (((inschrijvingen2019.startnummer)>200) AND ((inschrijvingen2019.betaald_tielt)=True)) OR
(((inschrijvingen2019.startnummer)>200) AND ((inschrijvingen2019.betaald_moorsele)=True)) OR
(((inschrijvingen2019.startnummer)>200) AND ((inschrijvingen2019.betaald_elverdinge)=True)) OR
(((inschrijvingen2019.startnummer)>200) AND ((inschrijvingen2019.betaald_doomkerke)=True)) OR
(((inschrijvingen2019.startnummer)>200) AND ((inschrijvingen2019.betaald_wijtschate)=True)) OR
(((inschrijvingen2019.startnummer)>200) AND ((inschrijvingen2019.betaald_dadizele)=True)) OR
(((inschrijvingen2019.startnummer)>200) AND ((inschrijvingen2019.betaald_lichtervelde)=True)) OR
(((inschrijvingen2019.startnummer)>200) AND ((inschrijvingen2019.betaald_woumen)=True))\n"

     . "ORDER BY inschrijvingen2019.tot_pnten_rush DESC";
    
    $result = mysql_query($req);
    $total = mysql_num_rows($result);

    for ($j=0; $j < $total; $j++)
    {

     $row = mysql_fetch_array( $result ); // get a record
     echo "<TR><TD>".stripslashes($row['startnummer'])."</TD>
         <TD>"
.stripslashes($row['voornaam'])."</TD>
         <TD>"
.stripslashes($row['naam'])."</TD>
         <TD>"
.stripslashes($row['gemeente'])."</TD>
         <TD>"
.stripslashes($row['uitslag_rush_do1'])."</TD>
         <TD>"
.stripslashes($row['uitslag_rush_do2'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_do1'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_do2'])."</TD>
         <TD><strong>"
.stripslashes($row['tot_pnt_rush_do'])."</strong></TD>
         <TD>"
.stripslashes($row['uitslag_rush_ti1'])."</TD>
         <TD>"
.stripslashes($row['uitslag_rush_ti2'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_ti1'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_ti2'])."</TD>
         <TD><strong>"
.stripslashes($row['tot_pnt_rush_ti'])."</strong></TD>
         <TD>"
.stripslashes($row['uitslag_rush_mo1'])."</TD>
         <TD>"
.stripslashes($row['uitslag_rush_mo2'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_mo1'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_mo2'])."</TD>
         <TD><strong>"
.stripslashes($row['tot_pnt_rush_mo'])."</strong></TD>
         <TD>"
.stripslashes($row['uitslag_rush_el1'])."</TD>
         <TD>"
.stripslashes($row['uitslag_rush_el2'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_el1'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_el2'])."</TD>
         <TD><strong>"
.stripslashes($row['tot_pnt_rush_el'])."</strong></TD>

         <TD>"
.stripslashes($row['uitslag_rush_wi1'])."</TD>
         <TD>"
.stripslashes($row['uitslag_rush_wi2'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_wi1'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_wi2'])."</TD>
         <TD><strong>"
.stripslashes($row['tot_pnt_rush_wi'])."</strong></TD>
         <TD>"
.stripslashes($row['uitslag_rush_da1'])."</TD>
         <TD>"
.stripslashes($row['uitslag_rush_da2'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_da1'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_da2'])."</TD>
         <TD><strong>"
.stripslashes($row['tot_pnt_rush_da'])."</strong></TD>
         <TD>"
.stripslashes($row['uitslag_rush_li1'])."</TD>
         <TD>"
.stripslashes($row['uitslag_rush_li2'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_li1'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_li2'])."</TD>
         <TD><strong>"
.stripslashes($row['tot_pnt_rush_li'])."</strong></TD>
         <TD>"
.stripslashes($row['uitslag_rush_wo1'])."</TD>
         <TD>"
.stripslashes($row['uitslag_rush_wo2'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_wo1'])."</TD>
         <TD>"
.stripslashes($row['punten_rush_wo2'])."</TD>
         <TD><strong>"
.stripslashes($row['tot_pnt_rush_wo'])."</strong></TD>
         <TD><strong>"
.stripslashes($row['tot_pnten_rush'])."</strong></TD></TR>\n";  
    }
}



?>
 
PHP hulp

PHP hulp

28/02/2020 19:49:14
 
Adoptive Solution

Adoptive Solution

03/01/2020 14:02:18
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/01/2020 18:23:49
Quote Anchor link
Beetje uitleg kan ook geen kwaad :-)

De mysql_ functies zijn verouderd en vanaf PHP 7 ook niet meer beschikbaar. Het makkelijkste is om deze over te zetten naar de nieuwe mysqli_ functies* (met een i dus) omdat deze het meeste lijken op de mysql_ functies. Als je tenminste naar de procedural voorbeelden kijkt. Toch zijn er een aantal wijzigingen. Zo kun je regel 11 en 12 samenvoegen tot één regel met een mysqli_connect functie. Let er tevens op dat je voor mysqli_connect() en mysqli_query() netjes controleert of die functies geen foutmeldingen opleveren.

Bij regel 37 moet je een extra variabele meegeven die je teruggekregen hebt van die mysql_connect functie.
De functies stripslashes() moet je vervangen voor mysqli_real_escape_string() functies.
Die apenstaartjes moet je ook weghalen en weglaten. Beter is het om in de testfase alle foutmeldingen te laten zien en in de productie fase zet je alle php errors gewoon uit. Je kunt dit op een aantal manieren instellen zoals in php.ini maar ook gewoon met twee regels aan het begin van je script. De linkjes van Adoptive en Google zullen je helpen en als je er niet uit komt kunnen we je alsnog verder helpen.

* nog beter zou het zijn om over te stappen naar PDO maar enkel voor dit scriptje is heeft het amper meerwaarde en wordt de vertaalslag een stuk lastiger.

Verder zie ik zo al enkele eigenaardigheden in je script.
- je logingegevens (username, password) voor de database kunnen beter in een apart php bestand dat buiten je webroot wordt opgeslagen.
- op regel 16 kopieer je dezelfde inhoud van $sql in $req. Waarom?
- zoals gezegd waarom foutmelingen onderdrukken met een @ ?
- Je query ziet er eigenaardig uit. Maar we zouden wat meer achtergrond info moeten hebben om daar echt een oordeel over te vellen
- mysql_fetch_array maakt zowel een associatieve array aan als een numerieke array. Als je deze wijzigt naar een mysqli_fetch_assoc() functie dan scheelt dat weer wat geheugenruimte die gebruikt wordt.
- regel 38 is (zover ik hier kan zien) overbodig. Gebruik een foreach() lus in plaats van een for lus en je hebt regel 38 niet meer nodig. Dat scheelt dan weer een query wat toch een vrij 'dure' actie is.
Gewijzigd op 03/01/2020 18:43:16 door Frank Nietbelangrijk
 
Wouter VandenBerghe

Wouter VandenBerghe

05/01/2020 22:27:14
Quote Anchor link
Ik heb eigenlijk bitter weinig kennins van PHP. Ik heb ooit eens een script gevonden en heb het trial and error gewijs aangepast tot dit.
Ik doe dit om de resultaten van verschillende wedstrijden weer te geven vanuit een database. De gegevens van die database werden verzameld via een online inschrijving, gevolgd door mijn toevoegingen per wedstrijd (uitslagen via ms access en een ODBC-verbinding met deze tabel).
Die sql klopt zeker (daar heb ik wat meer verstand van).
Ik heb al veel zitten klooien met die PHP-code, ik raak er echt niet uit.
Ik heb veel gelijkaardige oude php scrips en het zou fantastisch zijn moest iemand dit script kunnen aanpassen (en eventueel verbeteren). Ik denk er dan wel te kunnen in slagen om alle andere php-scrips te kunnen aanpassen.
Ik doe al dit werk op vrijwillige basis, zonder enige vorm van winstbejag.

Alvast enorme dank aan de personen die me hierboven al wat op weg hebben willen helpen.
Ik heb toch nog wat meer hulp nodig vrees ik... (schaam schaam,...)
 
- Ariën -
Beheerder

- Ariën -

05/01/2020 22:32:56
Quote Anchor link
Probeer eerst eens de mysql naar mysqli om te bouwen. Vaak is het in de meeste gevallen een kwestie van enkel een 'i' toevoegen, maar vaak moet je ook een extra argument in de functie meegeven, zoals bij mysqli_query die een verwijzing naar je connectie nodig heeft)

Kijk daarom eens naar: https://php.net/{functienaam}

Dus:
https://php.net/mysqli_connect
https://php.net/mysqli_query
https://php.net/mysqli_num_rows
https://php.net/mysqli_fetch_assoc

Maar als je ergens op vastloopt, laat maar even zien waarop....
Misschien is het een kleinigheidje en ben je er al bijna.
Gewijzigd op 05/01/2020 22:39:50 door - Ariën -
 
Ivo P

Ivo P

06/01/2020 09:23:35
Quote Anchor link
de stripslashes functie die je hierboven gebruikt, moet vervangen worden door htmlspecialchars().

Stripslashes haalt slashes weg, maar waarom zou je extra slashes hebben? Dat zou het geval zijn bij de prehistoriesche optie magic-quotes. Of je hebt een extra addslashes() toegevoegd en je database vervuild.

htmlspecialchars() zorgt dat een < in je record niet de html kapot maakt.

--
Verder kun je die check Startnummmer > 200 buiten haakjes halen:

WHERE startnr>200 AND (dit OR dat OR nogiets)

Dat maakt je query wat korter..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.