PHP et Sqlserv insert ligne dans une table
Résolu
nicolas06100
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
nicolas06100 Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
nicolas06100 Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J’ai profité du confinement pour mi remettre, mais ce n’est pas comme le vélo, je suis donc débutant. Ça fait 3 jours que je galère pour certainement ce qui va vous paraitre simple. Je vais essayer d’être le plus clair possible. Je voudrais que l’utilisateur puisse ajouter un album mais voilà la ligne dans la table albums ne se crée pas. Si j‘insère manuellement cette ligne il n’y a aucun pb coté utilisateur il peut remplir avec ces photos… Mais voilà l’idée c’est que c’est lui qui doit pouvoir crée ses propres albums avec les noms qui veut. J’ai beau tourner le problème dans tous les sens et aucun résultat j’ai cherché sur Google et j’en suis toujours au même point, je dois passer à côté d’un truc. Désespérer s’il vous plait j’ai besoin de votre aide.
En gros je dois récupérer l’id de l’utilisateur qui deviendra idc dans la table albums, je récupère également le titre que l’utilisateur a saisi, et ça doit créer l’id qui s’auto renseigne par rapport au dernier id crée. La ligne est sensée se créer dans la table puis vient la création du sous répertoire qui prendra le nom de l’id de la table albums
Je pense que ça ne récupère pas l’id de l’utilisateur et donc rien ne se fait. Dans la page précédente il y a :
Puis :
Et :
EDIT Ajout du LANGAGE dans les BALISES DE CODE
Voili voilou si une âme charitable a une idée sur ce que j’ai loupé, se serait super car je ne sais plus quoi faire.
J’ai profité du confinement pour mi remettre, mais ce n’est pas comme le vélo, je suis donc débutant. Ça fait 3 jours que je galère pour certainement ce qui va vous paraitre simple. Je vais essayer d’être le plus clair possible. Je voudrais que l’utilisateur puisse ajouter un album mais voilà la ligne dans la table albums ne se crée pas. Si j‘insère manuellement cette ligne il n’y a aucun pb coté utilisateur il peut remplir avec ces photos… Mais voilà l’idée c’est que c’est lui qui doit pouvoir crée ses propres albums avec les noms qui veut. J’ai beau tourner le problème dans tous les sens et aucun résultat j’ai cherché sur Google et j’en suis toujours au même point, je dois passer à côté d’un truc. Désespérer s’il vous plait j’ai besoin de votre aide.
<?php include "../base/base.php"; session_start(); $idc=$_SESSION["cnx"]; $titre=$_GET["t"]; // crée une entrée dans la table albums et récupère l'id de l'album comme nom du sous dossier $sql="insert into albums set idc=:cnx, titre=:t, autorisation=0"; $rq=$db->prepare($sql); $rq->bindParam(":cnx",$idc); $rq->bindParam(":t",$titre); $rq->execute(); $albid=$db->lastInsertId(); mkdir("../images/perso/".$idc."/".$albid.""); $chemin="../images/perso/3556/Bonbon"; // si je mets "..." pour mkdir ça me crée bien le sous répertoire bonbon dans 3556// ?>
En gros je dois récupérer l’id de l’utilisateur qui deviendra idc dans la table albums, je récupère également le titre que l’utilisateur a saisi, et ça doit créer l’id qui s’auto renseigne par rapport au dernier id crée. La ligne est sensée se créer dans la table puis vient la création du sous répertoire qui prendra le nom de l’id de la table albums
Je pense que ça ne récupère pas l’id de l’utilisateur et donc rien ne se fait. Dans la page précédente il y a :
<?php include "../base/base.php"; include "../outils/fonctions.php"; /* sécurité */ session_start(); $id=0; if (isset($_SESSION["cnx"])) { $id=$_SESSION["cnx"]; } if ($id==0) { header("location: ../index.php?m=1"); } activer($id); // caractéristiques "uniques" $sqlspec="select pseudo, image from users where id=:id"; $rqspec=$db->prepare($sqlspec); $rqspec->bindParam(":id",$id); $rqspec->execute(); $perso=$rqspec->fetch(PDO::FETCH_ASSOC); // nombre de visites $nbv=nbv($db,$id); // albums privés $sqlal="Select albums.id, albums.titre From albums Where albums.idc = :id"; $rqal=$db->prepare($sqlal); $rqal->bindParam(":id",$id); $rqal->bindColumn("id",$albid); $rqal->bindColumn("titre",$albtitre); $rqal->execute(); ?>
Puis :
<script> function gal(dir) { $("#galerie").hide().load("../serveurs/galerie.php?d="+dir,function(){ $('#galerie a').lightBox(); $("#galerie").slideDown(); }); } function addalbum() { titre=prompt("Titre du nouvel album"); $.get("../serveurs/addalbum.php?t="+titre,function() { location.reload(); }); } function delAlb(n) { if (confirm("Confirmez la suppression de l'album")) { $.post("../serveurs/delalb.php?n="+n,function() { location.reload(); }); } } function gesphot(a) { location.href="gesphot.php?a="+a; } function closedetailsvisites() { $("#detailsvisites").hide(); } function listvisites() { id=<?php echo $id;?>; $("#visiteurs").load("../serveurs/listevisites.php",{id: id},function(){ $("#detailsvisites").show(); }) } </script>
Et :
<div id="sideleft"> <ul> <li><a href="#" onClick="addalbum();">Ajouter un album</a></li> <li><a href="photos.php">Retour</a></li> </ul> </div>
EDIT Ajout du LANGAGE dans les BALISES DE CODE
Voili voilou si une âme charitable a une idée sur ce que j’ai loupé, se serait super car je ne sais plus quoi faire.
A voir également:
- PHP et Sqlserv insert ligne dans une table
- Table ascii - Guide
- Table des matières word - Guide
- Partager photos en ligne - Guide
- Touche insert - Guide
- Mètre en ligne - Guide
6 réponses
Bonjour,
Avant tout ... tu es sûr que c'est du sqlserver ?
Ca ne serait pas plutôt du mysql ? ( car les variables nommées.. il me semblais que ça ne passait pas en sqlserver )
Et si sqlserver.. quelle version ?
Ensuite.. d'où vient ta variable $_SESSION["cnx"] ?
A quels fichiers correspondent chaque script que tu nous montres ??
Lequel correspond, par exemple, au fichier addalbum.php ?
Que contient ton fichier fonctions.php où se trouve, certainement la fonction activer()
Avant tout ... tu es sûr que c'est du sqlserver ?
Ca ne serait pas plutôt du mysql ? ( car les variables nommées.. il me semblais que ça ne passait pas en sqlserver )
Et si sqlserver.. quelle version ?
Ensuite.. d'où vient ta variable $_SESSION["cnx"] ?
A quels fichiers correspondent chaque script que tu nous montres ??
Lequel correspond, par exemple, au fichier addalbum.php ?
Que contient ton fichier fonctions.php où se trouve, certainement la fonction activer()
Je déplace donc ta question au bon endroit.
Par contre, je ne sais toujours pas d'où vient ta variable de session...
Je précise également qu'une requête INSERT ne se fait pas avec un SET ......
ça c'est pour un UPDATE ( même si mysql peut le comprendre.. c'est fortement déconseillé de l'utiliser).
Il faut utiliser la vraie syntaxe sql ...
Et vu que tu fais du PDO, il serait bien
1 - d'activer l'affichage des erreurs PDO
2 - De placer CHAQUE requête dans un bloc TRY/CATCH
3 - Afficher les erreurs PHP
Je t'invite à lire et à appliquer le contenu de ce lien :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite,
Tu nous dis
Hors.. ce script est appelé en AJAX
Déjà, il est préférable de faire du POST au lieu du GET (lorsque l'on fait de l'ajout, modification...)
Ensuite, ton "reload" ne te permet pas de voir les éventuelles erreurs.
Il serait bien, d'ailleurs, de le mettre en commentaire et de regarder dans la console de ton navigateur ce qui s'y passe.
(pour ça, je te conseille d'utiliser FireFox, dont la console est plus simple à utiliser pour débuguer de l'ajax ).
Tu peux éventuellement nous en mettre une capture écran ( pense bien à activer le debugage xhr )
Par contre, je ne sais toujours pas d'où vient ta variable de session...
Je précise également qu'une requête INSERT ne se fait pas avec un SET ......
ça c'est pour un UPDATE ( même si mysql peut le comprendre.. c'est fortement déconseillé de l'utiliser).
Il faut utiliser la vraie syntaxe sql ...
INSERT INTO matable ( champ1 , champ2 ...) VALUES ( "valeur1", "valeur2".. )
Et vu que tu fais du PDO, il serait bien
1 - d'activer l'affichage des erreurs PDO
2 - De placer CHAQUE requête dans un bloc TRY/CATCH
3 - Afficher les erreurs PHP
Je t'invite à lire et à appliquer le contenu de ce lien :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite,
Tu nous dis
le premier script c'est dans addalbum.php
Hors.. ce script est appelé en AJAX
$.get("../serveurs/addalbum.php?t="+titre,function() { location.reload(); });
Déjà, il est préférable de faire du POST au lieu du GET (lorsque l'on fait de l'ajout, modification...)
Ensuite, ton "reload" ne te permet pas de voir les éventuelles erreurs.
Il serait bien, d'ailleurs, de le mettre en commentaire et de regarder dans la console de ton navigateur ce qui s'y passe.
(pour ça, je te conseille d'utiliser FireFox, dont la console est plus simple à utiliser pour débuguer de l'ajax ).
Tu peux éventuellement nous en mettre une capture écran ( pense bien à activer le debugage xhr )
Merci beaucoup je vais voir tout ça, pour fonction.php il contient en ce qui concerne l'album :
j'ai rajouté un include dans le fichier addalbum.php mais sans résultat, je vais voir déjà tout ce que tu m'as dit.
//////////////////// pour album privé function loadpriv($originale,$pid,$albid,$tmax=500) { // $originale = $_FILES['photo']; // $idc = id user dans la table albums // $max = 500 par défaut pour les photos // albid = id de l'album dans la table albums, c'est en même temps le nom du sous dossier // de /images/perso/idc/albid // transformation en .jpg pour simplification $nomphoto=strtolower($originale['name']); $definitive="../images/perso/".$pid."/".$albid."/".$nomphoto; $destination = '../images/upload/'.$nomphoto; move_uploaded_file($originale['tmp_name'], $destination); $extension=strrchr($nomphoto,"."); // création image temporaire switch ($extension) { case ".jpg": case ".jpeg": $image=imagecreatefromjpeg($destination); break; case ".gif": $image=imagecreatefromgif($destination); break; case ".png": $image=imagecreatefrompng($destination); break; } $taille=getimagesize($destination); $largeur=$taille[0]; $hauteur=$taille[1]; if ($largeur < $hauteur) { $nlargeur=round(($largeur*$tmax)/$hauteur); $nhauteur=$tmax; } else { $nhauteur=round(($hauteur*$tmax)/$largeur); $nlargeur=$tmax; } $nouv=imagecreatetruecolor($nlargeur,$nhauteur); imagecopyresampled($nouv,$image,0,0,0,0,$nlargeur,$nhauteur,$largeur,$hauteur); // sauvegarde image jpeg dans emplacement definitif imagejpeg($nouv,$definitive,100); unlink($destination); } function sql2fr($dt) { $dx=explode("-",$dt); $dr=array_reverse($dx); $res=implode("/",$dr); return $res; } function sql3fr($dt) { $dy=explode(" ",$dt); $dx=$dy[0]; return sql2fr($dx); }
j'ai rajouté un include dans le fichier addalbum.php mais sans résultat, je vais voir déjà tout ce que tu m'as dit.
Non elle est sur gphotopriv.php qui appelle la fonction addalbum ()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
effectivement la fonction activer($id) se trouve dans fonction.php
function activer($id) { global $db; $sqlact="update users set connexion=addtime(now(),'0:10:0') where id=:id"; $rqact=$db->prepare($sqlact); $rqact->bindParam(":id",$id); $rqact->execute(); }
Tu ne l'avais pas mis lorsque tu nous as collé le code du fichier tout à l'heure.....
Mais ok.
Donc fais les corrections que je t'ai proposé et regarde la console de ton navigateur.
Reviens nous voir ensuite...
PS : Lorsque tu postes ton code, merci d'indiquer le langage dans les balises afin d'avoir la coloration syntaxique. Ca fait plusieurs fois que je corrige tes messages....
Pour plus d'infos, merci de lire entièrement ce qui est indiqué ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Mais ok.
Donc fais les corrections que je t'ai proposé et regarde la console de ton navigateur.
Reviens nous voir ensuite...
PS : Lorsque tu postes ton code, merci d'indiquer le langage dans les balises afin d'avoir la coloration syntaxique. Ca fait plusieurs fois que je corrige tes messages....
Pour plus d'infos, merci de lire entièrement ce qui est indiqué ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Bonjour,
finalement le problème est résolu et c'était tout simple.
n'avait rien à faire dans le fichier addalbum.php
Finalement c'est juste :
Il n'y avait aucune erreur détectée, je me suis focalisé sur :
finalement le problème est résolu et c'était tout simple.
autorisation=0";
n'avait rien à faire dans le fichier addalbum.php
Finalement c'est juste :
$sql="insert into albums set idc=:cnx, titre=:t"; $rq=$db->prepare($sql); $rq->bindParam(":cnx",$idc); $rq->bindParam(":t",$titre); $rq->execute(); $albid=$db-> lastInsertId();
Il n'y avait aucune erreur détectée, je me suis focalisé sur :
lastInsertId()où j'ai cru comprendre que ce n'était compatible que par Sql Serveur et pas ou plus sur Mysql, mais finalement c'est bon.
Ok Merci beaucoup , j'suis nouveau sur le site j’apprends sur le tas, jviens de voir pour le langage jvais voir pour les corrections, concernant la console elle ne semble pas détecter d'erreur mais bon j'vais lire tout ce que tu m'as indiqué et appliquer tout ce que tu m'as dit puis je reviendrais. A l'époque cette page fonctionné correctement c'est ça que je trouve bizarre.