Problème d'insertion mysql/php

- - Dernière réponse :  guibs - 14 sept. 2019 à 10:33
-Bonjour,

à tous,
Je rencontre un problème bizarre selon moi, je m'explique, : lors d'une "simple insertion" dans une base de données via php, je n'obtiens pas de résultat avec mon script, alors que la syntaxe est bonne sous phpmyadmin, avec mysql, ... (avec insertion, & sans erreur, oui,, )
voilà la les lignes principales, qui doivent "merdouiller" selon moi, du code :
_________________________________________________


$req="INSERT INTO `records` (`id`, `mail`, `downloaded`, `title`, `href`, `reg_date`) VALUES ("", '***@***', '0', 'test_title7199999000', 'href17', NOW())";



mysql_query($db;$req);


où $db correspond à ma connexion à ma base,oui, ( sans problème, pour ça,, )
Un grand merci d'avance pour votre aide à venir et vos lumières ! :)
guibs






Configuration: Windows / Firefox 68.0
Afficher la suite 

19 réponses

Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423
0
Merci
bonjour,
avant tout, merci d'utiliser les balises de code quand tu postes du code.
les fonctions mysql_ sont dépassées, il est recommandé d'utiliser les nouvelles fonctions PHP pour accéder MySQL.
je remarque que tu ne testes pas si mysql_query a fonctionné, et que tu n'utilises pas mysql_query pour découvrir le détail de l'erreur.
Hello, avant tout,merci pour ta réponse, jordane,, entendu,à l'avenir j'essaierai d'utiliser les balises codes, sinon, désolé, je n'ai pas tout saisi, :


"Je remarque que tu ne testes pas si mysql_query a fonctionné, et que tu n'utilises pas mysql_query pour découvrir le détail de l'erreur.", c-a-d, que veux-tu dire par là, stp ? (car j'utilise bien : " mysql_query($db;$req); ", là,,... non ? )
(désolé, je n'ai pas tout compris et j'ai quelques lacunes à l'heure actuelle en programmation.. je suis un peu "rouillé",, lol,, mon dernier site date d'une 20aine d'années, et puis, disons que je suis également depuis 7 ans, suite à un très grave avc, "légèrement" atteint de "petites" séquelles cognitives / manque de concentration, fatigabilité,etc,,/. :s )Mais j'ai néanmoins envie de "remettre le "pied à l'étrier" & de reprogrammer,, :)
( Sinon, Un petit bout de code, ou lien, pourrait peut-être m'aider/éclairer,stp ?
merci,à plus,,
guibs/Guillaume
yg_be
Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423 > guibs -
tu peux t'inspirer du premier exemple de la documentation php, qui montre comment verifier que query a fonctionné, et obtenir le code d'erreur, le cas échéant.
& merci également à yg_be, évidemment,, ;)
ok,, jg, merci,, je vais voir ça un peu + tard,, là, c'est compliqué "niveau "timing",, ^^
ok,, yg,, je vais zieuter tout ça, ça m'a l'air bien yes,, ;)
en tout cas,, merci encore & je vous tiens au jus,, oui,, ^^
guibs
Commenter la réponse de yg_be
0
Merci
bon, j'ai déjà un peu fouillé sous google, je regarderais des exemples, du style : https://phpdelusions.net/pdo_examples/insert (désolé, je vois pas comment insérer un lien............ :/ )
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 -
Donc, si tu passes à PDO, pense à appliquer ceci avant :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

Ce qui fera, pour ta requête actuelle :
//préparation de la requête et des variables
$mail = "***@***";
$downloaded = 0;
$title = "test_title7199999000";
$href = "href17";

$sql = "INSERT INTO `records` 
                (`mail`, `downloaded`, `title`, `href`, `reg_date`) 
         VALUES (:mail,:downloaded, :title, :href , now())";

$datas = array(':mail'=>$mail, ':title'=>$title, ':href'=>$href );

//Execution de la requete
try{
  $requete = $bdd -> prepare($sql) ;
  $requete->execute($datas) ;
}catch(Exception $e){
  // en cas d'erreur :
   echo " Erreur ! ".$e->getMessage();
   echo " Les datas : " ;
  print_r($datas);
}


(bien entendu.. tu auras fais la connexion en PDO comme dans l'exemple montré dans mon lien.... )
Commenter la réponse de guibs
0
Merci
et j'aurai besoin par la suite de la synthax pour les "select" et d'un système 'façon ajax' pour une maj en temps réel de certaines données, oui, (mais on n'en n'est pas là, et je chercherais aussi de mon côté, oui,, ;) )
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 -
Bon, j'avance peut-être un peu, mais j'ai du mal, encore,, :s
Pareil, si quelqu'un peut aider,, svp,?, ;)
Merci d'avance !
à+,, ^^
Guillaume


$host='localhost';
$user='root';
$password='Jt4qFA39v24.3f';
$db = "admin_mstorF"

$dsn = "mysql:host=localhost;dbname=m$db";


$pdo = new PDO($dsn, $user, $password);

$stm = $pdo->query("SELECT VERSION()");

$version = $stm->fetch();

echo $version[0] . PHP_EOL;



$pdo = new PDO($dsn, $user, $password);


try {
    $conn = new PDO("mysql:host=$host;dbname=$db", $user, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // begin the transaction
    $conn->beginTransaction();
    // our SQL statements
	
	
$sql = "INSERT INTO `records` 
                (`mail`, `downloaded`, `title`, `href`, `reg_date`) 
         VALUES (:mail,:downloaded, :title, :href , now())";
    $conn->exec($sql);
   // commit the transaction
    $conn->commit();
    echo "New records created successfully";
    }
catch(PDOException $e)
    {
    // roll back the transaction if something failed
    $conn->rollback();
    echo "Error: " . $e->getMessage();
    }

$conn = null;
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 -
Pour commencer... tu ne dois faire qu'une SEULE connexion à la bdd.
Garde celle qui utiliser le try/catch ( à partir de la ligne 23 )

Et pour ce qui est de l'insertion ... tu as visiblement oublié d'envoyer les données à importer.
Tu n'as d’ailleurs pas respecté l'exemple que je t'ai donné... et tu n'as vraisemblablement pas bien lu le lien que je t'avais posté...

ça donnerait un truc du genre
<?php
//-------------------------------------------------//
//Affichage des erreurs PHP
//-------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//
$host='localhost';
$user='root';
$password='Jt4qFA39v24.3f';
$db = "admin_mstorF"
try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password);
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}



//-------------------------------------------------//
// requête SELECT 
//-------------------------------------------------//
try{
  $stm = $bdd->query("SELECT VERSION()");
  $version = $stm->fetch();
  echo $version[0] . PHP_EOL;
}catch(Exception $e){
  echo "Erreur : ".$e->getMessage();
}


//-------------------------------------------------//
// Requête INSERT
//-------------------------------------------------//
//préparation de la requête et des variables
$mail = "***@***";
$downloaded = 0;
$title = "test_title7199999000";
$href = "href17";

$sql = "INSERT INTO `records` 
                (`mail`, `downloaded`, `title`, `href`, `reg_date`) 
         VALUES (:mail,:downloaded, :title, :href , now())";

$datas = array(':mail'=>$mail, ':title'=>$title, ':href'=>$href );

$bdd->beginTransaction();

//Execution de la requete (chaque EXECUTION est à mettre dans un bloc TRY/CATCH)
try{  
  $requete = $bdd -> prepare($sql) ;
  $requete->execute($datas) ;
  $bdd->commit();
  echo "New records created successfully";
}catch(Exception $e){
  // en cas d'erreur :
   $bdd->rollback();
   
   echo " Erreur ! ".$e->getMessage();
   echo " Les datas : " ;
  print_r($datas);
}




Hello jordane, merci pour ta réponse, et pour te donner du mal pour moi,... c'est sympa ! ;)
par contre, ton code ne fonctionne toujours pas, chez moi,, cf :

http://musik-store.fr/test/

_____et je pense bien avoir pris ton code, tel quel,,_________________________________________

;

//-------------------------------------------------//
// Requête INSERT
//-------------------------------------------------//
//préparation de la requête et des variables
$mail = "***@***";
$downloaded = 0;
$title = "test_title7199999000";
$href = "href17";

$sql = "INSERT INTO `records` 
                (`mail`, `downloaded`, `title`, `href`, `reg_date`) 
         VALUES (:mail,:downloaded, :title, :href , now())";

$datas = array(':mail'=>$mail, ':title'=>$title, ':href'=>$href );

$bdd->beginTransaction();

//Execution de la requete (chaque EXECUTION est à mettre dans un bloc TRY/CATCH)
try{  
  $requete = $bdd -> prepare($sql) ;
  $requete->execute($datas) ;
  $bdd->commit();
  echo "New records created successfully";
}catch(Exception $e){
  // en cas d'erreur :
   $bdd->rollback();
   
   echo " Erreur ! ".$e->getMessage();
   echo " Les datas : " ;
  print_r($datas)
?>

Bon, puis vraiment désolé ^pour la lisibilité de mon code (non "bleuté" ), mais je n'y arrive pas, ( je trouve que le système est à revoir !
Guillaume/guibs.


EDIT : Ajout des balises de code
je sens venir la palme du boulet "haut la main",, lol,, ^^
j'ai ( sous chrome) une nouvelle erreur 500, pas d'erreur 500 sous ff, (et dans les cas,ça ne fonctionne pas, évidemment,... :s ) je j'n'y comprends plus grand chose... :/
Commenter la réponse de guibs
0
Merci
Je sens que je vais reprendre mon script du début,,lol... un bon tuto sur le net, svp ? :) ^^
Commenter la réponse de guibs
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786
0
Merci
Pour ce qui est de la coloration syntaxique.. il suffit d'utiliser les balises de code
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Dans le code que tu nous montres.. je n'y vois pas le début de ce que je t'ai envoyé ( la connexion et l'activation des erreurs php...)

Et pour ce qui est de mon code.. il y a, en effet, un oubli de ma part.
Mais... si tu as TOTALEMENT repris mon code ET appliqué ce qui est indiqué dans le lien que je t'avais donné (concernant l'activation des erreurs php...) .. une erreur devrait s'afficher


La partie du code que j'ai mal écrité est celle là

$sql = "INSERT INTO `records` 
                (`mail`, `downloaded`, `title`, `href`, `reg_date`) 
         VALUES (:mail,:downloaded, :title, :href , now())";

$datas = array(':mail'=>$mail, ':title'=>$title, ':href'=>$href );

J'ai oublié une variables dans les $data
$datas = array(':mail'=>$mail, ':title'=>$title, ':href'=>$href, ':downloaded'=>$downloaded );



Si le souci persiste...
Ne garde QUE la connexion et regarde si ça te met une erreur.

Si pas d'erreur... tu rajoutes la partie qui fait le select.. et tu regarde si ça marche

Puis si ça marche.. ajoute la partie du code qui fait l'insert ... et ainsi de suite.

Par contre... respecte bien la structure du code que je t'ai donné... ( le fait de placer CHAQUE requête dans un blioc try/catch séparé ... ainsi que la connexion à la bdd .. sans oublié l'activation des erreurs PHP.

Je t'invite, au passage, à lire et à appliquer ceci :
http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Commenter la réponse de jordane45
0
Merci
Salut, merci, bon, je vais y aller pas à pas, si cela ne dérange pas de trop,,

Voici les 2 parties de code correspondant à l'affichage éventuel des erreurs php, et la connexion à la base,,


//-------------------------------------------------//
//Affichage des erreurs PHP
//-------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//
$host='localhost';
$user='root';
$password='Jt4qFA39v24.3f';
$db = "admin_mstorF"
try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password);



//}catch(Exception $e){
echo "Erreur : ".$e->getMessage();
}</code>
Jusque là, on est d'accord ?
guibs,
Commenter la réponse de guibs
0
Merci
Hello , merci jordane,, ;)
c'est sympa merci pour votre aide,
sinon, j'essaie d'avancer de mon côté mais même avec l'aide google ce n'est pas simple pour moi,,... :(
donc, si vous avez un peu de temps, j'veux bien un peu plus d'aide, svp, oui,,
Edit :
[ dans mon précédent message, c'est bon, j'avais juste pour les 2 parties de mon code ? ]
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 -

dans mon précédent message, c'est bon, j'avais juste pour les 2 parties de mon code ?

oui plus ou moins.. mais je ne comprend pas comment se fait-il que les gens ne soient pas capables de copier/coller simplement les réponses qu'on leur donne...
Par exemple.. il manque une ligne important
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Elle permet d'activer l'affichage des erreurs PDO ... ce qui va t'être fort utile pour déterminer où se trouvent les éventuelles erreurs dans tes requêtes....

Donc.. dans ta page, pour l'instant, ne mets que ceci et dis nous ce que ça t'affiche
//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//
$host='localhost';
$user='root';
$password='Jt4qFA39v24.3f';
$db = "admin_mstorF";
try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password);
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

  echo "<br> Connexion à la bdd : OK !";
  
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}


Commenter la réponse de guibs
0
Merci
Salut,cop/coll effectué, mais ça ne fonctionne toujours pas :
____________________________________________


<?php
//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//

$host='localhost';
$user='root';
$password='Jt4qFA39vf';
$db = "admin_mstor"
//connexion à la bdd
try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password);
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

  echo "<br> Connexion à la bdd : OK !";
  
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}




// le script se termine ici, sans la balise de fermeture PHP





http://musik-store.fr/test/ Help, pliz',, :)
Merci,,
guibs
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 -
Avec le début du script qui contient l'activation des erreurs php bien entendu....
<?php
//-------------------------------------------------//
//Affichage des erreurs PHP
//-------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//

$host='localhost';
$user='root';
$password='Jt4qFA39vf';
$db = "admin_mstor";

//connexion à la bdd
try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password);
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

  echo "<br> Connexion à la bdd : OK !";
  
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}



Comme je te l'avais déjà indiqué.. dans mes précédents messages... il faut lire ET APPLIQUER le contenu de ces deux liens :
- http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
- http://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Sachant que si tu avais activé l'affichage des erreurs PHP.. tu aurais surement vu qu'il te manquait un point-virgule à la ligne
$db = "admin_mstor";


Assures toi également que ton fichier est bien encodé en utf8 sans BOM;
(voir chapitre 1 de ce lien pour savoir comment vérifier )
http://www.commentcamarche.net/faq/47069-html-php-caracteres-accentues-et-l-utf8

.
Commenter la réponse de guibs
0
Merci
Salut jordane, voici mon code actuel (qui ne fonctionne toujours pas, malgré l'application de tes conseils : correction du script & utf8 ) :
===============================

<?php
//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//


error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);



$host='localhost';
$user='root';
$password='Jt4qFA39vf';
$db = "admin_mstor";
//connexion à la bdd
try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password);
  // Activation des erreurs PDO
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

  echo "<br> Connexion à la bdd : OK !";
  
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}




// le script se termine ici, sans la balise de fermeture PHP



pas de message d'erreur, juste une erreur 500,.. :/
http://musik-store.fr/test/
Une autre piste, stp ?
Merci à vous,,
Guillaume/guibs
yg_be
Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423 -
pourquoi "sans la balise de fermeture PHP"?
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 > yg_be
Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
-
Ce n'est pas nécessaire
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 -
Par contre... tu n'as pas copié collé exactement....
Relis bien mon code !
Commenter la réponse de guibs
0
Merci
Salut jordane, tous, c'est bien sympa à toi/vous de vouloir m'aider, mais bon,,, (avez-vous/ as-tu vérifié de votre/ton côté si les lignes de codes écrites fonctionnaient chez toi/ vous ? voici mon code actuel :
//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//


error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);



$host='localhost';
$user='root';
$password='Jt4qFA39vf';
$db = "admin_mstor";
//connexion à la bdd
try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password);
  // Activation des erreurs PDO
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

  echo "<br> Connexion à la bdd : OK !";
  
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());
}




Je ne demande pourtant pas grand chose : Un exemple concret ET fonctionnel d'une simple connexion à une bdd + éventuellement une syntaxe d'insert... (donc plutôt que de m'indiquer gentiment que je suis incapable de faire un cop/coll, quil faut que je me relise,, etc, d'être un peu pris de haut, en somme, quoi,,... En gros, là, je suis content pour toi, qu'avec ton script et tes "connaissances" ton exemple fonctionne chez toi, mais ici, ça ne le fait pas, y' un "truc qui coince, quoi,.. et visiblement, on ne voit pas vraiment trop d'où ça peut v'nir,, . :/ ".. :(
donc pointe/ pointez-moi plutôt vers un exemple fully working, please,,non ? ^^ ;)
thanks in advance !
guibs
(car jusque là, j'ai plutôt l'impression d'être considéré par cccm comme le boulet/ abrutis de service,, lol,, :p )
p.s :
__________________________________
Chacun d'entre-nous a appris à coder peu à peu, & a pu progresser plus ou/- rapidement notamment grâce à google & l'échange des connaissances.Mais pour le moment, alors que le pdo est censé être , sur ce que j'ai pu comprendre beaucoup plus simple que les syntaxes d'avant, (mysql ) montrez/montre -moi donc svp des cas testés & fonctionnels, non ?
(;scuse/scusez si j'ai l'air d'être un peu énervé, mais bon,, on tourne un peu en rond depuis quelques jours, là,, ;) ] ^^
guibs/Guillaume
yg_be
Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423 -
Une technique qui permet de mieux comprendre ce que fait le code, c'est de ajouter des
echo
dans le code. n'hésite pas à simplifier ton code jusqu'à avoir un minimum qui fonctionne.
Par ailleurs si tu souhaites de l'aide, il est important, à chaque étape, que tu nous dises ce que tu observes, comment ton code se comporte.
Je suis prêt à te donner un coup de main, et c'est toi qui est le maître du jeu, qui doit faire les tests et découvrir ce qui ne fonctionne pas.
Commenter la réponse de guibs
Messages postés
5
Date d'inscription
mercredi 28 août 2019
Statut
Membre
Dernière intervention
29 août 2019
0
Merci
bonjour yg, je reprends mon topic, sous mon pseudo de nouvel inscrit sur ccm,,...
guibs63
Messages postés
5
Date d'inscription
mercredi 28 août 2019
Statut
Membre
Dernière intervention
29 août 2019
-
Bonjour à tous, bon, c'est tout autre & bien + "grave" que celà, mes codes ne sont visiblement plus interprétés sur mon domaine............. :/


un simple script comme :
<html>
 <head>
  <title>Test PHP</title>
 </head>
 <body>
 <?php echo '<p>Bonjour le monde</p>'; ?>
 </body>
</html>



N'affiche rien !!!
je suis sous plesk........ php normalement installé, :(
any idea ?
Merci,
guibs.
yg_be
Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423 > guibs63
Messages postés
5
Date d'inscription
mercredi 28 août 2019
Statut
Membre
Dernière intervention
29 août 2019
-
c'est bien ce que je soupçonnais.
"N'affiche rien", donc le titre est correct? as-tu examiné la source de la page?
et une page html sans php, cela donne quoi?
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 > yg_be
Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
-
Bonjour,
En complément... quel est le nom du fichier qui contient ton code ?
L'extension est bien .php ??
Commenter la réponse de guibs63
Messages postés
5
Date d'inscription
mercredi 28 août 2019
Statut
Membre
Dernière intervention
29 août 2019
0
Merci
plop', bon, si, c'est quand-même interprété ( me suis un peu "enflammé,, lol,, ^^ )
Mais ça ne résout pas encore mon problème, je verrais ça plus en détail de nouveau demain ! :)
j'vous tiens au courant,,^^
guibs
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 -
On recommence...
Que donne ce code et exactement ce code...

https://www.commentcamarche.net/forum/affich-36179426-probleme-d-insertion-mysql-php#20
Commenter la réponse de guibs63
Messages postés
5
Date d'inscription
mercredi 28 août 2019
Statut
Membre
Dernière intervention
29 août 2019
0
Merci
Hello, cop: col. effectué :
____________________________________

<?php

echo " Test ! " ;




//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//
$host='localhost';
$user='root';
$password='Jt4qFA39v24.3f';
$db = "admin_mstorF";
try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password);
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

  echo "<br> Connexion à la bdd : OK !";
  
} catch(PDOException $e) {
  die('Erreur : ' . $e->getMessage());





?>

et le simple "echo "test" ne fonctionne pas non plus... :(
Help, pliz,
(e stoppe pour ce soir,, ++ )
Merci,, :)
guibs
Salut, bon, j'ai du neuf, :
plutôt que de travailler online, j'ai testé le script ci-dessous offline (avec easyphp) , et cette fois, la connexion à la bdd se fait correctement! zarb, non...? :s

_____________________________________

<?php
//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//


error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);



$host='localhost';
$user='root';


$password='';
$db = "admin_mstor";
//connexion à la bdd
try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password);
  // Activation des erreurs PDO
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

  echo "<br> Connexion à la bdd : OK !";




à l'aide,, svp,, ?:)
Merci,
guibs
donc, ça semble évident à présent, c'est un problème de config' pdo/ sous plesk. Une idée, svp ?
Merci, guibs
Commenter la réponse de guibs63
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786
0
Merci
Vu que visiblement tu n'es pas capable de copier/coller correctement les codes qu'on te donne ni de te relire pour te rendre compte qu'ils ne sont pas identiques...
Donc .. Je tente ma chance une dernière fois...

Voici le code à copier/coller EXACTEMENT
<?php
//-------------------------------------------------//
// Affichage des erreurs php
//-------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//
$host='localhost';
$user='root';
$password='';
$db = "admin_mstor";


//connexion à la bdd
try{
  $bdd =new PDO('mysql:host='.$host.';dbname='.$db.'; charset=utf8', $user, $password);
  // Activation des erreurs PDO
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
  echo "<br> Connexion à la bdd : OK !";
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}


Ensuite... si ça ne fonctionne pas avec le plesk.. c'est très certainement que les informations de connexion que tu entres ne sont pas les bonnes...
Le Host, le user, le password et le nom de la base de données sont à vérifier et à adapter en fonction...

Par exemple.. je doute fortement que le host soit "localhost" et que le user soit "root" sur le plesk...
$host='localhost';
$user='root';


Bien entendu.. le PDO fonctionne qu'à partir de php 5 ... même si j'ose espérér qu'il ne reste personne avec une version php antérieure... il serait bien de s'en assurer via un phpinfo.
pour cela, tu crées un fichier php dans le lequel tu écris simplement ceci :
<?php
phpinfos();
?>

puis tu l'ouvres dans ton navigateur ...
Cela va te retourner pleins d'infos ... telle que la version de php utilisée et si la librairie "pdo" est installée (on ne sait jamais... )

Voila.

guibs63
Messages postés
5
Date d'inscription
mercredi 28 août 2019
Statut
Membre
Dernière intervention
29 août 2019
-
Ok, Jordan, je vais tester ça, merci, mais déjà, j'ai un début de piste : sur ce que j'ai pu lire :php 7x & pdo ne fonctionnent à priori pas "ensemble", et pdo aurait été remplacé par "mysqli",,... peut-être un début d'explications ? Je vous tiens au jus, encore merci ! ;)
++ :)
guibs
SioGabx
Messages postés
248
Date d'inscription
mardi 21 août 2018
Statut
Membre
Dernière intervention
8 septembre 2019
52 > guibs63
Messages postés
5
Date d'inscription
mercredi 28 août 2019
Statut
Membre
Dernière intervention
29 août 2019
-
Ça m'étonnerait '.'
yg_be
Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423 > guibs63
Messages postés
5
Date d'inscription
mercredi 28 août 2019
Statut
Membre
Dernière intervention
29 août 2019
-
il vaut parfois mieux ne pas trop lire.
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 > guibs63
Messages postés
5
Date d'inscription
mercredi 28 août 2019
Statut
Membre
Dernière intervention
29 août 2019
-
Heu...non.. c'est l'inverse...
Mysql est a remplacer par Mysqli ou PDO
Sachant que pdo est mieux...
hum,,.... bon, mais visiblement, php 7x & pdo ne fonctionnent pas ensemble,, me trompais-je ? :s
as-tu testé de ton côté ?
merci, guibs
Commenter la réponse de jordane45
0
Merci
et en ce qui concerne mes infos de connexion : " Le Host, le user, le password et le nom de la base de données sont à vérifier et à adapter en fonction... ", elles sont évidemment bonnes, juste à titre informatif et pour que tu comprennes mieux, le "localhost" correspond au 'localhost' du serveur où sont hébergés mes scripts,... ! mes scripts ne sont pas hébergés sur ma bécane, quoi,, ;)
guibs
yg_be
Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423 -
peux-tu répondre à ce que Jordane a demandé le 29 août 2019 à 14:00 (phpinfos)?
tu tourneras peut-être moins longtemps en rond si tu réponds aux questions.
Commenter la réponse de guibs
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786
0
Merci
Je suis développeur pro... donc oui j'utilise pdo en php 7 au quotidien
Tu n'as pas non plus besoin de m'expliquer ce qu'est le localhost....
Mais sache que sur la plus part des hébergeurs web...la bdd ne se trouve pas sur le même serveur que le site php... tu dois donc utiliser les informations fournies par ton hébergeur... et j'insiste... sauf cas exceptionnel...ca ne sera pas localhost !!
Quoi qu'il en soit, commence par copier les codes que je te donne et réponds aux différentes questions que je te pose.... sans ça nous ne pourrons pas avancer !!
Commenter la réponse de jordane45
0
Merci
Hello tous, jordan, yg, et autre, bon alors, déjà je ne suis certes (plus) un "pro", mais niveau dév. web, je l'ai été oui, passons, (et puis au passage, c'est: php (info () / sans le "s",, quoi, , mais j'aurais dû penser à éxécuter cette fonction, évidemment,oui, ;)
===========================
car un phpinfo(s) affiche ( si tu avais écrit, comme tu me l'as si souvent conseillé, ces lignes en début de code :

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

tu aurais eu cette erreur :




Fatal error: Uncaught Error: Call to undefined function phpinfos() in /var/www/vhosts/musik-store.fr/httpdocs/test/infos.php:7 Stack trace: #0 {main} thrown in /var/www/vhosts/musik-store.fr/httpdocs/test/infos.php on line 7
bref,,

bref, le phpinfo(); affiche :
=========================

https://ibb.co/W6cthKX

Bon, today, j'ai plus de temps & suis motivé, donc j'espère qu'on va trouver les zamis,, ! ;)
guibs/Guillaume ( développeur web"pro"-amateur,, ^^ )

Sinon, je suis chez 1&1 ionos, l'hébergement du site se fait sur mon domaine "musik-store.fr" & la bdd sur "localhost", oui,,

voici quelques infos concernant mon hébergement :
___________________________________________

Présentation du système
Nom d'hôte localhost.localdomain
Adresse IP 87.106.192.57
OS ‪Ubuntu 18.04.3 LTS‬
Produit Plesk Onyx
Version 17.8.11 Mise à jour n° 65, dernière mise à jour le 22 Aoû 2019 06:25

et pour ma bdd :

=>>> Hôte :localhost:3306 (MySQL)
Utilisateurs: root
Tableaux: 4
Volume: 80.0 Ko


woiloù,.. :)
Commenter la réponse de guibs
0
Merci
ma configuration plesk sous 1&1 ionos est :
________________________________


plesk 17.8.11.. :
sous ‪Ubuntu 18.04.3 LTS‬
et sous l'interface de plesk, y'a la config' php, mais pas les extensions pdo,,...
(ceci dit, il est dit/ je sais plus où, que le driver est "pré-installé" ) et lors de l'exécution de notre script, il n'y a pas l'erreur "drivers non installés"
étrange,non,, ?

si vous avez un tuyau, j'veux bien, oui,svp, ? :)
Commenter la réponse de guibs
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786
0
Merci
Il semble que tu sois sur un serveur dédié....
qui l'a installé ? Toi ?


Sinon.. et bien..... ta capture écran de ton php.ini est inutilisable...
Tu ne nous montres pas les bonnes rubriques.

Il aurait été préférable que tu corriges l'erreur du "s" dans ton fichier http://musik-store.fr/test/infos.php pour qu'on puisse le regarder par nous même...

Quoi qu'il en soit, dans le phpinfo (je te laisse vérifier par toi même pour le coup.... )
<?php 
phpinfo();
?>

tu devrais avoir ça :



et un peu plus bas :




Tu peux vérifier que l'extension est chargée via le code
<?php
if ( extension_loaded('pdo_mysql') ) { // e.g., pdo_mysql
    echo " PDO est disponible ";
}else{
   echo " ERREUR : Pdo n'est visiblement pas présent sur votre serveur"; 
}


Si PDO n'est pas là... il faut vérifier que dans ton php.ini la librairie soit chargée
extension=php_pdo_mysql.dll

et, normalement, un peu plus bas dans ton php.ini tu devrais également trouver un truc du genre :


Si tu as modifié ton php.ini.. n'oublie pas de redémarrer apache (ou nginx )

Si malgré ça tu n'y arrives toujours pas.... retournes toi vers la personne qui a installé ton serveur ... ou demande l'aide de ton hébergeur.
Le souci de "chargement" de PDO ne relevant pas d'un problème de "langage PHP" .. mais de configuration serveur... cela ne concerne plus ce forum.


Et juste pour vérifier si tes infos de connexion à la bdd sont bons... on peut vérifier en mysqli ...

<?php
//-------------------------------------------------//
// Affichage des erreurs php
//-------------------------------------------------//
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//-------------------------------------------------//
//connexion à la bdd
//-------------------------------------------------//
$host='localhost';
$user='root';
$password='';
$db = "admin_mstor";

$mysqli = new mysqli($host, $user, $password, $db);

/* Vérification de la connexion */
if ($mysqli->connect_errno) {
    printf("Echec de la connexion: %s\n", $mysqli->connect_error);
echo "<br>=> host : ".$host."
     <br>=> user : ".$user ."
     <br>=> db : ".$db;
    exit();
}else{
  echo " Connexion OK 
   <br>=> host : ".$host."
   <br>=> user : ".$user ."
   <br>=> db : ".$db;
}

Si en mysqli .. la connexion ne fonctionne pas non plus.. c'est que tu as un souci dans les infos de connexion à la BDD.

Si ça marche.. c'est que tu as un souci dans l'install de PDO sur ton serveur qu'il faudra gérer avec ton hébergeur.

Voila...





Cordialement,
Jordane
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 > guibs -
Pdo semble bien là.

Donc.. reste à tester en mysqli pour voir si les identifiants de connexion à ta bdd sont bons..
yg_be
Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423 > jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
-
pour un problème d'identifiants, ne devrions-nous pas avoir autre chose qu'une erreur 500?
jordane45
Messages postés
26313
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 septembre 2019
1786 > yg_be
Messages postés
8534
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
-
Je me méfie...
J'ai déjà eu des erreurs 500 pour un souci de connexion à la bdd en pdo...
Surtout que si les identifiants étaient bons... et qu'il a appliqué le code que je lui ai donné (exactement tel quel...sans rien d'autre dans la page ) ... il ne devrait y avoir aucun souci.
Bien entendu... l'encodage des fichiers est bien en UTF8 sans BOM (tel que déjà demandé à vérifier) ...
Quoi qu'il en soit, la vérification en mysqli devrait permettre de voir si le souci vient de ses identifiants.... de son fichier lui même... ou d'un souci avec les drivers PDO.
Une erreur 500 indique une erreur côté "serveur".
Il semble que ce souci ne concerne que ses tentatives de connexions à la bdd puisque le fichier "info.php" semble fonctionner.
Je lui ai également demandé à plusieurs reprises le nom (et l'extension) du fichier dans lequel il essayait de coder cette connexion. Je n'ai tourjours pas eu la réponse....

Bref.. je pense plus à un code erreur 33 qu'à un souci de configuration PHP ... mais on doit quand même s'en assurer...
"Il semble que tu sois sur un serveur dédié....
qui l'a installé ? Toi ? ", non, ce n"est pas moi, c'est livré "clé en main" avec mon domaine chez 1&1
Salut la team, je mets de côté mon projet, je reviendrais de nouveau vers vous en cas de soucis, merci encore pour votre aide ! ;)
Commenter la réponse de jordane45