probléme d'enregistrement vide dans ma base de données

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 juin 2011, 23:47

tu peux tester ton code la http://phpjungle.info/phpfrance/sidomed.php

je ne comprend pas ton soucis :/

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 80 Messages

24 juin 2011, 11:17

Donc au final vous avez tout les 2 le même code, l'un en ligne, qui fonctionne, (j'ai essayé l'upload, suppression, et reupload, et ça marche) et l'autre en local, qui fonctionne pas. Un souci de config d'upload pour ton local ? :?
En informatique, lorsqu'il y a un bug, le souci est toujours entre la chaise et le clavier.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

24 juin 2011, 20:13

je pense a ça ou une "mauvaise" recopie du code. :mrgreen:
Il en faut peu pour être heureux ......

Eléphant du PHP | 62 Messages

01 juil. 2011, 11:15

bonjour,
la mon site l'application fonctionne trés trés bien en local, mais une fois uploader via ftp dans mon éspace ovh, bah ça marche pas, il m'affiche bien l'interface, apparement aucune eurreur, mais l'upload ne marcfhe pas, alors je pensai que cété une eureur de connexion à la base, j'ai fait un script test, et la connxion a mabase de donnée se fait trés trsé bien, j'ai méme injecter des entregistrement àa ma table, mais l'upload ne se fait pas

voici l'arboressence ftp ou j'ai déposer mon réperoire "diapo" qui contien tout mes script

Code : Tout sélectionner

/tv/modules/mod_joomvideo/

pourriez vous m'aider???

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 juil. 2011, 11:51

on va en revenir aux basiques :
- différence de version de php ?
- différence de conf ?
- notamment est ce que l'error_repporting est à E_ALL | E_STRICT (popur debugger c'est essentiel).
- a tu testé le sript "pas a pas" ? pour cela place de echo après chaque if histoire de savoir ou le script "va" et pourvoir repérer ce qui cloche.
- si tu y a accès regarde les logs de php, s'il y a erreur c'est dedans

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 62 Messages

01 juil. 2011, 11:54

ou je puet trouver c'est log, dans l'éspace perso ovh ou dans le module joomla?
je t'avoue que je suis totalement perdue avec ce site,, car la je suis en stage et je reprend le travail d'un autre collégue,e te le site est entierement gerer avec jommla, c'est vraiment galére, et l'hebergement j'y connai rien, j'ai toujours fait des application web, et je me suis jamais occupé de la partie hebegemenent

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 juil. 2011, 12:03

le log seul ovh peux te le dire (en général c'est un fichier à la racine ou dans un répertoire de l'espace web alloué).

je pense que joomla doit bien avoir des composant pour faire ce que tu veux, l'avantage c'est ça sera intégré au reste.

si tu est en stage tu devrais avoir un "tuteur" qui devrais pouvoir t'aider un minimum ?

pour le fonctionnement au pire file le lien (en ligne) que je test. mais faut ajouter un ini_set('error_reporting',E_ALL|E_STRICT); en 1ere ligne du script !

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 62 Messages

01 juil. 2011, 12:07

tuteur que dalle oui, il s'est méme pas ce que c'est que le php, et c'est un site ou plusieur gens sont passé dessue, je peut te garantir que c'est le bordel
je te file le lien pour voir

http://www.tvamiens.com/modules/mod_joomvideo/test
tu trouvera le contenue de mes script

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 juil. 2011, 12:47

rapide, 1 test => Le fichier a pas �tait upload�e Pas d'erreur
ce message est créer ligne 78 (pour moi) il s'agit du else qui va avec le if(move_uploaded_file(....)) active le rapport d'erreur il y a fort a parier que tu ai un message d'erreur (move_uploaded_file ne retourne pas false sans raisons ;) )

première ligne de admin.php


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 62 Messages

01 juil. 2011, 13:37

mais en local ça marche j'ai pas de probléme au niveau du else

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 juil. 2011, 20:23

je sais bien moi non plus, sur ma platforme de dev win et sur mon site oueb nux avec des versions de php différente.

comme le dit la doc
Retourne TRUE en cas de succès.

Si filename n'est pas valide, rien ne se passe, et move_uploaded_file() retournera FALSE.

Si filename est un fichier téléchargé, mais que pour une raison quelconque, il ne peut être déplacé, rien ne se passe, et move_uploaded_file() retourne FALSE. De plus, une alerte sera affichée.
donc soit ton error_reporting n'est pas actif et on peux pa debuger soit y a un soucis dans le nom du fichier et pas de message d'erreur.
Pour avoir la réponse c'est simple, il faut afficher les deux noms de fichiers (temporaire et final et activer l'error_reporting)

tu peux eesayé d'ajouter un is_uploaded_file si tu veux, mais je ne pense pas que cela soit le cas.

pour test tu peux avoir ce code :
<?php
//include('params.inc.php');
$oldreporting = error_reporting(-1);
// si tu veux pas t'emmerder remplis justes les 4 lignes du tableaux inthenet avec tes identifiants, sinon faut que tu modifie les constante ne bas :)
$pdoconnect = array(
    'inthenet' => array (
        'host' => 'perso',
        'dbname'=> 'ca',
        'user' => 'aussi ',
        'mdp' => 'c perso'
    ),
    'local' => array(
        'host' => 'localhost',
        'dbname'=> 'test',
        'user' => 'root',
        'mdp' => 'yyRu2TKEvyYpzFLK'
        
    )
);

if (isset($_SERVER['SERVER_NAME']) && $_SERVER["SERVER_NAME"]=='phpjungle.info') {
    echo 'serveur_name vaut phpjungle.info';
    $emplacement = 'inthenet';
}
elseif($_SERVER["DOCUMENT_ROOT"] != 'H:/web/docRoot') {
    $emplacement = 'inthenet';
    echo 'le doc root est != du local ('.$_SERVER['DOCUMENT_ROOT'].')<br />';
}
else {
    $emplacement = 'local';
}

define('MYHOST',$pdoconnect[$emplacement]['host']);
define('MYUSER',$pdoconnect[$emplacement]['user']);
define('MYPASS',$pdoconnect[$emplacement]['mdp']);
define('MYDB',$pdoconnect[$emplacement]['dbname']);
function up_error($code,$nom) {
    $valid = false;
    switch ($code) {
        case '0' : $erreur = 'Pas d\'erreur';$valid = true;break;
        case '1' : $erreur = 'Votre fichier `'.$nom.'` dépasse la taille maximale d\'upload autorisée par PHP( '.get_cfg_var('upload_max_filesize').' )'; break;
        case '2' : $erreur = 'Votre fichier dépasse la taille maximale demandée par le Webmestre';break;
        case '3' : $erreur = 'Le fichier n\'a pas été totalement uploadé !!!';break;
        case '4' : $erreur = 'Aucun fichier téléchargé !!!';break;
        default : $erreur = 'L\'upload a rencontré une erreur inconnue !!!'; break;
    }
    $return[] = $valid;
    $return[] = $erreur;
    return $return;
}

$connect=mysql_connect(MYHOST,MYUSER,MYPASS) or die ('erreur de connexion');
mysql_select_db(MYDB) or die ('erreur de connexion à la base');
if(!empty($_FILES['img'])){
  var_dump($_FILES);
  require("imgClass.php");
  if ($_FILES['img']['error'] === 0) {
      if (is_uploaded_file($_FILES['img']['tmp_name'])) {
        $img = $_FILES['img'];
        $ext = strtolower(substr($img['name'],-3));
        $allow_ext = array("jpg",'png','gif');
        if(in_array($ext,$allow_ext)){
            //$finfo = finfo_open(FILEINFO_MIME_TYPE);
            //$finfo = new SplFileInfo($_FILES['img']['tmp_name']);
            /*
            $a = mime_content_type($_FILES['img']['tmp_name']);
            //$a = $finfo->getType();
            if (($a == 'image/gif') || ($a == 'image/png') || ($a == 'image/jpeg')) {
                */
                $sql = 'select count(id) as nb from images where lienimage=\''.  mysql_real_escape_string($_FILES['img']['name']).'\';';
                $r = @mysql_query($sql);
                if ($r === false ){
                    $erreur = 'Erreur SQL oust !<br />'. mysql_error().'<br />';
                }
                else {
                    $data = mysql_fetch_assoc($r);
                    mysql_free_result($r);
                    if ($data['nb'] == 0) {
                        if (move_uploaded_file($img['tmp_name'],"images/".$img['name'])) {
                            $nom_image = Img::creerMin("images/".$img['name'],"images/min",$img['name'],653,370);
                            if ($nom_image !== false){
                                $requeteinsert = 'INSERT INTO images(lienimage,url) VALUES(\''.$nom_image.'\',\''.mysql_real_escape_string($_POST['url']).'\')';
                                $result = mysql_query($requeteinsert,$connect);
                            }
                            else {
                                // impossible de redimensionner l'image parce que .....
                            }
                        }
                        else {
                            $x = up_error($_FILES['img']['error'], $_FILES['img']['name']);
                            $erreur = 'Le fichier a pas été uploadée '.$x[1];
                            $erreur .= '<br />Defaut du if ligne 72';
                        }
                    }
                    else {
                      $erreur = 'Le nom de fichier existe deja recommence XD';
                      }
                  }
                  /*
              }
              else {
                  echo 'fichier pa bon non plus ^^ '; // mauvaise type mime
              }
              */
        }
        else{
            echo 'type fichier pas bon<hr />';// le in_rray, vérification sur le type mime
        }
      }// ajout ou is_uploded_file
      else {
          // cen'est pas un fichier uploader
          $erreur = 'fichier non uploader :/ ('.htmlentities($_FILES['img']['tmp_name']).')<br />';
      }
  }// fin du if ($_FILES['img']['error'] === 0) {
  else {
      $x = up_error($_FILES['img']['error'], $_FILES['img']['name']);
      if ($x[0] === false){
          $erreur = '<p style="border:1px solid red; color:red;">Erreur lors de l\'upload : '.$x[1].'</p>';
      }
 }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr" dir="ltr">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="css/admin.css"  type="text/css" media="screen, projection" />
    </head>
    <body>
   <?php
if(isset($erreur)){
   echo $erreur;
}
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<fieldset>
<legend>Ajout d'une image</legend>
                <label for="image1">Image</label>
<input type="file"  name="img"/>
<input type="text" id="url" name="url" value="http://"/>
                <label for="image1">url du site web</label>
                <button type="submit">Uploader</button>
            </fieldset>
</form>
<table summary="Liste des images de la galerie">
<caption>Liste des images</caption>
<tr>
<th>Nom</th>
<th>site web</th>
<th>Supprimer</th>
</tr>
<?php
$dir = pathinfo(__FILE__,PATHINFO_DIRNAME);
         if(!empty($_GET['sup']) && is_numeric($_GET['sup'])){
            $requeteselect = 'SELECT lienimage FROM images WHERE id=\''.mysql_real_escape_string($_GET['sup']).'\'';
            $result = mysql_query($requeteselect, $connect);
             if (mysql_num_rows($result) === 1 ){
                $image_courante = mysql_fetch_array($result,MYSQL_ASSOC);
                if (unlink($dir.DIRECTORY_SEPARATOR.$image_courante['lienimage'])) {
                    //unlink('images/'.$image_courante['lienimage']);
                    mysql_free_result($result);
                    $requetesup = 'DELETE FROM images WHERE id=\''.mysql_real_escape_string($_GET['sup']).'\'';
                    $result = mysql_query($requetesup, $connect);
                }
            }
            else {
                // erreur soit zéro soit plus d'un tuples. 
                echo 'le fichier existe pas ;)<hr />';
            }
            
         }

         $requeteselect = 'SELECT id,lienimage,url FROM images';
         $result = mysql_query($requeteselect, $connect);
         while($image_courante = mysql_fetch_array($result,MYSQL_ASSOC)){
            echo '<tr>
                  <td>'.$image_courante['lienimage'].'</td>
                  <td>'.stripslashes($image_courante['url']).'</td>
                  <td><a href="?sup='.$image_courante['id'].'">Supprimer</a></td>
            </tr>';
         }
         mysql_free_result($result);
         mysql_close($connect);
         ?>
</table>
</body>
</html>
dit moi quand il c'est en ligne que je puisse regarder ;)

Pour info le bazrad avec les tableaux au début me permet de mettre le même code partout (normalement y a un fichier ini mais j'ai simplifié ;) )


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 62 Messages

04 juil. 2011, 10:13

bonjours,
j'ai bien testé votre code, il est bien en ligne, j'ai modifié le tableau "inthenet" avec mes edentifiant, et ça ne marche pas
il me repond avec ce message
le doc root est != du local (/home/www/www/)
erreur de connexion

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 juil. 2011, 12:32

hum tu a bien changer mon ndm (nom de domaine) par le tiens et le doc root local par le tiens (donc l'endroit où tu met ton code sur ton pc pour tester, si jamais tu le fait ;) )

if (isset($_SERVER['SERVER_NAME']) && $_SERVER["SERVER_NAME"]=='phpjungle.info') { <= la, le ndm
echo 'serveur_name vaut phpjungle.info';
$emplacement = 'inthenet';
}
elseif($_SERVER["DOCUMENT_ROOT"] != 'H:/web/docRoot') { <= et la le doc root de ton serveur sur ton pc a toi, au pire laisse le comme ça en ligne ça doit toujours fonctionner si le premier fonctionne pas ;)
$emplacement = 'inthenet';
echo 'le doc root est != du local ('.$_SERVER['DOCUMENT_ROOT'].')<br />';

tu peux virer ou mettre en commentaire les echo, c'était juste pour être sur de la où passé mon script (debug ;) ) lorsque j'ai testé le serveur embarqué par l'alpha de php5.4 ;) (donc totalement inutile pour toi la hein :) )

mais ceci dit, l'affichage que tu a eu confirme qu'au final le code prend bien les paramètres 'inthenet' ça devrait donc fonctionner :mrgreen:

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 62 Messages

04 juil. 2011, 13:27

ça ne marche toujours pas
tien j'ai méme fait un script pour tester si j'arrive bien à me connecter à ma base
<?php
$sql_db = "diapo";
if($id = mysql_connect("localhost", "root", "mon mot de passe"))//Si j'arrive à me connecter avec ses paramêtres
{ if($id_db = mysql_select_db($sql_db))//Puis à cette base de données
{ echo "Succès !";//Ça roule !
$requeteinsert ='INSERT INTO images(lienimage,url) VALUES('http://www.test.fr', 'coca')';
$result = mysql_query($requeteinsert,$id);
echo "réussis";
}else{
die("Echec");//Ou impossible de se connecter à la base :( (vous êtes connectez au serveur mais impossible //de sélectionner la base $sql_db)
}
mysql_close($id);
}else{
die("Echec complet");//Ou encore pire ! L'échec complet, c'est que vous n'êtes même pas arriver à vous connecter !
}

?> 

alors quand je met la requette d'insertion il ne marche pas, mais des que je met la requette d'insertion en commentaire, bah ça passe il se connecte en m'affichant succés

Mammouth du PHP | 672 Messages

04 juil. 2011, 13:57

1. mysql_query n'a pas besoin de second paramètre. Comme je ne suis jamais sûr de ce qu'il faut je ne le mets pas et je laisse php gérer :oops:
2. En cas de plantage, affiche la requête et l'erreur - tu peux comparer la requête avec celle générée via phpMyAdmin, et le message d'erreur peut être intéressant...
(Au passage, si tu as une clé dans ta table, il faut lui passer une valeur :roll: )
$requeteinsert ='INSERT INTO images(lienimage,url) VALUES('http://www.test.fr', 'coca')';
$result = mysql_query($requeteinsert) or die ("Erreur sur la requête $requeteinsert<br />Erreur :".mysql_error());