Impossible d'écrire dans ma base !

Résolu/Fermé
fareohh Messages postés 63 Date d'inscription samedi 9 septembre 2017 Statut Membre Dernière intervention 30 mars 2021 - Modifié le 2 mai 2018 à 12:06
fareohh Messages postés 63 Date d'inscription samedi 9 septembre 2017 Statut Membre Dernière intervention 30 mars 2021 - 3 mai 2018 à 14:20
Bonjour,

Depuis un petit moment je me suis mis en tête de refaire de A à Z mon site web osudl.re (upload de fichiers spécifique à osu)
et impossible d'inscrire quoi que ce soit dans la base de donnée !!

Voilà mon code si quelqu'un arrive à savoir ce qui ne vas pas, car toutes mes variables sont ok...

<?php
function sqlconnect(){
       $bdd = mysqli_connect ('web2.pulseheberg.net', 'wkmfc8_osudl', '123456789', 'wkmfc8_osudl');  
}
 $ip = $_SERVER['REMOTE_ADDR']; 
function random($car) {
 $string = "";
 $chaine = "1234567890ABCDEFGHIJKLMNOPRSTUVWXYZ";
 
 srand((double)microtime()*1000000);
 for($i=0; $i<$car; $i++) {
 $string .= $chaine[rand()%strlen($chaine)];
}
 return $string;
}
 $chaine = random(5);

if(!empty($_FILES)){
 $pseudo = $_POST['pseudo'];
 $fichier_name = $_FILES['fichier']['name'];
 $image_name = $_FILES['img']['name'];
        $fichier_type = $_FILES['fichier']['type'];
 $fichier_ext = strrchr($fichier_name, ".");
 $image_ext = strrchr($image_name, ".");
 $image_name = $_FILES['img']['name'];
 $fichier_tmp_name = $_FILES['fichier']['tmp_name'];
 $image_tmp_name = $_FILES['img']['tmp_name'];
 $ext_auth_osu = array('.osz', '.OSZ', '.osr', '.OSR', '.osk', '.OSK');
 $ext_auth_img = array('.jpg', '.JPG', '.png', '.PNG', '');
 $fichier_local = 'fichiers/'.$fichier_name;
 $image_tmp_name = $_FILES['img']['tmp_name'];
 $image_local = 'images/'.$image_name;
 $dwl = 'Télécharger votre fichier: <a href="http://news.osudl.re/fichers/'.$fichier_name.'">http://news.osudl.re/fichiers/'.$fichier_name.'</a>';
 $date = date("h.d.m.y");
 if ($ext_auth_osu == ".osz"){
    $type =  "Beatmap";}
 elseif ($ext_auth_osu == "osk"){
    $type = "Skin";}
 elseif ($ext_auth_osu == "osr"){
 $type = "Replay";}
 else{
    $type = ['Unknown'];}
 $infos = 'Nom de la map: '.$fichier_name.'<br /> Nom de l\'image: '.$image_name.'<br /> Pseudo: '.$pseudo.' <br /> ID: '.$chaine.' <br /> IP: '.$ip.' <br /> Type: '.$ext_auth_osu.'<br />';

 if((in_array($fichier_ext, $ext_auth_osu)) && in_array($image_ext, $ext_auth_img)){
  if((move_uploaded_file($fichier_tmp_name, $fichier_local))){
   echo
   $infos;
   setcookie('pseudo', $_POST['pseudo'], time() + 365*24*3600, null, null, false, true); 
   move_uploaded_file($image_tmp_name, $image_local);
   
   if($bdd = mysqli_connect('web2.pulseheberg.net', 'wkmfc8_osudl', '123456789', 'wkmfc8_osudl')){
   
   $req_pre = mysqli_prepare($bdd, 'INSERT INTO fichiers (id, name, type, img, pseudo, ip, date) VALUES (?, ?, ?, ?, ?, ?, ?)');
   mysqli_stmt_bind_param($req_pre, $chaine, $name, $type, $img, $pseudo, $ip, $date);
   mysqli_stmt_execute($req_pre);

   echo 'ok';
            }  
            else {
   echo 'Erreur';
   }
  }
      else { 
   echo 'Vous n\'avez pas sélectionné de fichiers.';
      }  
 }
         else {
      echo 'Votre fichier doit provenir de Osu! !';
         }

   
}
 
?>

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
2 mai 2018 à 12:10
Bonjour,

Tu as placé le code de connexion à la bdd dans une fonction.... mais tu n'y fais pas appel...

Je pense qu'il serait préférable de ne pas le mettre dans une fonction et de remplacer :
function sqlconnect(){
       $bdd = mysqli_connect ('web2.pulseheberg.net', 'wkmfc8_osudl', '123456789', 'wkmfc8_osudl');  
}

par :
$bdd = mysqli_connect ('web2.pulseheberg.net', 'wkmfc8_osudl', '123456789', 'wkmfc8_osudl');  
 if (mysqli_connect_errno()){
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
 }

0
fareohh Messages postés 63 Date d'inscription samedi 9 septembre 2017 Statut Membre Dernière intervention 30 mars 2021
2 mai 2018 à 12:19
Bonjour, j'ai essayé votre code, mais toujours pas..

	if((in_array($fichier_ext, $ext_auth_osu)) && in_array($image_ext, $ext_auth_img)){
if((move_uploaded_file($fichier_tmp_name, $fichier_local))){
echo
$infos;
setcookie('pseudo', $_POST['pseudo'], time() + 365*24*3600, null, null, false, true);
move_uploaded_file($image_tmp_name, $image_local);

$bdd = mysqli_connect('web2.pulseheberg.net', 'wkmfc8_osudl', '123456789', 'wkmfc8_osudl');

}
$req_pre = mysqli_prepare($bdd, 'INSERT INTO fichiers (id, name, type, img, pseudo, ip, date) VALUES (?, ?, ?, ?, ?, ?, ?)');
mysqli_stmt_bind_param($req_pre, $chaine, $name, $type, $img, $pseudo, $ip, $date);
mysqli_stmt_execute($req_pre);

if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
else {
echo 'Vous n\'avez pas sélectionné de fichiers.';
}
}
else {
echo 'Votre fichier doit provenir de Osu! !';
}


}


bien sur quand j'essaye d'envoyer mes fichiers, je n'ai aucune erreurs.. Ni celle de la connexion
0
fareohh Messages postés 63 Date d'inscription samedi 9 septembre 2017 Statut Membre Dernière intervention 30 mars 2021
Modifié le 2 mai 2018 à 12:21
Voilà ma table
https://image.noelshack.com/minis/2018/18/3/1525256489-1651145.png
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
2 mai 2018 à 12:28
if (mysqli_connect_errno()){
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

Est à utiliser pour les ERREURS DE CONNEXION... et donc à placer SOUS la ligne de code qui fait la connexion à la bdd....

Pour voir les erreurs de REQUETES, il faut utiliser :
printf("Erreur : %s.\n", mysqli_stmt_error($req_pre));
0
fareohh Messages postés 63 Date d'inscription samedi 9 septembre 2017 Statut Membre Dernière intervention 30 mars 2021
2 mai 2018 à 12:32
Ou pardon, bah du coup voilà l'erreur
Erreur : No data supplied for parameters in prepared statement.
Je vous avouerais que je ne sais pas comment résoudre cette erreur...
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
2 mai 2018 à 12:41
D'où viennent les variables qui tu lui envoies dans le BIND ?
$chaine, $name, $type, $img, $pseudo, $ip, $date

Que valent t'elles ?
Car visiblement le message d'erreur que ces variables ne contiennent pas de valeurs....
0
Utilisateur anonyme
2 mai 2018 à 15:13
Bonjour

Si j'en crois la doc, il manque un paramètre à ton appel à mysqli_stmt_bind_param.
https://www.php.net/manual/fr/mysqli-stmt.bind-param.php
Le deuxième paramètre est une chaîne qui indique les types des variables à utiliser pour la requête préparée, alors que toi tu mets directement les variables.
0
fareohh Messages postés 63 Date d'inscription samedi 9 septembre 2017 Statut Membre Dernière intervention 30 mars 2021
Modifié le 2 mai 2018 à 15:24
Ok donc je doit juste mettre 'sssd' dans stmt binf para?
0
Utilisateur anonyme
2 mai 2018 à 15:31
Il me semble que tu as 7 variables dans ta requête préparée, ta chaîne de types devrait avoir 7 caractères. C'est toi qui sais quels sont leurs types, pas moi.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > fareohh Messages postés 63 Date d'inscription samedi 9 septembre 2017 Statut Membre Dernière intervention 30 mars 2021
2 mai 2018 à 15:32
Comme indiqué dans la documentation :
'sssd' => correspond aux différents types de tes variables
s = string
d = un nombre

Donc, en fonction des TES VARIABLES, tu dois mettre le type correspondant (dans l'ordre de tes variables )
0
fareohh Messages postés 63 Date d'inscription samedi 9 septembre 2017 Statut Membre Dernière intervention 30 mars 2021
2 mai 2018 à 15:36
Comment ça ?
La variable
id: contiens 5 caractères alphanumérique
Name: du texte
Pseudo : du texte
Type: texte
Image: texte
Ip: texte
Date: date

Je doit mettre quoi du coup ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > fareohh Messages postés 63 Date d'inscription samedi 9 septembre 2017 Statut Membre Dernière intervention 30 mars 2021
2 mai 2018 à 15:38
Tu as lu la doc ??

Visiblement, tu as

id: contiens 5 caractères alphanumérique ===>>> Donc du text
Name: du texte
Pseudo : du texte
Type: texte
Image: texte
Ip: texte
Date: date => Du text je pense

Donc :

sssssss
0