Un champ pas toujours rempli

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Un champ pas toujours rempli

Re: Un champ pas toujours rempli

par Couin » 19 févr. 2019, 19:29

Ah ok , je voyais pas ca comme ca :)

Cependant, avant de me lancer dans des logs, j'ai renommé la table history du site (destination on dira) car j’avais un truc spé (la table continuait d’être alimenté malgré suppression du fichier qui a le script qui l'alimente, alors peut etre quelque chose resté en cache chez un visiteur, je ne sais pas ), et du coup, plus de problème.

Je pense que chez l’hébergeur, ca avait du mal entre la table history de la base (distante) et la table history du site , pourtant avec mysqli, on indique sur quel connexion on travaille ...

Je vais attendre un peu pour voir si c'est bien ca et je repasserais pour mettre en résolu :)

Re: Un champ pas toujours rempli

par Spols » 18 févr. 2019, 09:07

Je ferai mon prop^re système de log juste ce qu'il faut.

tu recupère le contenu de tes tableaux de données source avec var_export par exemple et ensuite tes requètes complète (après préparation) et tu met le tout dans un fichier text avec file_put_content(s) je sais jamais si il y a ou pas le s final. avec une date/heure dans le nom de fichier tu pourras savoir si le problème vient de la source, du transfert ou autres .

Re: Un champ pas toujours rempli

par Couin » 18 févr. 2019, 05:57

Hello :)

J'ai regardé pour activer les logs mais je pense que je ne dois pas m'y prendre comme il faut pour la recherche car je suis tombé sur des activations de log sur le serveur mysql (pas sur qu'on puisse sur du mutualisé en plus) et non sur la ou les requêtes qu'on veut.

Je veux dire, je pense un truc du genre à mettre dans le fichier php qu'on veut analyser :

Code : Tout sélectionner

mysqli_log( $dbwrite, $sql, "chemin_du_fichier_log") ;
Vers quelle commande faut-il que je m'oriente pour ma recherche ?

Merki :)

Re: Un champ pas toujours rempli

par Spols » 17 févr. 2019, 21:21

utilise un fichier de log pour chaque requète, et résultat. ainsi tu verra où se produit le problème

Re: Un champ pas toujours rempli

par Couin » 17 févr. 2019, 19:25

Je pense pas que ce soit à cause des apostrophes, d'autant plus que les autres champs que "duration" sont écrits normalement, et aussi qu'au relevé de données suivant, ça passe pour ces mêmes titres. De plus, addslashes normalement empêche le problème de ' .

Concernant l'affichage de la requête, pas évident puisque la page est déclenchée par javascript et retourne les infos finales en json , donc en gros c'est invisible pour le visiteur.
Si je la déclenche manuellement (lien direct de la page) en ayant pris soin de retirer le header json, et en ayant mis les requetes et echos , j'ai par exemple ca :

Code : Tout sélectionner

SELECT date_played, song_type, id_subcat, artist, title, duration FROM history ORDER BY history.date_played DESC LIMIT 0, 30 Ecriture 0 : INSERT INTO history SET date_played='2019-02-17 18:18:51', song_type='0', id_subcat='1', duration='376.96712', artist='Manuela', title='Stand And Dance (Now Or Never)'; Relecture 0 : 2019-02-17 18:18:51 - 0 - 1 - 376.96712 - Manuela - Stand And Dance (Now Or Never) Ecriture 1 : INSERT INTO history SET date_played='2019-02-17 18:18:43', song_type='1', id_subcat='11', duration='9.06485', artist='Jingle 2019', title='Sergio 6'; Relecture 1 : 2019-02-17 18:18:43 - 1 - 11 - 9.06485 - Jingle 2019 - Sergio 6 Ecriture 2 : INSERT INTO history SET date_played='2019-02-17 18:14:16', song_type='0', id_subcat='1', duration='267.09769', artist='Unsex Feat Sandy', title='I Love Your Baby'; Relecture 2 : 2019-02-17 18:14:16 - 0 - 1 - 267.09769 - Unsex Feat Sandy - I Love Your Baby etc etc ...
Je ne suis pas parvenu à avoir les 0.0000 en relecture à chaque actualisation de la page.
Le problème c'est que quand la table se retrouve avec des 0.0000, le script a déjà été exécuté, donc je peux pas voir ce qu'il s'est passé :(

Edit : Pour les ' , ca passe quand meme :

Code : Tout sélectionner

Ecriture 13 : INSERT INTO history SET date_played='2019-02-17 17:44:44', song_type='0', id_subcat='1', duration='313.99118', artist='2 Brothers On The 4th Floor', title='Can\'t Help Myself'; Relecture 13 : 2019-02-17 17:44:44 - 0 - 1 - 313.99118 - 2 Brothers On The 4th Floor - Can't Help Myself

Re: Un champ pas toujours rempli

par or 1 » 17 févr. 2019, 18:25

c'est pas plutôt du au fait que des artistes ou titre peuvent avoir un ' dans leur intitulé ?
si ce n'est pas cela, un echo $sql affiche quelque chose de correct quand cela ne fonctionne pas ?

Un champ pas toujours rempli

par Couin » 17 févr. 2019, 17:05

Hllo,

J'ai un truc bizarroïde (oui encore lol )

Voilà, une fois toutes les 10 secondes, je récupère quelques champs d'une trentaine de lignes d'une table sur un serveur distant, et je rempli une table (précédemment vidée) du site.

Pour ce faire, une première requête récupère les données de la table source, et chaque champs alimente un array

Code : Tout sélectionner

$sql = "SELECT date_played, song_type, id_subcat, artist, title, duration FROM history ORDER BY history.date_played DESC LIMIT 0, 30" ; $requete = mysqli_query( $dbrdj, $sql ) ; while( $result = mysqli_fetch_array( $requete ) ) { $date_played[] = $result['date_played']; $song_type[] = $result['song_type']; $id_subcat[] = $result['id_subcat']; $duration[] = $result['duration']; $artist[] = addslashes($result['artist']); $title[] = addslashes($result['title']); }
Puis j'alimente la table sur la base de données du site :

Code : Tout sélectionner

for ($i = 0; $i < 30 ; $i++) { $sql = "INSERT INTO history SET date_played='$date_played[$i]', song_type='$song_type[$i]', id_subcat='$id_subcat[$i]', duration='$duration[$i]', artist='$artist[$i]', title='$title[$i]';"; $requete = mysqli_query( $dbwrite, $sql ) ; }
Le problème, régulièrement, le champs "duration" , qui est de type "Double (11,5)", comme la source, se retrouve qu'avec "0.00000" au lieu de la durée du titre (puisqu’il s'agit de musiques vous l'aurez deviné :) ).

C’est aléatoire, ça ne touche pas forcément toutes les lignes. Au ramassage suivant, les "durations" sont là .
Le problème ne touche que cette colonne.

L'ennui c'est que plus tard dans mon script, j'utilise la "duration" dans une jointure de requête et du coup, quand il y a "0.00000", la requête ne donne rien et j'ai pas de données finales (ID de pochette et nom du titre en cours + ID des 5 pochettes de titres passés avant) à exploiter , ce qui fait que le site affiche des fois des pochettes génériques.

Si quelqu'un a une idée , je suis preneur, car je vois pas où est mon erreur du coup :(

Merkouin :D